Клонирование большого хранилища svn из sourceforge с помощью «git svn clone» - PullRequest
1 голос
/ 31 января 2020

Я пытаюсь клонировать большой репозиторий subversion из sourceforge, используя git svn clone. Процесс клонирования периодически застревает: SF просто прекращает отправку данных. В конце концов, это истекает, но это занимает навсегда . После этого это цикл:

  • Выполнить git svn fetch
  • Подождите, пока не истечет время ожидания
  • Повторите при необходимости

Глядя на справочную страницу git svn, не представляется очевидным способ установить время ожидания для операций ввода-вывода.

Есть ли способ сделать этот процесс более эффективным?

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Позвольте мне дать вам несколько советов по ускорению. Я только что закончил управлять ими, так что я уверен, что они работают. Основная хитрость заключается в том, чтобы скопировать репозиторий Subversion в локальную файловую систему, а затем запустить git svn.

. Сначала SourceForge позволяет создавать резервные копии репозиториев с помощью rsync (см. Последнюю команду в дно). Итак, начните с

rsync -ahPv svn.code.sf.net::p/vice-emu/code vice-emu.svn

В общем случае, когда доступ rsync недоступен, вы можете использовать svnrdump, чтобы выгрузить хранилище:

svnrdump dump --non-interactive https://svn.code.sf.net/p/vice-emu/code > vice-emu.svndump

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

svnadmin create vice-emu.svn
svnadmin load vice-emu.svn < vice-emu.svndump

В любом случае вы можете использовать git svn в локальном репозитории:

git svn clone file://`pwd`/vice-emu.svn vice-emu

И, наконец, еще один прием: выгрузить импорт в Github .

Мои результаты: https://github.com/phdru/vice-emu-ghi (Github Importer) и https://github.com/phdru/vice-emu-gitsvn (rsync + git svn + постобработка).

PS. Если вы хотите получить один или оба моих результата, пожалуйста, пропустите меня позже, и я удалю свои временные репозитории. Иначе я скоро уберу.

0 голосов
/ 31 января 2020

Вы можете возобновить процесс с той ревизии, в которой вы видели, что он мог нормально тянуть (или, скажем, за 100 ревизий до этого) с -r

git svn fetch -r some-revision:HEAD

Таким образом, вы не перезапускаете царапина.

...