不允许直接使用git pull

时间:2017-11-03 08:04:30

标签: git bash

在我们的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内。但是,这不会很优雅。

1 个答案:

答案 0 :(得分:1)

git hooks。只需将您的脚本定义为post-merge挂钩,它就会在git pullgit merge之后自动执行(有些变量可以帮助您区分这两者)。

Be aware though that git hooks are not part of the repository content,这意味着你不能只是在你的最后提供一个钩子,其他人也神奇地拥有它们。

解决方案是将钩子脚本提交到存储库,并要求每个开发人员在首次克隆存储库时激活它们。这可以通过例如完成。通过将它们复制或链接到.git/hooks目录

ln -s hooks/post-merge .git/hooks/

并且必须只进行一次。