Я начал клонировать репозиторий 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, начав импортировать все ревизии.