我正在尝试通过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存储库。
我几个小时以来一直在寻找这个错误的帮助,但还没有提出任何解决方案。有人可以帮忙吗?
感谢。
答案 0 :(得分:2)
以防万一我帮忙解决了这个问题。构建路径的方式是问题,因此工作后接收挂钩如下:
#!/bin/sh
echo "Starting checkout"
GIT_WORK_TREE='c:/inetpub/wwwroot' git checkout -f
echo "Finished checkout"
注意路径周围的引号和构造的窗口越多。