Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 卡皮斯特拉诺部署噩梦_Git_Capistrano - Fatal编程技术网

Git 卡皮斯特拉诺部署噩梦

Git 卡皮斯特拉诺部署噩梦,git,capistrano,Git,Capistrano,当我试图通过“deploy”用户帐户进行部署时,出现以下错误 1782001..ae10d1b master -> master ** transaction: start * executing `deploy:update_code' updating the cached checkout on all servers executing locally: "git ls-remote git@github.com:username/app_name.gi

当我试图通过“deploy”用户帐户进行部署时,出现以下错误

  1782001..ae10d1b  master -> master
 ** transaction: start
  * executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:username/app_name.git master"
  * executing "if [ -d /var/www/app_name/shared/cached-copy ]; then cd /var/www/app_name/shared/cached-copy && git fetch -q origin && git reset -q --hard ae10d1bfe43820d8d69bbc92761a3f666cf56765 && git clean -q -d -x -f; else git clone -q git@github.com:username/app_name.git /var/www/app_name/shared/cached-copy && cd /var/www/app_name/shared/cached-copy && git checkout -q -b deploy ae10d1bfe43820d8d69bbc92761a3f666cf56765; fi"
    servers: ["173.230.158.13"]
    [173.230.158.13] executing command
 ** [173.230.158.13 :: out] error: cannot open .git/FETCH_HEAD: Permission denied
 ** 
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/app_name/releases/20100930022459; true"
    servers: ["173.230.158.13"]
    [173.230.158.13] executing command
    command finished
failed: "sh -c 'if [ -d /var/www/app_name/shared/cached-copy ]; then cd /var/www/app_name/shared/cached-copy && git fetch -q origin && git reset -q --hard ae10d1bfe43820d8d69bbc92761a3f666cf56765 && git clean -q -d -x -f; else git clone -q git@github.com:username/app_name.git /var/www/app_name/shared/cached-copy && cd /var/www/app_name/shared/cached-copy && git checkout -q -b deploy ae10d1bfe43820d8d69bbc92761a3f666cf56765; fi'" on 173.230.158.13
我可以验证我是否可以使用服务器上的deploy帐户和ssh来执行“git克隆”git@github.com

如果我将“root”指定为:user变量,同样的方法也可以正常工作

这是我的deploy.rb

另外,我不确定:group变量在这个配方中究竟起什么作用。

drwxr-xr-x 14 deploy www-data   4096 2010-09-29 20:38 .
drwxr-xr-x 10 deploy www-data   4096 2010-09-29 20:38 ..
drwxr-xr-x  7 deploy www-data   4096 2010-09-29 13:13 app
-rwxr-xr-x  1 deploy www-data    240 2010-09-29 20:38 Capfile
drwxr-xr-x  5 deploy www-data   4096 2010-09-29 20:38 config
drwxr-xr-x  4 deploy www-data   4096 2010-09-29 20:38 db
drwxr-xr-x  2 deploy www-data   4096 2010-09-29 20:38 doc
drwxr-xr-x  9 deploy www-data   4096 2010-09-29 20:38 generate
drwxr-xr-x  8 deploy www-data   4096 2010-09-29 20:38 .git
-rwxr-xr-x  1 deploy www-data    156 2010-09-29 20:38 .gitignore
-rwxr-xr-x  1 deploy www-data    145 2010-09-29 20:38 .gitignore~
drwxr-xr-x  3 deploy www-data   4096 2010-09-29 20:38 lib
lrwxrwxrwx  1 deploy www-data     28 2010-09-29 20:38 log -> /var/www/voteable/shared/log
drwxr-xr-x  5 deploy www-data   4096 2010-09-29 20:38 public
-rwxr-xr-x  1 deploy www-data    457 2010-09-29 20:38 Rakefile
-rwxr-xr-x  1 deploy www-data  10011 2010-09-29 20:38 README
-rwxr-xr-x  1 deploy www-data     41 2010-09-29 20:38 REVISION
drwxr-xr-x  3 deploy www-data   4096 2010-09-29 20:38 script
drwxr-xr-x  6 deploy www-data   4096 2010-09-29 20:38 test
drwxr-xr-x  2 deploy www-data   4096 2010-09-29 20:38 tmp
-rwxr-xr-x  1 deploy www-data 810605 2010-09-29 20:38 uninstall
drwxr-xr-x  3 deploy www-data   4096 2010-09-29 13:13 vendor

您需要确保您拥有.git,因此永远不要以root身份进行签出,否则您将遇到此问题


chmod-R ug+rw.git
这次可以解决这个问题,但是你必须努力防止同事手动
git pull
s或正确设置组权限。

你自己的.git中的“你”是谁。部署帐户?请看这篇同样/类似问题的文章。。可能与您的部署帐户有关。如果在.git/FETCH_头上执行
ls-la
,您将看到它是root所有的。因此,您要么将其发送给部署用户,要么对其进行chmod,以便部署用户可以对其进行编辑。yYou是绝对正确的。注意..我用我的/www/var/app目录上的权限更新了OP。这就是它应该看起来的样子还是www数据应该拥有它?我很不清楚谁应该拥有这个目录www-data或deploy。我的deploy帐户也在“nogroup”中。应该是这样吗?可能是想让它成为www-data而不是nogroup。如果这样做有效的话,投票表决和接受答案怎么样?