git - Capistrano + Git - "unable to find"[提交 SHA]

标签 git github ssh capistrano

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

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

无论是在我的工作站上还是在客户端服务器上,我都可以轻松连接到 github。我可以在我的工作站上执行 SSH -vT git@github.com 并获得预期的成功结果。

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

在工作站端,我可以毫无困难地克隆、 pull 和推送代码。

但是,当我尝试运行 capistrano 部署脚本时,该脚本开始尝试执行第一个提取(或克隆)并出现“无法找到 [提交 SHA 哈希]”错误。

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

这是 cap 部署的输出:

  * 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 虚拟盒子,让它快速启动并运行,并得到了相同的结果。

有人能帮忙吗?

最佳答案

我同意 berkes 的观点,你的 cap recipe 可能正在寻找错误的 SHA,但既然你报告说它没有改变,我会排除这种可能性,因为它最近发生在我身上:

确保 SHA 仍然存在于分支上。

我们重写了一些历史记录,以前的 SHA 不再在 repo 中。我会通过 git log 查看 SHA。只创建一个一次性分支并重置为 SHA git checkout -b lost_sha && git reset --hard 8d28f09e2b85ebac6da912 可能会更快。如果找不到 SHA,Git 会报错。

有可能你的脚本没有改变,但 repo 改变了。

关于git - Capistrano + Git - "unable to find"[提交 SHA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391040/

相关文章:

networking - 虚拟盒子 + vagrant centos8 盒子( headless )从互联网访问

git - Docker 加载 key "/root/.ssh/id_rsa": invalid format

git filter-repo : can it be used on a specific branch?

linux - 如何在 Windows 上设置和克隆远程 git 仓库?

java - JGit 克隆并获取修订散列

windows - 推送更改到 Git 不起作用

git - 重新验证 git(强制为新用户创建新的 SSH key )

git - 本地删除文件夹但远程保留

node.js - 如何使用 Node api 在 azure devops 工作项和 git 分支之间添加链接?

linux - Git 推送询问 HTTP 存储库来源的用户名和密码