Git pull hook脚本,在本地执行

时间:2012-06-26 12:53:45

标签: git

我想提示确认[是/否]每个命令git push和pull与git服务器联系。有没有办法包含任何命令/脚本来实现这一目标?所以用户可以给出输入,之后只有git继续进行该操作。

2 个答案:

答案 0 :(得分:2)

首先,我不认为你会与这个改变结交很多朋友。如果有人输入git pull,他已经证明他愿意联系远程服务器。在我看来,在这种情况下,没有必要用确认对话框来惹恼用户。

无论如何,如果您希望确认每个pullpush,则挂钩不是正确的工具,因为拉/推挂钩仅存在于服务器端。客户端没有pre-pullpost-pullpre-pushpost-push挂钩。所以,我们必须放弃这个钩子的想法。

您可以alias使用pullpush命令来查询它们是否真的应该拉/推。

查询很简单:

echo -n "really push? [y/n] "
read -s -n 1 really
if [[ $really == "y" ]]; then 
  # PULL/PUSH HERE
else 
  echo "aborting"
fi

Unfortunately,您不能对别名使用相同的名称。所以,简单的想法

[alias]
    push = "!echo -n \"really push? [y/n]\";read -s -n 1 really;if [[ $really == \"y\" ]];then git push; else echo \"aborting\"; fi"

不起作用。

但是你还有两个其他选择来实现你想要的目标:

  • 使用git bord表示并调用别名safepush / safepull或类似名称
  • .bashrc git pullgit push {{1}}中设置别名(请参阅SU上的this question以设置多字别名 功能

答案 1 :(得分:1)

我相信你正在寻找Git hooks

你必须自己把钩子放在那里。我认为你不能让用户将(客户端)钩子与其余代码一起拉出来。