#git #svn #git-svn
#git #svn #git-svn
Вопрос:
Я пытаюсь клонировать репозиторий svn с помощью git, но я получаю сбой авторизации на этапе выборки. В настоящее время я только пытаюсь получить основную часть проекта:
$ git svn clone svn://some/repo --trunk=svn://some/repo/trunk/project/ --username afoglia .
Initialized empty Git repository in /home/afoglia/projects/new_repo/trunk.git/project/.git/
Using higher level of URL: svn://some/repo/trunk/project => svn://some/repo
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/project'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
Authorization failed: Authorization failed at /home/afoglia/.local/stow/git-1.7.7/libexec/git-core/git-svn line 3099
Я пробовал извлекать только самые последние версии, и это приводит к сбою с тем же сообщением.
git успешно обращается к репозиторию на первом шаге; я вижу, что счетчик ревизий увеличивается по мере приближения к первой ревизии с этим каталогом. Поэтому я не знаю, почему произошел сбой. Обратите внимание, что макет представляет собой несколько проектов в одном магистральном каталоге, и у меня есть разрешения только на чтение этого проекта и ниже.
Я незнаком с Perl, но строка 3099 — это исключение, если не указано другое сообщение, а строки «Ошибка авторизации» нигде нет в скрипте.
Кроме того, мне пришлось установить git под своей учетной записью, а также скомпилировать и установить svn, так что это может быть результатом отсутствия библиотеки perl. (Но я успешно клонировал незащищенный репозиторий svn, так что это не что-то очевидное.)
Ответ №1:
Во-первых, --trunk
принимает subdir, а не абсолютный URL. Далее, вы должны предоставить --parent
, чтобы получить только большую часть изменений. Попробуйте этот способ
git svn clone --username afoglia --parent svn://some/repo --trunk=trunk/project/ project-git
Если это не сработает, попробуйте этот способ
git svn clone --username afoglia --parent svn://some/repo/trunk/project/ project-git
Комментарии:
1. git svn clone не нравится опция «—parent».
Unknown option: parent
. Итак, я попытался выполнитьgit svn init
(который работает), а затемgit svn fetch --parent
. Это завершается ошибкойfatal: ambiguous argument 'HEAD':...
, что имеет смысл, потому что, когда ничего не извлекается, у git нет HEAD, из которого можно получить родительский элемент. Кроме того, я сначала попробовал trunk с помощью subdir trunk / project. Разницы не было. Я переключился на полный URL-адрес (который, как явно указано на справочной странице, поддерживается) в маловероятном случае, если причиной был двухуровневый субдир магистрали.2. извините, попробуйте
git clone -r HEAD
вместоgit clone --parent