2015-10-09 35 views
2

设置:Git服务器挂钩 - 它们是在客户端/克隆机器上本地执行的吗?

我有Windows机器上的主repo和另一台windows机器上的克隆。 在我的更新钩子里,我添加了ipconfig来打印IP地址。 我期待看到主人的IP地址,但它实际上会打印出克隆的IP地址。

这让我觉得,服务器端git的钩(预接收,更新和后接收)实际上是下载到本地是做实际的推客户端/克隆机上运行。

如果这是正确的,那么如果对钩子应该如何写入有很多限制。例如用perl编写的钩子需要所有的客户端拥有perl才能在本地执行这个钩子。

有人可以确认这是否是行为?

回答

1

有超级用户一个帖子里面谈到When I run a Git hook in a repo on a network share which binaries are used

“如果这是一个普通(SMB/CIFS)网络共享,它是在客户端执行

如果通过SSH使用git或HTTPS, Git(可能是另一种实现方式)在远程端运行并执行钩子

更简化:如果你有一个设置为远程的文件路径,它将在本地执行,即使它实际上是SSHFS或其他东西,否则它是远程执行“。

1

它们在服务器上运行。否则编写脚本将非常不方便(它们必须在所有操作系统上运行)。

你说

我的Windows机器上的主回购和另一台Windows计算机上的克隆。在我的更新挂钩中,我添加了ipconfig来打印IP地址。我期待看到主人的IP地址,但它实际上打印出克隆的IP地址。

请您详细说明一下。当你有这个IP地址时你做了什么?你是如何使用这两个存储库的?

编辑:A reference

1

看起来我们可以找到原因。 我曾使用file://协议创建一个克隆。当我的同事尝试使用SSH时,服务器IP按预期打印出来。

相关问题