Копировать только определенные версии SVN из одного репозитория в другой

Я запускаю сервер SVN на сервере Linux. Я уезжаю на неделю за город куда-нибудь без доступа в Интернет и, следовательно, без доступа к SVN.

Итак, я пытаюсь понять, как сделать снимок репозитория со мной на моем ноутбуке, а затем объединить новые версии обратно в существующий репозиторий, когда я вернусь ...

  • Мой ноутбук работает под управлением Windows 7, поэтому, во-первых, я думаю, что VisualSVN Server, вероятно, будет тем сервером, который я буду запускать локально. .

  • Я должен иметь возможность сбросить свой текущий репозиторий, а затем загрузить его в новый репозиторий на моем ноутбуке.

  • Но в чем я не уверен, так это когда я вернусь из другого города. У меня будут все эти новые версии на сервере SVN на моем ноутбуке. Как мне сделать дамп, а затем загрузить только эти новые версии в репозиторий на моем Linux-сервере?

  • Если я использую >svnadmin dump --revision 50:75 (предполагая, что версии с 50 по 75 представляют новые версии, которые я сделал на моем ноутбуке), могу ли я просто загрузить этот файл дампа в свой существующий репозиторий на моем сервере Linux? Это так просто? Я знаю, что есть некоторые вещи в отношении UUID репозитория, которые могут вызвать некоторые проблемы ...

  • Еще одно замечание: на данный момент я единственный разработчик, который вносит свой вклад в этот репозиторий SVN. Таким образом, слияние кода не потребуется.

ОБНОВЛЕНИЕ

Я не знал, что могу получить доступ к репозиторию локально, просто используя file:///. Так что это, вероятно, будет работать лучше, чем запускать VisualSVN Server. Однако остается главный вопрос: как мне перенести новые версии из одного репозитория в другой?


person Jake Wilson    schedule 29.06.2010    source источник
comment
Загляните в Git. У него есть мост к Subversion, чтобы вы могли делать локальные коммиты, а затем отправлять все коммиты обратно в SVN. Я не публикую это как ответ, поскольку это означает, что вам придется немного потренироваться в обучении, прежде чем вы уедете за город.   -  person Agent_9191    schedule 29.06.2010


Ответы (4)


Если вы единственный разработчик, возможно, вы могли бы просто взять репозиторий с собой.

Получите доступ к нему по протоколу file: ///, пока вас нет, а затем верните его на сервер, когда вернетесь. . .

person William Leara    schedule 29.06.2010
comment
Я собирался взять его с собой. Но как мне скопировать только новые ревизии из репозитория на ноутбуке обратно на исходный svn-сервер? Или вы предлагаете удалить существующий сервер SVN и выгрузить / загрузить весь репозиторий с моего ноутбука в новый на моем сервере? - person Jake Wilson; 29.06.2010
comment
Я предлагал вам взять все это с собой ... то есть каталог на сервере, содержащий каталоги conf, db, hooks и т. Д. - просто скопируйте этот каталог с сервера на свой ноутбук. Получите доступ к нему как к svn checkout file: /// c: / svn / repos. Когда вы вернетесь, удалите каталог репозитория на сервере и скопируйте локальную копию с портативного компьютера. - person William Leara; 29.06.2010
comment
... что-то вроде самодельной распределенной системы управления исходным кодом SVN. :) - person William Leara; 29.06.2010

Чтобы извлечь набор ревизий (от nn до mm) из репозитория:

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn

Параметр --incremental позволяет объединить этот набор изменений без переноса всей базовой линии вместе с импортом.

Чтобы применить эти изменения к репозиторию:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn

Параметр --ignore-uuid позволяет импорту удалять информацию uuid из исходного репозитория.

Я бы ограничил эту операцию репозиториями с общим наследием ревизий, иначе загрузка, вероятно, не удалась бы.

person Amardeep AC9MF    schedule 29.06.2010

Я бы рекомендовал создать локальный репозиторий git или mercurial прямо поверх вашей локальной рабочей копии.

Вы можете добавить папки .svn и артефакты в файлы .hgignore или .gitignore, чтобы репозиторий был чистым, а затем, когда вы вернетесь, вы можете просто выполнить svn-фиксацию изменений или, если хотите, сделать поэтапная фиксация возврата к subversion для каждой важной единицы работы, которую вы отметили в mercurial / git, пока вы были в дороге.

Оба этих репозитория действительно упрощают хранение вашей собственной локальной рабочей копии в системе контроля версий и упрощают синхронизацию с определенными точками регистрации в истории.

person John Weldon    schedule 29.06.2010
comment
Я бы даже пошел дальше и использовал такие инструменты, как hgsvn или git-svn, которые могут автоматически копировать локальную историю в Subversion. - person Rudi; 29.06.2010

Несложный подход заключался бы в том, чтобы просто проверить все, что вам нужно, немного поработать, немного поиграть, еще немного поработать, насладиться своим окружением, познакомиться с новыми людьми, еще немного поработать, а затем, когда вы вернетесь, зафиксировать. Неделя может показаться долгим сроком без обязательств, но когда я в отъезде, особенно в тех местах, где нет интернета, я, как правило, не выполняю почти столько работы, сколько планировал.

WinZip может помочь, если вам нужно время от времени делать снимки для сохранения игры.

person Chris Thornton    schedule 30.06.2010