Git svn show-ignore дает ошибку "команда возвратила ошибку: 1"
Я пытаюсь перенести проект из SVN на git. Это команда, которую я использую:
$ git svn clone http://oursvnserver/ --no-metadata -A ../authors-transform.txt --trunk=path/to/trunk --branches=path/to/branches --tags=path/to/tags . --username=mysvnusername --prefix=origin/
Текущий каталог - это каталог, в котором я хочу стать репозиторием. authors-transform.txt
определенно находится в правильном месте. Проект использует стандартный макет, но он не существует в корне репозитория. (К сожалению, кто-то давно начал практиковать просто набивание всех проектов в один и тот же репозиторий. Поэтому я указываю --trunk
, --branches
и --tags
.) Кажется, это хорошо. Затем я пытаюсь создать файл игнорирования и получить эту невероятно загадочную ошибку:
$ git svn show-ignore
config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1
Кажется, в этом процессе выполняется какая-то другая команда, поэтому я сделал несколько догадок:
$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn || echo $?
1
$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn$ || echo $?
1
Так что, может быть, я догадываюсь о том, какую команду он вызывает? Но это действительно не помогает.
Что означает эта ошибка? Что я могу попытаться разрешить?
Использование msysgit 1.9.4.
Ответы
Ответ 1
Таким образом, это вызвано тем, что git не может найти соответствующую запись fetch
в разделе svn-remote
файла $GIT_DIR/config
. Без аргумента git svn show-ignore
он не знает, что искать в этом разделе. (Может быть, мое отслеживание не настроено правильно?)
Чтобы справиться с этим, вам нужно сначала указать, на каком удалении вы хотите посмотреть:
git svn show-ignore --id=origin/trunk
(Обратите внимание, что я задал префикс "происхождение" при выполнении клона. Обозначьте свою команду соответственно.)
Во-вторых, это все еще не удалось с очень похожей ошибкой для моих ветвей. Он отлично работал для ствола, но не для веток. Это связано с тем, что для ветвей не было fetch
. Чтобы добавить их, используйте эту команду (с настройками для префикса):
git config --add svn-remote.svn.fetch path/to/branches/branchname:refs/remotes/origin/branchname
Чтобы просмотреть все записи fetch
и убедитесь, что они сработали:
git config --get-all svn-remote.svn.fetch
Я не уверен, почему только начало для trunk устанавливается в начале; возможно, я сделал что-то не так с клоном.