2009-06-22 66 views
3

我一直在考慮我正在使用的部署過程,而且我想知道是否有一種好的方法來處理分支/標記將要/已經發布到生產中的代碼。我應該如何在發佈之前和之後進行分支和標記?

在某些時候,我想創建一個分支作爲發佈分支,並對分支進行任何最後一分鐘的更改併發布它。然後釋放後,我想將它保存爲標籤。

爲了澄清,我正在尋找關於命名,處理分支和處理標記的約定。我也在想,除了我在談論如何處理這種情況之外,是否還有其他選擇。

  • 您是否命名發佈分支或每次都使用同一個發佈分支和新代碼?
  • 一旦它們作爲標籤存在,刪除發佈分支?
  • 你如何命名你的分行/標籤?

回答

2

我建議閱讀這個答案

Release management in SVN

基本上有一個分支叫版本中,您可以從那裏,如果你想標記。並保留行李箱中的流血碼版本

就發佈命名而言:它取決於最適合您的是什麼,以及誰是看到版本號的人。

考慮使用MajorRelease.MinorRelease,然後也許某個地方的技術上感興趣,你甚至可能指定一個補丁版本號(例如,應用程序autoupdates和major.minor保持不變)。

專業:大的變化 - >新的功能/場所兼容性 次要:接口兼容(例如性能) 修補缺陷修復

0

我自動使用CruiseControl.Net構建過程。我們的版本對應於內部版本號,所以dll的版本是6.5.4.1234。當我們有主要和次要版本時,6和5總是會手動更新。在構建之後,4被手動更新(並且1234被重置爲0)。構建過程總是將1234更新爲1235.

當我們從幹線釋放(版本總是6.0.0.x)時,我們將手動分支並將其稱爲Branch_6_0。然後該分支將構建爲6.0.1。 Trunk將移動到6.1或7.0。

CruiseControl有兩種模式(開發和測試)。測試總是按需創建,並會創建與構建版本相對應的分支。

0

在某些時候,我想打一個分支 爲發佈分支,並作出 最後一分鐘更改分支和 釋放它

這是我擔心的一點。通常情況下,您需要創建一個分支,完成您的所有開發,然後將該分支重新集成到主幹中。從幹線上的這一點創建您的標籤。如果您想進行更多更改,請創建一個新分支,進行編輯,重新整合並重新發布。

不要嘗試對發佈分支進行更改,因爲您可能會丟失它們,或者有麻煩的時間將它們合併回主幹。

釋放分支的另一種方法是將所有開發更改爲主幹,並且當您準備好時,創建一個發佈/標籤分支。對於小型開發商店來說,這通常是最簡單的方法。 (當您對其他人正在進行更改的產品進行重大更改時,另一種方法運行良好)。

1

工作方式很多。我使用的一個是:

 
project_repository 
| 
|- trunk //Where the current in support release is. 
| 
|- branches //Where new features/big fixes or refactors are made. 
| 
|- tags //Where all releases are tagged. 
    | 
    |- releases //where all release tags are located 
    |- daily //where all daily tags are located. 

我們使用的命名如下:

  • 對於分行我們的名字由什麼是將在其作出的主要任務分支(例如:admin_module_refactor)。
  • 對於標籤,當它們對應於發佈標籤時,我們將標籤命名爲版本號(mayor.minor.micro。例如:1.0.2)。或與日常工作標籤的日期(例如:YY_MM_DD)。

對於遵循這種結構和命名約定,我們有一組工具和腳本來幫助以這種方式工作。每天晚上,構建服務器也會生成每日標籤。