warning: refname 'xxx' is ambiguous when using git-svn

Я использую git в качестве внешнего интерфейса для Subversion (через git svn).

Итак, для каждого svn trunk/branch у меня есть удаленная ветка в git с именем "remotes/xxx". Например, "пульты / транк", "пульты / фуфайка".

Теперь я хочу иметь одну локальную ветку "по умолчанию" для каждой удаленной ветви, чтобы использовать ее для dcommit. Проблема в том, что я хочу, чтобы такие ветки были названы в честь веток Subversion, например "trunk", "coolfeature", поэтому у меня есть следующие ветки в git:

trunk
coolfeature
remotes/trunk
remotes/coolfeature

Проблема в том, что каждый раз, когда я ссылаюсь на "trunk" или "coolfeature", git жалуется, что имя ветки неоднозначно. Ничего страшного, но мне неудобно.

Вопрос в том, как я могу справиться с этим предупреждением, если предположить, что просто переименовать ветки - это не то, что я хочу сделать. Каковы лучшие практики для таких случаев?

4 ответа

Решение

Если вы передадите --prefix=svn/ флаг к git svn clone команда, тогда все ветви Subversion будут названы как remotes/svn/branchname, Если это приемлемо для вас, это исправляет предупреждение "refname is Двусмысленное". Это также дает вам хороший способ обращения к удаленным ветвям SVN, например, если вы хотите создать локальную ветвь отслеживания, это будет что-то вроде:

$ git checkout -b branchname svn/branchname

В этом случае локальная ветвь имеет то же имя, что и удаленная ветвь svn, и не вызывает двусмысленной проблемы с refname

Если вы просто хотите избавиться от предупреждения, установите core.warnAmbiguousRefs в false:

git config --global core.warnambiguousrefs false

Если вы хотите это поведение только для одного хранилища, опустите --global флаг.

Вполне возможно, что у вас есть еще один "багажник" и "coolfeature" в качестве тега. В этом случае git не знает, ссылаетесь ли вы на ветку или тег. Переименуйте теги и проверьте, что git не сообщает "неоднозначное" имя

Чтобы избежать конфликтов сообщений, при обращении к локальным веткам ставьте перед ними префикс head/

например, конфликтующая ветка topic

$ git diff topic remotes/topic
warning: reframe 'topic' is ambiguous.
...

становится

$ git diff heads/topic remotes/topic
...
Другие вопросы по тегам