2008-10-05 3 views
5

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

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

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

ответ

12

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

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

То, что вы действительно делаете, создает новый пустой проект в хранилище , проверяя пустой проект вашей локальной папкой, которая превращает вашу папку в рабочую копию, а затем добавляет все ваши (существующие) файлы в этот «пустой» проект, поэтому они добавляются в репозиторий, когда вы выполняете svn commit.

0

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

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

1

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

+0

Лично я не люблю это делать, потому что он создает кучу ненужных изменений в моем репозитории. Я предпочитаю проверить корневой каталог, создать структуру, в которой я нуждаюсь, и сделать одно коммандос новой структуры. – Luke 2008-10-06 01:21:32

+0

Luke: Возможно, ваш репозиторий управления версиями в конечном итоге будет содержать в основном «ненужные ревизии», поэтому я не уверен, как один дополнительный фиксатор изменит ситуацию. (Вы можете сразу создать все три каталога с помощью «svn mkdir dir1 dir2 dir3 -m whatever») – 2008-10-06 18:48:16

3

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

Просто небольшая подсказка:

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

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

1

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

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

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