1

尝试实现工作流的 GIT 新手。

我们的本地办公室设置使用与 Apache、Linux 等共享的 Debian Samba 磁盘。因此,我们从类型为“本地路径”的“w:/webs/site.com/site.git这是 BARE repos”克隆项目。

我们创建了一个 bash 脚本作为位于w:/webs/site.com/site.git/hooks/post-receive上的“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 正在执行 WORK_TREE 或整个钩子脚本。

问题是我们计划打开 SSH 和其他对存储库的访问,所以如果我们使用 Windows 本地路径,当我们从非 Windows 本地网络客户端推送时,这些路径会失败。替代方案可能是通过 SSH 提取存储库,即使在本地也是如此,但我们认为这相当低效,并且仅在此钩子问题中需要。

我们可以使用的任何建议和/或 GIT 变量都可以兼容吗?谢谢。

4

1 回答 1

2

这个问题实际上与 GIT_WORK_TREE 的路径有关,而不是与解释器本身有关。

我们现在发现,无论是通过 Samba 访问的 Windows 客户端还是通过 Linux 的 SSH git 推送,使用 GIT_WORK_TREE="../html" 都可以完美地工作。

显然 GIT钩子是在 .git 存在的存储库根目录本身(不是钩子目录)中执行的。

我们的“其他”问题现在与符号链接有关……如果从 Windows 客户端完成推送过程,则符号链接作为文件出现在自动生成的(结帐)HTML 目录中,而不是像原始符号链接一样。

出于这个原因,我们最终决定通过 SSH 访问存储库,即使是本地的。;(

于 2012-07-25T17:37:24.233 回答