我目前在我的mercurial项目中有一个pre-commit
钩子,它允许用户根据需要更新项目的版本号(例如1.0
到1.0.1
或{{ 1}}或1.1
)。他们选择其中一个选项,钩子在提交之前更新项目文件中的一个版本号。
当我运行2.0
时,此挂钩会运行并使用新版本号更新相关文件,然后执行提交。
我想添加钩子,以便它也调用hg commit
。
但是,我无法将其添加到hg tag <new_verson_number>
挂钩,因为在调用提交之前,标记将被添加,导致标记为过时的一个修订版本
我想将pre-commit
命令添加到hg tag
挂钩(在提交后运行),以便事件序列如下:
commit
hg commit -m "my commit message"
。现在,我可以添加一个提交挂钩,从其存储的文件中读取新版本号并运行hg tag <new_version_number>
,但如果用户决定不更改版本该怎么办?数?在这种情况下,我不想要添加标签,如果我盲目地运行hg tag <new_version_number>
,我最终会得到我不想要的标签。
所以 - 有什么方法我可以告诉hg tag <new_version_number>
钩子留下pre-commit
钩子的一些信息(是否添加标签的是/否)和{{1} } hook可以用它来确定是否添加标签吗?
欢呼声。
答案 0 :(得分:2)
commit
挂钩如何检查上一次提交是否修改了存储版本的文件?类似的东西:
[hooks]
commit.tagversion = if hg log -r $HG_NODE --template '{files}' | grep -q VERSION_FILE ; then hg tag $(hg cat -r $HG_NODE VERSION_FILE) ; fi
我还没有对它进行过测试,但是它应该可以使用它。
答案 1 :(得分:1)
您可以提取要添加的标记名称,然后在添加之前检查hg tags
中是否已存在该标记名称。这也会遇到开发人员手动修改版本号的情况。