Я начал клонировать репозиторий SVN, используя операцию клонирования git-svn. Примерно через 6 часов импорта (это большое репо) мой компьютер пошел и спал на мне. Есть ли способ возобновить работу без повторения всей первоначальной работы?
Я начал клонировать репозиторий SVN, используя операцию клонирования git-svn. Примерно через 6 часов импорта (это большое репо) мой компьютер пошел и спал на мне. Есть ли способ возобновить работу без повторения всей первоначальной работы?
Ответы:
Команда 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
.
git svn clone
, прервав процесс. Выполнение git svn clone
снова появилось, чтобы возобновить клонирование в процессе. Кто-нибудь еще это сделал?
Я нашел сообщение в блоге, в котором был (надеюсь) правильный ответ.
По-видимому, запуск git svn fetch
эффективно завершает операцию клонирования. Надеюсь!
git svn rebase
после выборки, чтобы завершить операцию и получить основную ветку, отражающую ствол
Как сказали VonC, CaptainAwesomePants и Archi, все git svn fetch
делают свое дело. Я делал а, git svn clone url... --authors-file=path/to/file
и клон не удался, потому что одного из авторов не было в файле авторов. Я добавил автора в файл и запустил, git svn fetch
и он продолжил с того места, где он остановился, и, глядя на журнал git позже, кажется, что он использовал только что добавленного автора для замены имени автора коммита, так что все было мило.
По крайней мере, с git 2.1.0 вы можете продолжить, просто перевыпустив git svn clone
Однако это приведет к дублированию некоторых записей в вашем .git / config, удалите их, и все будет в порядке
From at least git 2.1.0...
Есть идеи, существовала ли эта функция в git 1.9.1?
git svn fetch
вызвало несоответствие контрольной суммы для меня - и было невозможно сбросить, потому что явно не было HEAD: / - но это работает нормально, просто нужно было удалить svn-remote.fetch
из.git/config
git svn clone
также должны быть предоставлены (если применимо)git svn fetch
. Например, я установил-r HEAD
дляgit svn clone
получить только пересмотр ГОЛОВА SVN. Для возобновления я побежалgit svn fetch
, начав импортировать все ревизии.