【发布时间】:2014-10-24 14:41:08
【问题描述】:
我正在 lib/capistrano/setup.rake 文件下部署具有以下特定任务的 Web 应用程序:
69 desc "Publish git commit log to changelog.txt"
70 task :publish_changelog do
71 on roles(:web) do
72 log = "#{deploy_to}/current/public/changelog.txt"
73 execute "echo '============ Last deployed on' `date` ============\n > #{log}"
74 execute "echo >> #{log}"
75 execute "cd #{deploy_to}/current && git log --since=\"10 days ago\" >> #{log}"
76 end
77 end
我知道这只是我的应用程序的一项特定任务,但我遇到的问题是,当我尝试运行此命令时,它会中断,因为在我部署我的应用程序后,Capistrano 删除了我的 .git 目录位于服务器角色(:web) 上的应用程序。
仅当角色 (:web) 下的应用程序是 git 存储库时,上述命令才有效。本质上,这意味着我必须 ssh 进入 Web 服务器,删除以前是 git 存储库的应用程序“当前”,然后再次继续克隆它。完成后,运行上述 Capistrano 任务即可。为什么呢?我一定是错过了什么。
这是我的推断。当我部署 Capistrano 应用程序时,Capistrano 必须用 git 目录替换我的“当前”目录并粘贴到一个新目录上,从而有效地删除 .git 目录。尽管 Capistrano 创建了一个共享和发布目录,但它必须粘贴在我当前的目录上。这是Capistrano所做的吗?继续前进将不胜感激。我正在尝试决定是否需要重写命令,或者是否需要以某种方式配置 Capistrano。谢谢。
【问题讨论】: