我们试图找到一种方法来查看pretxnchangegroup hook中mercurial存储库中一个或多个传入修订的整个变更集。我们使用版本1.6.3。
我们可以使用$ HG_NODE获得第一个传入的更改,但hg tip
仍然指向最早的,已提交的更改,而不是我们将要处理的更改。 hg log -rNode:
我们甚至无法在此钩子中获得$ HG_NODE的差异,hg log只是说“未知版本”
这似乎与http://groups.google.com/group/mercurial_general/browse_thread/thread/9321b94b08ab04b9
有关有没有人遇到同样的问题并以某种方式解决了它?
答案 0 :(得分:1)
绝对应该是tip
和log
都反映了抵达后的信息。您确定运行这些命令的目录是存储库的目录triggehg clone hooktest hooktest-clone
敲响了?我能看到不是这种情况的唯一方法就是你使用的hg -R
,你知道的。
这是一个你应该能够粘贴到(unix或cygwin)shell中的测试脚本:
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
当我粘贴时,我得到:
ry4an@hail [~/hg] % hg init hooktest
ry4an@hail [~/hg] % echo this >> hooktest/afile
ry4an@hail [~/hg] % echo -e '[hooks]\npretxnchangegroup = hg log && hg tip' >> hooktest/.hg/hgrc
ry4an@hail [~/hg] % hg -R hooktest commit -A -m 'initial commit'
adding afile
ry4an@hail [~/hg] % hg clone hooktest hooktest-clone
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ry4an@hail [~/hg] % echo more >> hooktest-clone/afile
ry4an@hail [~/hg] % hg -R hooktest-clone commit -m 'second commit'
ry4an@hail [~/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 <ry4an@msi.umn.edu>
date: Wed Nov 03 09:10:40 2010 -0500
summary: second commit
changeset: 0:30db2e527437
user: Ry4an Brase <ry4an@msi.umn.edu>
date: Wed Nov 03 09:10:39 2010 -0500
summary: initial commit
changeset: 1:ab2cec57f878
tag: tip
user: Ry4an Brase <ry4an@msi.umn.edu>
date: Wed Nov 03 09:10:40 2010 -0500
summary: second commit
ry4an@hail [~/hg] %
你可以看到'hg log'和'hg tip'都在钩子中显示新的变更集。
该测试是否适合您?