Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用程序在mercurial存储库中访问自己的版本_Python_Mercurial - Fatal编程技术网

Python 应用程序在mercurial存储库中访问自己的版本

Python 应用程序在mercurial存储库中访问自己的版本,python,mercurial,Python,Mercurial,我有一个应用程序要从mercurial打印出来(在“关于”框中)。假设它是修订版deadbeef,那么它将知道这一点。在旧时代,CVS中可以使用类似于$Revision$的东西来自动替换 Mercurial在这方面的最佳实践是什么?您可以使用它来获取Mercurial中的当前版本: hg id -i 最好的方法可能是使用precommit hook将指定的文件替换为hg log-r tip的输出,也可能使用--templatearg以特定的方式格式化 不幸的是,这里有一点鸡和蛋的问题。修订是提

我有一个应用程序要从mercurial打印出来(在“关于”框中)。假设它是修订版
deadbeef
,那么它将知道这一点。在旧时代,CVS中可以使用类似于
$Revision$
的东西来自动替换


Mercurial在这方面的最佳实践是什么?

您可以使用它来获取Mercurial中的当前版本:

hg id -i

最好的方法可能是使用precommit hook将指定的文件替换为
hg log-r tip
的输出,也可能使用
--template
arg以特定的方式格式化


不幸的是,这里有一点鸡和蛋的问题。修订是提交数据的校验和,但校验和在提交发生后才可用。一个选项可能是实际钩住提交而不是预提交,并在单独的变更集中提交版本信息

Mercurial's可能是您想要的。它几乎完全支持
$Revision$
格式。

这个“关于”框到底在哪里?在应用程序的GUI中?@Matt:假设是的,或者web应用程序,或者只是命令行程序中的打印输出,这有关系吗?所以,由于鸡蛋问题,你说,我实际上不能使用预提交钩子?这取决于你到底想在文件中放什么。如果您想要实际版本id,则否,在预提交时不知道正在进行的变更集的id。您必须使用提交钩子,然后进行第二次提交。我通过将(C++)代码设置为#包含一个被Mercurial忽略的文件,解决了鸡/蛋问题。构建的预编译步骤生成文件(我使用了
hgid
,但原理是一样的)。。。因为Mercurial忽略了它,所以它不会影响变更集。只是一个想法。