我目前正在设置一个 git 架构,如此处所述。
有问题的服务器正在运行 Windows Server 2008 R2,使用 copSSH 和 msysGit。
它的要点是一对 git repos:一个被推送到的裸 repo,然后是另一个包含实时应用程序的非裸 repo。
推送到的 repo 包含一个更新后挂钩,如下所示:
echo
echo "**** Pushing data to Live Server."
echo
cd /cygdrive/c/Repositories/Live || exit
unset GIT_DIR
git pull hub master
exec git-update-server-info
值得注意的是:Live 是非裸仓库,顾名思义,就是 live。Live.git 是包含上述钩子并被推送到的裸仓库。如果没有 /cygdrive/,我无法 cd 到 repo,这是通过在诊断推送中回显 $pwd 发现的。
在 Live 存储库中成功调用了 Pull,问题在于在该更新中找到 Live.git 存储库。我收到“奇怪的球”错误,内容如下:
remote: Pushing data to Live Server.ommand not foundnd not foundle or directory
remote: : not foundpdate-server-infoand not foundand not founddommand not found
hub通过本地git shell定义为远程存储库,如/c/Repositories/Live.git和/cygdrive/c/Repositories/Live.git。
我已经用直接文件夹路径替换了“集线器”,甚至尝试了“../Live.git”之类的东西我尝试过的一切都以 git 更新失败告终。更新命令中 Live.git 的所有尝试路径都是通过 git bash 尝试的,工作目录设置为 Live repo 并且可以正常工作。
感谢您提供任何线索或帮助!
更新:我的模式要求我从中心存储库中提取,这将花费不必要的空间来解释原因,但事实就是如此。
我进行了更多测试并发现了更多关于我的问题的信息:当我通过 SSH 推送到我的存储库时,主集线器已成功挂载并执行拉取命令。当所说的 pull 命令尝试解析集线器存储库时,它失败了(正如我在上面详述的那样),但结果是挂钩中的一系列 ls 命令看不到任何文件夹。我什至在 /cygdrive/c/ 上运行了 ls,只能看到一个名为 usr 的文件夹。我已确保 copSSH 用户对整个文件系统具有完全的管理权限(仅用于测试和调试目的)。
我不知道为什么我的路径必须使用 /cygdrive/ 路径,除了 copSSH 中打包的 cygwin 之外,我没有安装 cygwin。这是否表明我的配置存在问题?或者这对于 copSSH + msysGit 设置是否正常?即使 ls 不会列出存储库文件夹,我怎么可能从钩子挂载主存储库?