2011-01-10 12 views
48

Estoy usando git como frontend para Subversion (a través de git svn).Git: advertencia: refname 'xxx' es ambiguo cuando uso git-svn

Por lo tanto, para cada svn trunk/branch tengo una bifurcación remota en git llamada "remotes/xxx". Por ejemplo, "remotes/trunk", "remotes/coolfeature".

Ahora quiero tener una rama local "predeterminada" para cada rama remota, para usarla para dcommit. El problema es que yo quiero esas ramas para llevar el nombre de ramas de Subversion, como "tronco", "coolfeature", por lo que tienen las siguientes ramas en git:

trunk 
coolfeature 
remotes/trunk 
remotes/coolfeature 

El problema es que cada vez me refiero a "tronco "o" coolfeature "git se queja de que el nombre de la sucursal es ambiguo. No es gran cosa, pero me siento incómodo.

La pregunta es, ¿cómo puedo lidiar con esa advertencia, suponiendo que el cambio de nombre de las sucursales no es lo que quiero hacer. ¿Cuáles son las mejores prácticas para tales casos?

+3

no estoy seguro. Evité esto simplemente eligiendo nombres diferentes pero similares. Sin embargo, podrías intentar usar 'refs/heads/trunk' o quizás solo' heads/trunk'. Creo que debería funcionar – MatrixFrog

Respuesta

40

Si pasa la bandera --prefix=svn/ al comando git svn clone, todas las ramas de Subversion se llamarán como remotes/svn/branchname. Si esto es aceptable para usted, corrige la advertencia "refname is ambiguous". También le da una buena manera de referirse a las ramas svn a distancia, como en, por ejemplo, si desea crear una rama de seguimiento local, que sería algo así como:

$ git checkout -b branchname svn/branchname

La rama local, entonces tiene el mismo nombre como la rama svn remota, y ningún problema ambiguo de renombrado.

+19

¿Cómo puedo arreglar un repositorio que ya he clonado para tener '--prefix = svn /'? –

+0

acabo clonado en un nuevo directorio y luego fui a buscar las ramas locales que tenía desde el otro directorio: git fetch ../other_dir branch_name: --- branch_name del tabulador es ideal para los nombres de rama también. – EnigmaCurry

+1

Si ya ha creado una rama con el mismo nombre, puede cambiar el nombre de su rama con este comando: git branch -m [currentName] [newName] – MikeD

13

Si lo que desea es deshacerse de advertencia, establezca core.warnAmbiguousRefs a false:

git config --global core.warnambiguousrefs false 

Si desea que este comportamiento sólo para el único repositorio, omiten --global bandera.

+0

probablemente violado todas las reglas conocidas como desconocidas/aquí, pero he intentado "git tag CABEZA -a -m 'Comienzo del repo'" en una nueva operación, después de lo cual he recibido el mensaje de error PO. La corrección que se describe en esta publicación me permitió seguir trabajando. – bakoyaro

1

Es posible que tenga otro 'trunk' y 'coolfeature' como una etiqueta. En este caso, git no sabe si se refiere a una rama o etiqueta. Cambiar el nombre de las etiquetas y comprobar si git no informa "ambigua" nombre

+0

Este no es el caso para mí. '.git/refs /' contiene nombres inequívocos. No tengo ninguna etiqueta ¿Qué está causando que git se queje en primer lugar? –

0

Para evitar los mensajes de conflicto, cuando se refiere a las sucursales locales, con el prefijo head/

por ejemplo, la rama en conflicto topic

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

convierte

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