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 and
git 描述failed)
.
关于如何解决这个问题或如何在 release_path 中包含 .git 文件夹有任何想法吗?关于版本控制的任何其他想法都是可以接受的。
缺少 .git
文件夹的原因是部署是通过 git archive | tar -xf
(简化)进行的。
部署后,release_path
包含一个名为 REVISION
的文件,您可以在其中找到已部署代码的 git 哈希。您可以使用它来获得准确的修订版。
我通常建议您在代码库中添加一个变量来跟踪发布版本,例如1.0.0。 RubyGems 模板就是这样做的。这样,您的代码版本就不会绑定到您的版本控制系统。
希望对您有所帮助!
我们的代码使用 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 and
git 描述failed)
.
关于如何解决这个问题或如何在 release_path 中包含 .git 文件夹有任何想法吗?关于版本控制的任何其他想法都是可以接受的。
缺少 .git
文件夹的原因是部署是通过 git archive | tar -xf
(简化)进行的。
部署后,release_path
包含一个名为 REVISION
的文件,您可以在其中找到已部署代码的 git 哈希。您可以使用它来获得准确的修订版。
我通常建议您在代码库中添加一个变量来跟踪发布版本,例如1.0.0。 RubyGems 模板就是这样做的。这样,您的代码版本就不会绑定到您的版本控制系统。
希望对您有所帮助!