2015-04-08 54 views
2

我使用Subversion維護(主要是)C#代碼的應用程序。我想知道何時何地更新AssemblyInfo.cs文件以反映產品發貨時的最佳做法。AssemblyInfo文件的版本控制和更新

比方說,我有一箇中繼線,以及一些維護分支用於以前的版本和標籤,以便在每個版本發生時對其進行標記。

如果我在標記之前更新了分支或主幹中的AssemblyInfo文件(這是我當前的方法),這意味着我可以查看該分支的日誌以查看何時發佈相當有用的日誌,但它使我合併分支機構時發生虛假合併衝突。例如,假設我在版本4分支中進行了一個錯誤修復,它將版本4.7更新爲4.8;當我嘗試將該修補程序合併到版本5分支中時,AssemblyInfo必然會發生衝突。

我也考慮過更新標籤本身的AssemblyInfo文件。這樣可以避免合併衝突問題,但意味着在查看樹幹或維護分支的歷史記錄時無法看到發佈,並且這似乎違反了標記應該爲只讀的原則。

從我收集的內容來看,有些人喜歡在構建過程中即時更新AssemblyInfo文件,而不是將它們存儲在SVN中。儘管在表面上看起來,自動化版本編號似乎是一個好主意,但如果在執行構建之前立即檢查AssemblyInfo文件,我認爲我會感覺更加舒適,因此在構建版本之前存在直接關聯程序集的版本號以及它的來源。

回答

1

只是分享經驗:我以自動化的方式在構建服務器只有。我已經配置過一次,除了不頻繁地增加主要和次要版本之外,不再涉及它。這裏是一個輪廓:

  • 的AssemblyInfo.cs致力於源代碼控制
  • AssemblyInfo.cs中沒有手動開發商
  • 構建服務器上的任何改變源代碼控制
  • 構建服務器拿起源改變變化集信息自動
  • 生成服務器生成的文物與正確的版本
  • 當我標記/分支創建與生成服務器生成版本標籤

現代構建服務器將擁有的功能,將自動更改該文件的全過程,例如見AssemblyInfo patcher in TeamCity

我使用的版本策略是:

major.minor.build_number.svn_revision_number 

majorminor是手動硬編碼爲構建服務器上的配置參數。構建服務器會自動增加build_number。從svn提交號碼中接收到svn_revision_number

+0

感謝您的有益見解。你能告訴我,構建服務器在增加它們時是否將AssemblyInfo文件檢入到源代碼庫中?從我在AssemblyInfo Patcher頁面上看到的,它在構建之後恢復它們。我認爲能夠通過將彙編信息文件簽入正確的版本號直接將二進制文件鏈接到源版本是非常有用的。 – Andy

+0

@這是一個很好的觀點。要回答你的問題:不,構建服務器不會將補丁文件簽入回源代碼管理。實際上,該文件始終保持在svn的1.0.0.0版本中。但是,當構建二進制文件時,它們將是構建服務器設置的版本,例如「2.3.345.932」。從這個版本我可以告訴它是版本'2.3'。它已經在構建服務器上建立了'345'次,並且**源控制修訂號是932 **。所以最後一個數字告訴我svn rev#是什麼,所以我可以回到我的標籤或日誌,看看有什麼變化。合理? – oleksii

+0

謝謝,這是一個非常有趣的觀察。當然,如果svn版本號在程序集中,我不需要將assemblyInfo文件放到svn控制中。 – Andy