【发布时间】:2012-07-24 17:30:00
【问题描述】:
GIT 新手尝试实施工作流。
我们的本地办公室设置使用与 Apache、Linux 等共享的 Debian Samba 磁盘。因此,我们从 w:/webs/site.com/site.git 类型的“本地路径”克隆项目,这是 BARE 存储库。
我们创建了一个 bash 脚本作为位于 w:/webs/site.com/site.git/hooks/post-receive 上的“接收后”挂钩,我们认为这是由“linux” git 在 `/home/samba/webs/site.com/hooks... 之类的地方执行,其中包含一个条件脚本,具体取决于提交给结帐的分支,类似于:
GIT_WORK_TREE=/home/samba/webs/site.com/html git checkout -f $BRANCH
问题是当我们从我们的 tortoiseGIT 本地副本推送到源分支时,钩子失败并显示:
远程:致命:无法切换到 'C:/Program Files (x86)/Git/home/samba/webs/site.com/html':没有这样的文件或 目录到 w:/webs/site.com/site.git
我们理解的意思是客户端 GIT 正在执行 WORK_TREE 或整个钩子脚本。
问题是我们计划打开 SSH 和其他对存储库的访问,所以如果我们使用 Windows 本地路径,当我们从非 Windows 本地网络客户端推送时,这些路径会失败。替代方案可能是通过 SSH 提取存储库,即使在本地也是如此,但我们认为这相当低效,并且仅在这个钩子问题上需要。
我们可以使用任何可以与两者兼容的建议和/或 GIT 变量?谢谢。
【问题讨论】:
-
windows 客户端由于钩子的性质而无法执行钩子。这是一个 bash 脚本。 Windows 中没有这样的解释器
-
客户端通过 GIT 解释器执行 bash,所以这真的不是问题。解决方案是使用 git repos 本身的相对路径。请在下面回答。
-
不知道。谢谢