предупреждение: refname 'xxx' неоднозначно при использовании git-svn

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

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

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

trunk
coolfeature
remotes/trunk
remotes/coolfeature

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

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

Ответ 1

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

$ git checkout -b branchname svn/branchname

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

Ответ 2

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

git config --global core.warnambiguousrefs false

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

Ответ 3

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

Ответ 4

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

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

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

становится

$ git diff heads/topic remotes/topic
...