2015-10-05 76 views
0

我們的代碼使用Git倉庫,以獲取應用程序的版本(我們做的東西像{git-tag}-build{git-hash}和我們使用Capistrano的部署我們的應用程序。Capistrano的3去除git的文件夾

但是,使用Capistrano的V3 0.0(詹金斯跑了),我發現,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文件夾?版本控制上的任何其他想法都可以接受。

回答

1

缺少.git文件夾的原因是部署通過git archive | tar -xf(簡化)發生。

部署後,release_path包含一個名爲REVISION的文件,您可以在其中找到部署代碼的git哈希值。您可以使用它來獲取確切的修訂。

我通常建議您在代碼庫中粘貼一個變量以跟蹤發佈版本,例如, 1.0.0。這是RubyGems模板如何實現的。這樣,您的代碼版本不受限於您的版本控制系統。

希望這會有所幫助!

+0

很棒的回答。不知道REVISION文件的存在。我結束了對我們所做的和你所建議的事情的混合。 一方面,我們實現了靜態版本控制(就像RubyGems一樣),但我們仍然需要構建,所以我設法使用了REVISION文件中提供的哈希。所以它看起來像{靜態,即1.0.4} -build {REVISION}。 – demogar