Вы можете установить post-commit
ловушку, которая обновляет файл:
[hooks]
post-commit = sed -i lib/foo/version.rb \
-e "s|\$Date.*\$|\$Date: $(date)\$|" \
-e "s|\$Version.*\$|\$Version: $(hg id -i)\$|"
Затем вам, вероятно, следует добавить файл версии в файл .hgignore
- он будет меняться после каждой фиксации и, следовательно, всегда будет грязным. Вы также можете добавить фильтр кодирования, который очистит файл версии:
[encode]
lib/foo/version.rb = sed -e "s|\$Date.*\$|\$Date\$|" \
-e "s|\$Version.*\$|\$Version\$|"
Этот скрипт заставит Mercurial считать файл чистым - независимо от того, какая дата и набор изменений содержит его, Mercurial увидит, что он содержит нераскрытые ключевые слова $Date$
и $Version$
:
$ hg commit -m test
$ hg tip
changeset: 7:df81c9ddc9ad
tag: tip
user: Martin Geisler
date: Wed Apr 06 14:39:26 2011 +0200
summary: test
$ hg status
$ hg cat version.py
date = "$Date$"
version = "$Version$"
$ cat version.py
date = "$Date: Wed Apr 6 14:39:26 CEST 2011$"
version = "$Version: df81c9ddc9ad$"