我们过去常常通过 SVN 使我们的 Nagios 配置保持最新,用户提交他们的更改并且脚本每 15 分钟运行一次。脚本检查更新,然后检查这些更新解析配置检查,然后重新加载配置。漂亮而简单,完美地完成了工作。
我们最近迁移到 GIT 作为其他项目更广泛迁移到 GIT 的一部分,我很难重新编写这个脚本来匹配。
这是原始的 SVN 版本:
cd /usr/local/nagios
RESULT=`svn update | grep Updated | wc -l`
echo $RESULT
if [ "$RESULT" != "0" ]; then
/etc/init.d/nagios reload
fi
cd -
这是我迄今为止对 GIT 所做的最大努力:
cd /usr/local/nagios
RESULT=`git pull 2>&1 | grep Unpacking | wc -l`
echo $RESULT
if [ "$RESULT" != "0" ]; then
/etc/init.d/nagios reload
fi
cd -
我遇到的问题是我似乎无法使输出可解析,因此我无法对其进行匹配。我想通过检查本地工作副本中的最新提交来走一条不同的路线,然后检查远程最近的提交是否不同。我不知道如何获取此信息。
我是 GIT 的新手,这让我发疯,所以我非常感谢您提供的任何帮助!
您可以检查本地分支的提示(又名 HEAD)在拉动前后是否发生变化。
您可以使用
post-merge
挂钩,只有在客户端有合并并且没有冲突时才会触发。的内容
post-merge
:将文件复制到
.git/hooks
客户端,不要忘记chmod u+x post-merge
如果想知道fetch是否有新变化,可以对比以下命令的输出:
如果哈希值不同,则需要更改:
使用 显示的校验和
git log
。例如: