J'utilise git comme frontend à Subversion (via git svn).
Donc, pour chaque tronc/branche svn, j'ai une branche distante dans git nommée "remotes/xxx". Par exemple, "télécommandes/coffre", "télécommandes/co-fonction".
Maintenant, je veux avoir une branche locale "par défaut" pour chaque branche distante, pour l'utiliser pour dcommit. Le problème est que je veux que ces branches soient nommées d'après les branches Subversion, comme "trunk", "coolfeature", donc j'ai les branches suivantes dans git:
trunk
coolfeature
remotes/trunk
remotes/coolfeature
Le problème est que chaque fois que je fais référence à "trunk" ou "coolfeature", git se plaint que le nom de la branche est ambigu. Ce n'est pas grave, mais je me sens mal à l'aise.
La question est de savoir comment gérer cet avertissement, en supposant que simplement renommer des branches n'est pas ce que je veux faire. Quelles sont les meilleures pratiques pour de tels cas?
Si vous passez le --prefix=svn/
drapeau vers le git svn clone
, toutes les branches Subversion seront nommées comme remotes/svn/branchname
. Si cela vous convient, cela corrige l'avertissement "refname is ambiguous". Cela vous donne également une belle façon de faire référence aux branches svn distantes, comme par exemple si vous voulez créer une branche de suivi locale, ce serait quelque chose comme:
$ git checkout -b branchname svn/branchname
La branche locale a alors le même nom que la branche svn distante, et aucun problème de nom de référence ambigu.
Si vous voulez simplement vous débarrasser de l'avertissement, définissez core.warnAmbiguousRefs
à false
:
git config --global core.warnambiguousrefs false
Si vous souhaitez ce comportement uniquement pour un référentiel unique, omettez --global
drapeau.
Il peut être possible que vous ayez un autre "tronc" et "co-fonctionnalité" comme étiquette. Dans ce cas, git ne sait pas si vous faites référence à une branche ou à une balise. Renommez les balises et vérifiez si git ne signale pas le nom "ambigu"
Pour éviter les messages de conflit, lorsque vous faites référence à des branches locales, préfixez-les avec heads/
par exemple, la branche en conflit topic
$ git diff topic remotes/topic
warning: reframe 'topic' is ambiguous.
...
devient
$ git diff heads/topic remotes/topic
...