Копировать только определенные версии SVN из одного хранилища в другое - PullRequest
5 голосов
/ 29 июня 2010

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

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

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

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

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

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

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

ОБНОВЛЕНИЕ

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

Ответы [ 4 ]

2 голосов
/ 29 июня 2010

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

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

1 голос
/ 29 июня 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 из исходного хранилища.

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

0 голосов
/ 30 июня 2010

Несложный подход будет состоять в том, чтобы просто оформить все, что вам нужно, поработать немного, поиграть немного, поработать еще немного, насладиться окружающей обстановкой, познакомиться с новыми людьми, поработать еще немного, а затем, когда вы вернетесь, совершите,Неделя может показаться долгим временем без обязательств, но когда я ухожу, особенно в тех местах, где нет интернета, я склонен выполнять НЕ РАБОТУ столько, сколько я планировал.

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

0 голосов
/ 29 июня 2010

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

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

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

...