【发布时间】:2011-11-11 23:45:55
【问题描述】:
每次将更新发送到我们的远程存储库时,我正在执行一个程序来提醒 CruiseControl。为此,我正在使用 Git 更新后挂钩。
如果我能找出哪个分支已经提交,那就太好了,这样我就可以用它来通知 CruiseControl 要构建哪个分支。有没有办法在更新后挂钩中访问分支名称?
【问题讨论】:
标签: git shell cruisecontrol githooks
每次将更新发送到我们的远程存储库时,我正在执行一个程序来提醒 CruiseControl。为此,我正在使用 Git 更新后挂钩。
如果我能找出哪个分支已经提交,那就太好了,这样我就可以用它来通知 CruiseControl 要构建哪个分支。有没有办法在更新后挂钩中访问分支名称?
【问题讨论】:
标签: git shell cruisecontrol githooks
更新后挂钩的第一个参数是完整的分支引用 - 例如,我看到 'refs/heads/master' 用于推送到 'origin master'。因此,仅打印修改的分支的示例挂钩脚本是:
#!/bin/sh
branch=$(git rev-parse --symbolic --abbrev-ref $1)
echo Update pushed to branch $branch
exec git update-server-info
为了说明,当将上述内容放入远程存储库挂钩/更新后文件时,执行推送时会打印以下内容:
% git push origin master
Counting objects: 5, done
Writing objects: 100% (3/3), 247 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
remote: Update pushed to branch master
To /tmp/xx/a
e02d9cd..ab14a08 master -> master
以 'remote:' 开头的新行是我们的钩子脚本输出的。
【讨论】: