Toute personne utilisant mercurial pour gérer un noyau Linux? C'est un peu long, mais je ne suis pas sûr s'il y a une réponse à cela. Je voulais donner quelques exemples de l'aideUtilisation de mercurial pour gérer le noyau Linux, les balises et l'ID hg
Voici ce que je vois:
dans le noyau linux, il y a une commande utilisée lors de la construction appelé scripts/setlocalversion. Dans ce script, il définit la version du noyau en fonction des informations du référentiel. Actuellement, il comprend git, mercurial et svn repo.
Pour git, il crée l'étiquette avec ce code:
if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,
# because this version is defined in the top level Makefile.
if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
# If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),
# we pretty print it.
if atag="`git describe 2>/dev/null`"; then
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
.....
Alors, voici un exemple que je l'ai fait pour comprendre comment cela fonctionne:
[1536][mcrowe:test]$ git tag -a -m"Creating a tag" KernelTest
[1537][mcrowe:test]$ git rev-parse --verify --short HEAD
d024e76
[1537][mcrowe:test]$ git describe --exact-match
KernelTest
[1537][mcrowe:test]$ git describe
KernelTest
Ainsi, dans cet exemple, local La version sera définie sur "KernelTest" lors de la construction du noyau.
Dans mercurial, cependant, le code pour obtenir la version locale est la suivante:
if hgid=`hg id 2>/dev/null`; then
tag=`printf '%s' "$hgid" | cut -d' ' -f2`
# Do we have an untagged version?
if [ -z "$tag" -o "$tag" = tip ]; then
id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
printf '%s%s' -hg "$id"
fi
....
Mon attente est que je pouvais marquer une version, et à cette étiquette soit ce que ce script utilise, comme cela arrive dans git . Cependant, il semble que « id hg » n'imprime l'étiquette comme ce script attend:
[1546][mcrowe:test2]$ hg tag -m"Creating a tag" KernelTest -r tip
[1548][mcrowe:test2]$ hg id
3ccda5e738ae+ tip
[1548][mcrowe:test2]$ hg tags
tip 115:3ccda5e738ae
KernelTest 114:be25df80ce76
donc cet acte de marquage modifie la révision si id hg ne sera jamais montrer ce que l'étiquette est.
Question de base: Autant que je sache, cela ne fonctionnera jamais pour le noyau linux. La question est de savoir comment cela devrait être implémenté dans l'arbre du noyau pour permettre hg tag
d'effectuer comme git tag
?
ajoute un commit supplémentaire par défaut, peut-être essayez-vous plutôt localtags? 'tag -l' – tonfa
J'aimerais pouvoir le faire, mais cela devient un serveur d'intégration continue. Besoin de tags globaux, malheureusement. –
Les tags commits sont une fonctionnalité et non un bug. :) Voir ma réponse ci-dessous pour quelque chose qui pourrait fonctionner pour vous. –