2010-06-29 17 views
5

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

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

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

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

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

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

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

UPDATE

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

+0

Посмотрите на Git. У этого есть мост к Subversion, чтобы позволить вам совершить локально, а затем переместить все коммиты обратно в SVN. Я не отправляю это как ответ, так как это означает немного кривую обучения, которую вы не сможете сделать, прежде чем покинуть город. –

ответ

2

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

Доступ к нему с файлом: /// протокол во время вашего отсутствия, а затем верните его на сервер при возврате. , ,

+0

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

+0

Я предлагал вам взять все с собой ... то есть каталог на сервере, содержащий каталоги conf, db, hooks и т. Д. - просто скопируйте этот каталог с сервера на свой ноутбук. Получите доступ к нему как «файл проверки svn: /// c:/svn/repos». Когда вы вернетесь, удалите каталог репозитория на сервере и скопируйте локальную копию с ноутбука. –

+0

... вроде как самодельная распределенная система управления источником SVN. :) –

0

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

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

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

+0

Я бы даже пошел дальше и использовал такие инструменты, как hgsvn или git-svn, которые могут автоматически копировать локальную историю в подрывную. – Rudi

1

Чтобы извлечь набор изменений (Nn в мм) из хранилища:

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

Непродуманный подход состоял бы в том, чтобы просто проверить все, что вам нужно, работать, работать, работать, наслаждаться своим окружением, встречаться с новыми людьми, работать еще, а затем, когда вы вернетесь, совершить. Неделя может показаться долгое время без совершения, но когда я уезжаю, особенно в те сайты, которые не являются интернет-сайтами, я, как правило, не делаю НИКОГДА столько работы, как я предполагал.

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