Capistrano + Git - “无法找到”[commit SHA]

时间:2012-11-15 03:14:37

标签: git github ssh capistrano

我在设置工作站以使用Capistrano部署项目时遇到了困难。这是我之前在内部为客户工作的项目。我们毫不费力地在这个PHP项目中使用了Capistrano + Git。

现在我正在尝试重新访问该项目并设置一个工作站,以便能够通过github访问代码并通过Capistrano将其部署到客户端服务器。

我在工作站或客户端服务器上连接到github没有任何困难。我可以在我的工作站上执行SSH -vT git@github.com并获得预期的成功结果。

同样,我可以进入服务器并执行命令以验证服务器是否可以访问github.com。

在工作站端,我可以毫不费力地克隆,拉取和推送代码。

但是,当我尝试运行capistrano部署脚本时,脚本会尝试执行第一次获取(或克隆)并使用“无法找到[commit SHA hash]”错误来解决问题。< / p>

自从我上次从客户办公室部署以来,部署脚本没有改变。

以下是上限部署的输出:

  * 2012-11-14 18:52:34 executing `dev'
  * 2012-11-14 18:52:34 executing `setbranch'
  * 2012-11-14 18:52:34 executing `deploy'
  * 2012-11-14 18:52:34 executing `deploy:update'
 ** transaction: start
  * 2012-11-14 18:52:34 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:XXX123/reponame.git master"
    command finished in 2490ms
  * executing "if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi"
    servers: ["server.alias"]
    [server.alias] executing command
 ** [server.alias :: out] error: unable to find 8d28f09e2b85ebac6da912-github-commit-sha
 ** fatal: object 8d28f09e2b85ebac6da912-github-commit-sha not found
    command finished in 1681ms
 *** [deploy:update_code] rolling back
  * executing "rm -rf /home/serverusername/dev.site.com/code/releases/20121115025239; true"
    servers: ["server.alias"]
    [server.alias] executing command
    command finished in 293ms
failed: "sh -c 'if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi'" on server.alias

(我已经更改了输出代码中的一些名称以投影客户端。)

我最初在努力在Windows Vista PC上进行设置时遇到了这个问题。考虑到Windows是问题,然后我设置了一个Ubuntu虚拟盒,快速启动并运行,并且结果相同。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我同意berkes你的帽子食谱可能正在寻找错误的SHA,但是既然你报告它没有改变,我会抛弃这种可能性,因为它最近发生在我身上:< / p>

确保分支上仍存在SHA。

我们重写了我们的一些历史,之前的SHA不再在回购中了。我会通过git log查看SHA。创建一个抛弃分支并重置为SHA git checkout -b lost_sha&amp;&amp; git reset --hard 8d28f09e2b85ebac6da912。如果找不到SHA,Git会抱怨。

你的剧本可能没有改变,但是回购做了。