致命错误'没有这样的文件或目录'什么时候尝试通过Git部署

时间:2014-10-26 07:32:03

标签: git

我正在尝试通过Git设置网站部署,但遇到了post-receive挂钩的问题。这是在Windows服务器上。推送的输出如下:

git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\Adam\AppData\Local\Temp\ib1plrg0.ejf

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags --set-upstream test master:master
Pushing to ssh://cyg_server@192.168.1.109/~/website

Branch master set up to track remote branch master from test.

remote: Starting checkout[K
remote: fatal: Could not switch to '/c/inetpub/': No such file or directory[K
remote: Finished checkout[K
To ssh://cyg_server@192.168.1.109/~/website
   4da534b..8e32d89  master -> master
updating local tracking ref 'refs/remotes/test/master'

Post-Receive挂钩的设置如下:

#!/bin/sh
echo "Starting checkout"
GIT_WORK_TREE=/c/inetpub/wwwroot git checkout -f
echo "Finished checkout"

出于某种原因推送时,看起来我无法更改为wwwroot目录。它肯定存在,并且当从Git Bash中手动运行时,该行本身工作正常,所以我不确定问题是什么。

作为参考,我通过Cygwin和Git 1.9.4安装了OpenSSH。我通过SSH连接。通过SSH连接的主目录是C:\ Repositories,在那里我有一个名为website的文件夹,它初始化为一个裸Git存储库。

我几个小时以来一直在寻找这个错误的帮助,但还没有提出任何解决方案。有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:2)

以防万一我帮忙解决了这个问题。构建路径的方式是问题,因此工作后接收挂钩如下:

#!/bin/sh
echo "Starting checkout"
GIT_WORK_TREE='c:/inetpub/wwwroot' git checkout -f
echo "Finished checkout"

注意路径周围的引号和构造的窗口越多。