2010-11-03 4 views
1

Nous essayons de trouver un moyen de voir le changement complet d'une ou de plusieurs révisions entrantes dans un dépôt mercurial à l'intérieur du hook pretxnchangegroup. Nous utilisons la version 1.6.3.Le hook pretxnchangegroup ne peut pas voir l'intégralité du changeset

Nous pouvons obtenir le premier changement entrant avec $ HG_NODE, mais hg tip pointe toujours vers le changement le plus ancien, engagé, et non vers celui que nous sommes sur le point de virer. La même chose pour hg log -rNode:

Nous ne pouvons même pas l'air pour obtenir le diff de HG_NODE $ dans ce crochet, hg log dit juste « révision inconnue »

Il semble que cela est lié à http://groups.google.com/group/mercurial_general/browse_thread/thread/9321b94b08ab04b9

Quelqu'un at-il eu le même problème et résolu en quelque sorte?

+0

Je vais aller chercher une réponse ci-dessous Je pense que votre terminologie est un peu éteinte. Vous essayez de "voir l'ensemble du groupe de changements" qui est composé de nombreux changements. $ HG_NODE pointe vers un changeset. –

Répondre

1

Il devrait certainement être le cas que les deux tip et log reflètent les informations après l'arrivée. Etes-vous sûr que le répertoire dans lequel vous exécutez ces commandes est celui du référentiel triggehg clone hooktest hooktest-clone le crochet? La seule façon de voir que ce n'était pas le cas était de savoir si vous utilisiez hg -R, ce que vous savez.

Voici un script de test, vous devriez être capable de coller dans une coquille (unix ou Cygwin):

hg init hooktest 
echo this >> hooktest/afile 
echo -e '[hooks]\npretxnchangegroup = hg log && hg tip' >> hooktest/.hg/hgrc 
hg -R hooktest commit -A -m 'initial commit' 
hg clone hooktest hooktest-clone 
echo more >> hooktest-clone/afile 
hg -R hooktest-clone commit -m 'second commit' 
hg -R hooktest-clone push 

Lorsque je colle que je reçois:

[email protected] [~/hg] % hg init hooktest 
[email protected] [~/hg] %  echo this >> hooktest/afile 
[email protected] [~/hg] %  echo -e '[hooks]\npretxnchangegroup = hg log && hg tip' >> hooktest/.hg/hgrc 
[email protected] [~/hg] %  hg -R hooktest commit -A -m 'initial commit' 
adding afile 
[email protected] [~/hg] %  hg clone hooktest hooktest-clone 
updating working directory 
1 files updated, 0 files merged, 0 files removed, 0 files unresolved 
[email protected] [~/hg] %  echo more >> hooktest-clone/afile 
[email protected] [~/hg] %  hg -R hooktest-clone commit -m 'second commit' 
[email protected] [~/hg] %  hg -R hooktest-clone push 
pushing to /home/msi/ry4an/hg/hooktest 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 1 changes to 1 files 
changeset: 1:ab2cec57f878 
tag:   tip 
user:  Ry4an Brase <[email protected]> 
date:  Wed Nov 03 09:10:40 2010 -0500 
summary:  second commit 

changeset: 0:30db2e527437 
user:  Ry4an Brase <[email protected]> 
date:  Wed Nov 03 09:10:39 2010 -0500 
summary:  initial commit 

changeset: 1:ab2cec57f878 
tag:   tip 
user:  Ry4an Brase <[email protected]> 
date:  Wed Nov 03 09:10:40 2010 -0500 
summary:  second commit 

[email protected] [~/hg] % 

où vous pouvez voir que les deux 'hg log' et 'hg tip' montrent le nouveau changeset dans le hook.

Est-ce que ce test fonctionne pour vous?

+0

Il s'avère qu'il doit faire quelque chose avec quel chemin le repo est cloné. Cela semble fonctionner si je clone ssh: // someserver // some/absolute/path mais ssh: // someserver /// some/absolute/path ne le fait pas. Pour une raison quelconque, nous avons pensé que nous avions besoin de coupures d'arbres. – zedoo

+0

Oh, et btw, je suis très vague là-dessus, ça semble vraiment étrange ... – zedoo

+0

Oui, trois barres seraient fausses, mais j'aurais aussi pensé inoffensif. Est-ce que cela fonctionne pour vous entièrement maintenant? Si ce n'est pas spécifiquement ce qui ne fonctionne pas? –