如何比较默认分支和发布分支mercurial

时间:2016-02-11 14:16:48

标签: mercurial comparison configuration-files

最近,我们在开发人员在另一个分支上工作时无法提交默认分支更改的情况很少。这特别适用于配置文件,其中许多设置正在控制应用程序。我们使用的不仅仅是比较文件,但是有大量的配置,很难对所有配置进行快速比较。我正在寻找可以进行比较的内容,并且可以在一个分支中进行更改并错过或从其他分支中删除。

任何举行将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

如果要确保默认分支中的配置文件始终与开发人员在任何ohter分支中提交的配置文件相同,我建议您使用服务器上的挂钩强制执行此策略,以验证此任务如果配置文件不同,则已完成并拒绝更改集。这是一个相对容易的任务,只要你可以依赖默认分支只有一个头(虽然可能是一个坏主意)。但是,在bash中,服务器存储库的pretxnchangegroup挂钩看起来类似于:

hg_heads=`hg log -r"$HG_NODE:tip and head() and not branch('default")" --template='{node}\n'`
for hg_head in $hg_heads; do
  if [ "$(hg diff -r"head() and branch('default')" -r$hg_head CONFIGFILENAME)" != "" ]; then
    echo "Config files differ. Please make sure default has the same config file as your other heads!"
    exit 1
  fi
done
exit 0

它会拒绝所有新提交的头具有与默认分支头不同的CONFIGFILENAME的提交

关于检查当前的存储库,也可以通过类似的bash脚本来检查每个头的差异:

defaulthead=$(hg log -r"head() and branch('default')")
for head in $(hg log -r"head() and not branch('default')"); do
  if [ "$(hg diff -r$head -r$defaulthead)" != "" ]; then
    echo "Different config file for $head"
  fi
done