Відновлення клона git-svn


117

Я почав клонувати SVN-сховище за допомогою операції клонування git-svn. Приблизно через 6 годин імпорту (це велика репо) мій комп'ютер пішов і спав на мені. Чи є спосіб відновити роботу, не повторюючи всі початкові роботи?

Відповіді:


156

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.


1
Я думаю, що деякі параметри командного рядка, що надаються, git svn cloneтакож повинні бути надані (у відповідних випадках) git svn fetch. Наприклад, я встановив -r HEADдля git svn cloneотримати тільки перегляд ГОЛОВА SVN. Щоб відновити роботу, я git svn fetchпочав імпортувати всі версії.
amolbk

Все почалося з першої редакції .... У мене 10 000 комісій! Будь-які думки про те, як відновитись з того місця, де він зупинився?
Nathan JB

@ NathanJ.Brauer не на моїй голові. Ви можете задати нове запитання (з ОС, використовуваною версією git та версією svn та посиланням на цю відповідь для контексту)
VonC,

1
Я випадково вбив моє мережеве з'єднання під час git svn clone, перервавши процес. Біг git svn cloneзнову з'явився, щоб відновити клонування в процесі. Хтось ще робив це?
Келан Крумме

1
@Kehlan Мабуть, якщо ви вважаєте відповідь zan-xhipe нижче
VonC

17

Я знайшов допис у блозі, який забезпечив правильну відповідь (надіюсь).

Мабуть, біг git svn fetchефективно завершує операцію з клонуванням. Ось сподівання!


7
вам доведеться використовувати git svn rebaseпісля завершення операції і мати головну гілку, що відображає стовбур
Ромуальд Брунет

Чи можете ви надати посилання на допис у блозі для подальшої довідки?
jmanning2k

6

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


5

Щонайменше з git 2.1.0 ви можете відновити, просто перевидавши git svn clone

Однак це повторить деякі записи у вашому .git / config, видаліть їх, і все буде добре


From at least git 2.1.0...Будь-яка ідея, чи існувала ця функція на git 1.9.1?
CivFan

Вибачте, у мене більше немає сховищ svn, щоб спробувати це.
zan-xhipe

git svn fetchспричинив невідповідність контрольної суми для мене - і її неможливо було скинути, оскільки, очевидно, не було HEAD: / - але це працює добре, просто довелося видалити svn-remote.fetchз.git/config
OLL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.