我正在编写一个脚本来自动更新我们的系统。基本上我想从远程hg存储库进行拉取和更新,然后运行一些更新脚本。现在问题是这些更新脚本需要一段时间才能运行,并且只有在配置发生变化时才需要运行它们。
现在我的脚本如下所示:
if hg pull -u
then
run scripts
fi
我想要的是像
if hg pull -u && 'some changes was introduces in my/configuration/directory/*'
then
run scripts
fi
知道怎么做吗?
答案 0 :(得分:1)
您可以使用hg status
获取修订版之间已更改的文件列表,例如tip
及其父级tip^
之间修改的文件{{1 }}:
my\configuration\directory
我建议hg status my\configuration\directory\** -m --rev "tip^:tip"
,检查这些文件是否已从当前revset pull
更改,然后在配置更改后运行脚本。对我来说,看起来比试图存储你开始使用的revset更容易,并在更新后弄明白。 (请注意,我对bash / grep不太好,所以这是近似的,未经测试):
update
答案 1 :(得分:1)
使用hg incoming
的模板化输出,您可以在拉动之前检查,哪些文件将在拉动时修改(如果有的话)并将采取相应的行动
hg incoming --template "{files % '{file}\n'}" | grep SOMESTRING
答案 2 :(得分:1)
您可以使用status命令获取已更改文件的列表 - 也可以在不同的修订版之间:
HERE=`hg log --template '{node}' -r.`
hg pull -u
if hg st --rev $HERE:. | grep -q .
then
run scripts
fi