【问题标题】:Why does my Capistrano Deployment point to an old Commit?为什么我的 Capistrano 部署指向旧的提交?
【发布时间】:2025-03-27 03:00:02
【问题描述】:

我完成了我在 git 分支上的最后一项工作,并将其合并到我的暂存环境的分支中。但是在我的 Capistrano 部署脚本完成后,我揉了揉眼睛,因为虽然我的更改被推送到了 Github,但我的最后一次提交被完全忽略了。他们指出,即使是远程分支也指向真正的最后一次提交,但由于某些原因,capistrano 无法识别。有任何想法吗?

【问题讨论】:

  • 您的:repo_url:branch:deploy_via 是如何配置的?
  • Capistrano 使用旧提交的证据是什么?你在看服务器上current/REVISION的内容吗?如果您通过在浏览器中查看应用程序进行验证,那么问题可能在于您的应用程序在最近一次部署后没有正确重启。
  • 我使用的分支是 master 分支,repo url 指向一个私有 git。我不使用部署方式。我查看了 current/REVISION 和浏览器中的应用程序。两者都表明最后一次提交被忽略了。问题是否可能取决于合并?我完全没有冲突。

标签: ruby-on-rails git capistrano


【解决方案1】:

Capistrano 3 在服务器上维护您的 Git 存储库的镜像。它与currentreleasesshared 目录一起存储在名为repo 的目录中。通常这意味着它在这里:

/var/www/my_app_name/repo

如果您绝对确定遥控器是最新的,但 Capistrano 没有看到它,那么这个缓存的 repo 可能有问题。

尝试删除repo 目录(或将其移至备份位置)并再次部署。 Capistrano 将重新创建它,并希望能获得您的新提交。

【讨论】:

    【解决方案2】:

    我发现了问题。主机文件中有一个错误的条目,导致了这种奇怪的行为。感谢您的努力。

    【讨论】:

      最近更新 更多