Capistrano 3 删除 .git 文件夹

Capistrano 3 removing .git folder

我们的代码使用 git 存储库来获取应用程序的版本(我们制作了类似 {git-tag}-build{git-hash} 的东西,我们正在使用 Capist运行o 来部署我们的应用程序.

但是,使用 Capist运行o v3.0(Jenkins 的 运行)我发现 git 存储库已被删除。

我试着做了类似这样的东西:

namespace :environment do
    desc 'Copies .git folder'
    task :copy_git do
        on roles(:app) do
            within release_path do
                execute :mkdir, ".git"
                execute :cp, "-R * .git/"
            end
        end
    end
end

但正如您所理解的那样,它不起作用。

这是我遇到的问题:

Could not get version string (no version file andgit 描述failed).

关于如何解决这个问题或如何在 release_path 中包含 .git 文件夹有任何想法吗?关于版本控制的任何其他想法都是可以接受的。

缺少 .git 文件夹的原因是部署是通过 git archive | tar -xf(简化)进行的。

部署后,release_path 包含一个名为 REVISION 的文件,您可以在其中找到已部署代码的 git 哈希。您可以使用它来获得准确的修订版。

我通常建议您在代码库中添加一个变量来跟踪发布版本,例如1.0.0。 RubyGems 模板就是这样做的。这样,您的代码版本就不会绑定到您的版本控制系统。

希望对您有所帮助!