在我们的Git存储库中,在将文件从origin提取到本地之后,运行另一个执行某些同步的脚本绝对是至关重要的。 然而,由于程序员(包括我)很容易忘记甚至是关键的事情,我想我最好写一个小小的bash脚本:
git pull origin master
# do our synchronizing stuff
然而,这仍然无法解决问题:任何开发人员仍然可以在不使用脚本的情况下执行git pull
。所以,我想到的是:设置Git存储库,以便只允许使用特殊参数。如果特殊参数不存在,它将返回自定义消息。像这样:
git pull origin master -special-parameter
# do our synchronizing stuff
在没有git pull origin master
的情况下执行-special-parameter
将以git pull not allowed directly. Please use our special script.
结尾
这可能吗?
我想到的唯一解决方案是更改用户权限,撤消存储库的所有权限,仅授予special_script_user
完整权限并将git pull
包裹在su -c
内。但是,这不会很优雅。
答案 0 :(得分:1)
有git hooks。只需将您的脚本定义为post-merge
挂钩,它就会在git pull
或git merge
之后自动执行(有些变量可以帮助您区分这两者)。
Be aware though that git hooks are not part of the repository content,这意味着你不能只是在你的最后提供一个钩子,其他人也神奇地拥有它们。
解决方案是将钩子脚本提交到存储库,并要求每个开发人员在首次克隆存储库时激活它们。这可以通过例如完成。通过将它们复制或链接到.git/hooks
目录
ln -s hooks/post-merge .git/hooks/
并且必须只进行一次。