Импорт / выкуп больших репозиториев в Subversion - PullRequest
5 голосов
/ 06 октября 2008

Мой обычный рабочий процесс по созданию нового репозитория с Subversion - создание новых репозиториев, проверка корня репозитория, создание тегов веток и папок стволов и размещение в стволе моих исходных файлов. Затем я делаю коммит этого «первоначального импорта», удаляю извлеченные репозитории с моего жесткого диска и делаю проверку ствола. Тогда я могу начать работать.

Однако, когда речь идет о крупном импорте, подумайте о сотнях мегабайт и о хостинге с контролем версий за пределами сайта (на основе http), чтобы этот первоначальный импорт мог занять много времени. Что еще хуже, после совершения сделки мне нужно снова и снова проверять этот массивный багажник.

Есть ли способ с использованием subversion использовать локальную копию транка без повторного извлечения данных, которые уже есть?

Ответы [ 5 ]

12 голосов
/ 06 октября 2008

Существует - это называется "импорт на месте", и он описан в FAQ по Subversion здесь:

http://subversion.tigris.org/faq.html#in-place-import

Что вы действительно делаете, так это создаете новый пустой проект в репозитории, проверяете пустой проект вашей локальной папки - который превращает вашу папку в рабочую копию - и затем добавляете все ваши (существующие) файлы в этот «пустой» 'проекта, поэтому они добавляются в хранилище при выполнении фиксации SVN.

3 голосов
/ 06 октября 2008

Я согласен с процедурой "импорта на месте", а также использую скрипт для TTB-структуры (оба проголосовали).

Просто небольшой намек:

Вы не должны импортировать огромное (десять тысяч) файлов в одном коммите, если вы используете http (s), поскольку время для отображения истории версий масштабируется по количество добавленных записей . Причиной такого поведения является то, что apache должен аутентифицировать все добавленные пути против файла svnaccess (конечно, только если вы включили авторизацию на основе пути). Это может сделать ваш репозиторий непригодным для использования, так как все файлы должны будут ждать в журнале SVN для этого большого оборота.

Вы должны разделить огромный импорт по уровням каталогов

1 голос
/ 06 октября 2008

svn checkout --force позволяет вам оформить рабочую копию «поверх» существующего пути. Он хранит ваши старые файлы и добавляет файлы, которые есть только в вашем хранилище.

Для создания вашего хранилища: Вы можете выполнить несколько команд mkdir для хранилища за один коммит, используя команду 'svnmucc', которая доступна в большинстве дистрибутивов Subversion (например, SlikSVN ).

Введите svnmucc без аргументов для некоторой помощи.

1 голос
/ 06 октября 2008

Я обычно использую "svn mkdir" для создания ствола / тегов / ветвей непосредственно на сервере сразу после создания хранилища. Затем я могу проверить пустой ствол, переместить мои исходные файлы в этот каталог, добавить и зафиксировать их и начать работать.

0 голосов
/ 06 октября 2008

Если вы извлекли одну папку, скопировали в нее свои файлы, запустите svn add и svn commit; Вам не нужно удалять файлы и повторно оформлять заказ.

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

...