如何使用Mercurial自动更新`__version__`?

2 投票
1 回答
510 浏览
提问于 2025-04-17 02:20

可能重复的问题:
如何在PHP页面上显示hg仓库的当前工作副本版本

类似于如何用git重写python的__version__?,有什么好的方法可以在python文件中存储一个自动更新的版本号呢?

我用Mercurial钩子将版本号嵌入应用程序的方法好不好?以及Mercurial关键字计划都表明,使用svn风格的方法自动更新$Revision$$Id$并不是一个好主意,应该由构建系统来完成这个工作。不过这是python,没有构建系统,而且这个程序完全在一个文件中,所以没有打包的需求。

1 个回答

2

无论你用什么编程语言写程序,都可以添加一个构建系统。你可能会说“但是语言X不需要构建系统”,但这个问题就说明了它其实是需要的:它需要处理一些在发布之前必须完成的重复性工作。这些工作包括生成文档、运行测试,以及把结果上传到某个地方。

一个简单的Makefile或者一个shell脚本就足够了:

all: version

version:
    hg id > __version__

test: version
    @echo -n "running tests... "
    @sleep 1
    @echo " done."

doc: version
    @echo -n "building documentation... "
    @sleep 1
    @echo "done."

upload: test doc
    @echo -n "creating tarball... "
    @sleep 1
    @echo "done."
    @echo -n "publishing on website... "
    @sleep 1
    @echo "done."

.PHONY: version test upload doc

撰写回答