Git Hook:如何判断标记的提交是否已合并为master

时间:2016-01-08 10:52:06

标签: git git-post-receive

我试图编写git hooks以在推送时部署Web应用程序。

我从原产地克隆了一份裸露的回购并写了一个预先接收的钩子来执行某些规则 其中一条规则是,只应部署带注释的标签,并且所有更改必须已合并为主文件。

为了执行第二条规则,我尝试使用post-receive和

myTransaction

以查看master是否在列表中。

当我在原点上这样做时,我得到了

  git branch --contains <tag_name>

但是当我在部署服务器上的裸仓库中运行相同的命令时,我只得到

  master
* testbranch

我是否遗漏了某些内容,或者这种方法是不是只用于裸机库?

如果是这种情况,是否还有其他方法可以验证标记的提交是否已合并到母版中?

1 个答案:

答案 0 :(得分:0)

首先,执行git show <tag_name>并复制该提交的哈希值。

然后,只需grep git log获取该哈希值:

git log master | grep <hash>

如果未返回任何输出,则哈希尚未合并到主分支。否则,哈希将从grep输出,表明它已被合并。

在一个命令中完成所有操作:

git log master | grep "`git show <tag_name> | grep commit`"