Как использовать git-svn с репозиторием SVN, который уже находится на диске?

Я хотел бы работать с удаленным репозиторием SVN, используя git-svn. Я пытался загрузить его с помощью git svn clone -s REPO_URL, но из-за того, что у меня плохое сетевое соединение, а репозиторий довольно большой, время ожидания истекло.

Поэтому вместо этого я планирую проверить весь репозиторий с помощью клиента SVN, а затем заставить git-svn работать с ним постфактум. Но возможно ли это? git svn clone -s позаботится обо всех этих вещах (например, установка удаленного URL-адреса, импорт истории, идентификация удаленных ветвей и т. д.), но, поскольку я загружаю репо другим способом, я не знаю, какие команды мне нужно будет выполнить, чтобы установить это вверх.


person XåpplI'-I0llwlg'I -    schedule 17.01.2013    source источник


Ответы (2)


Ах, похоже, что клиент SVN не нужен. Прерванный git svn clone можно возобновить с помощью git svn fetch, как подробно описано здесь. :)

Или, если вам не нужно получать всю историю репозитория, вы можете ускорить загрузку, выполнив вместо этого git svn clone -s -rN:HEAD repo_url local_dir, который будет клонировать репозиторий только с определенного номера версии (N) до последней фиксации (HEAD). Это значительно уменьшает объем данных, которые необходимо загрузить с сервера SVN.

Таким образом, решается проблема работы с большими репозиториями. Но просто чтобы ответить на мой вопрос о том, как заставить git-svn работать с репозиторием, загруженным на диск, вы можете клонировать его с помощью протокола file://. Пример: git svn clone file:///path/to/repo/.

person XåpplI'-I0llwlg'I -    schedule 17.01.2013

Магия, которую выполняет git-svn, заключается в загрузке репозитория Subversion для каждой ревизии, что означает, что вы получаете полную историю репозитория на своем локальном компьютере, как если бы вы использовали обычный репозиторий Git. Он также извлекает целую кучу метаданных о каждом коммите, таких как номер ревизии и текст журнала коммитов.

Если бы вы просто загружали репозиторий Subversion, используя wget (или, что более очевидно, svn export), у вас не было бы всей этой информации и не было бы хорошего способа ее получить.

Если вам не нужна полная история в вашем локальном репозитории, вы можете просто клонировать самые последние версии. Запустите git svn init вместо git svn clone (укажите те же аргументы макета, например -s). Затем запустите git svn fetch -r HEAD. Это загрузит только последнюю версию удаленного репозитория Subversion и построит вашу историю поверх нее.

person me_and    schedule 17.01.2013