Возобновление клона git-svn - PullRequest
111 голосов
/ 20 апреля 2010

Я начал клонировать SVN-репозиторий, используя операцию клона git-svn. Приблизительно после 6 часов импорта (это большой репозиторий) мой компьютер пошел и уснул на мне. Есть ли способ возобновить операцию без повторного выполнения всей начальной работы?

Ответы [ 4 ]

146 голосов
/ 20 апреля 2010

Команда git svn fetch для возобновления git svn clone подтверждается несколькими источниками:

(Между прочим, если во время начального шага клона ваше соединение разрывается или вам необходимо остановить его, то для возобновления клона вам просто нужно выполнить указанную выше команду, чтобы возобновить загрузку истории).

Кажется, в git-svn произошла утечка памяти. Размер процесса git-svn медленно увеличивался, и примерно через две недели он достиг резидентного размера в 1,2 ГБ, после чего ОС отказалась позволить ему работать.
Дело в том, что это было замаскированное благословение.
Я смог возобновить прерванный клон простым "git svn fetch", и он стал работать намного быстрее с теперь значительно меньшим количеством кучи.
Это сработало настолько хорошо, что я привык прерывать и перезапускать процесс каждый вечер и каждое утро. Через несколько дней это было сделано.

Вы начинаете свои приключения с git-svn, клонируя существующее хранилище Subversion:

git svn clone url://path/to/repo -s

Флаг -s предполагает, что в вашем хранилище используется соглашение «ствол, ветви, теги». Если нет, вы должны указать вручную, какие каталоги представляют ветви и теги, если вы хотите, чтобы Git знал о них.

Это займет много времени, так как он будет извлекать каждую ревизию из SVN и фиксировать ее локально. Если по какой-либо причине он останавливается, вы можете продолжить с git svn fetch.

15 голосов
/ 20 апреля 2010

Я нашел пост в блоге , который предоставил (я надеюсь) правильный ответ.

Очевидно, что выполнение git svn fetch эффективно завершает операцию клонирования. Вот надеемся!

5 голосов
/ 28 ноября 2012

Как сказали VonC, CaptainAwesomePants и Archi git svn fetch добились цели. Я делал git svn clone url... --authors-file=path/to/file, и клон не удался, потому что одного из авторов не было в файле авторов. Я добавил автора в файл и запустил git svn fetch, и он продолжил с того места, где остановился, и, просматривая журнал git позже, кажется, что он использовал вновь добавленного автора для замены имени автора коммита, так что все было мило.

4 голосов
/ 11 сентября 2014

По крайней мере, с git 2.1.0 вы можете продолжить, просто переиздав git svn clone

Однако это приведет к дублированию некоторых записей в вашем .git / config, удалит их, и все будет хорошо

...