2

在提交到存储库时,我在 Mercurial 中定义了一个钩子:

[hooks]
precommit.exportDB=exportDB.bat

这会从我的数据库中创建/更新一个 SQL 转储,它应该包含在提交中。但是:虽然这可行,但 Sql 被标记为新的,但不是现在提交的变更集的一部分。我怎样才能自动包含它,以便它进入一组更改的文件?

希望这是有道理的...

谢谢莱因哈德

4

1 回答 1

6

这听起来很疯狂,但你可以分两步完成。首先将你的precommit钩子改为一个pre-commit钩子——是的,两者都存在并且它们是不同的。没有破折号,提交已经开始并且已经获得了一些锁。使用破折号,它发生在提交开始之前,您仍然可以hg add使用新文件。

在像这样的 Unix 上,总的变化是:

[hooks]
pre-commit.exportDB=exportDB.sh && hg add resulting.sql

大概在 Windows 上有类似的东西,或者你可以制作hg add批处理文件的最后一行。

PS 不要提交生成的文件。:)

更新:

我刚刚对此进行了测试,它按照我的建议工作:

ry4an@four:~$ hg init reinhard
ry4an@four:~$ cd reinhard/
ry4an@four:~/reinhard$ vi .hg/hgrc
ry4an@four:~/reinhard$ cat .hg/hgrc 
[hooks]
pre-commit = hg add otherfile
ry4an@four:~/reinhard$ echo text > afile
ry4an@four:~/reinhard$ echo more > otherfile
ry4an@four:~/reinhard$ hg add afile
ry4an@four:~/reinhard$ hg status
A afile
? otherfile
ry4an@four:~/reinhard$ hg commit -m 'message'
ry4an@four:~/reinhard$ hg status --all
C afile
C otherfile

请注意,在提交之前,只添加了“afile”,而“otherfile”是未知的,在提交之后,两个文件都是“C”(意思是“干净”——它们已被添加并提交)。

于 2012-07-30T02:28:40.620 回答