2009-01-20 108 views
6

我有一個版本控制系統(例如Subversion),現在我想建立一個構建過程。現在我必須創建一個版本號並將其插入到系統中。但是版本號從哪裏來,並進入?假設我想使用這個常見的<專業>。 < minor>。 < bugfix/revision> scheme。我應該將編號傳遞給構建腳本嗎?或者我應該通過像增加主要,增加小,增加修正等論據?或者,您是否會建議使用構建腳本檢測到的編號創建分支?版本號從哪裏來?

我可以想象,主要和次要版本號必須手動放在某個地方。版本號可以自動增加。但我仍然不知道我會在哪裏放置主要和次要的數字。

在我的情況下,我有一些我想壓縮的php文件,但是在我必須在php文件中插入一些版本號之前。


我已經編輯這篇文章,試圖讓我的要求更加清晰:

我不使用Subversion,這只是一個例子。我不想討論版本號方案。

想象一下,我想創建版本3.5.0或3.5.1。我會將此版本號傳遞給構建腳本嗎?該腳本是否會使用此編號在存儲庫中創建分支,還是希望某人已創建此分支?手動?或者構建腳本會查找分支的名稱(例如'3.5.1)並將其用於更多的事情?版本號是從我的腦中傳出還是自動創建的(我猜想它的主要/次要編號來自我的小腦袋並且創建了版本號)?或者你會將該號碼放入可能被插入到存儲庫中的文件中?

我想如果會使用發佈管理工具,我會在那裏插入版本號。但我還沒有用過。

回答

5

對於顛覆操作,可以採用全局修訂版本號並將其作爲「構建」號使用,或者更好的是不要依賴它,並使用標記和/或分支來管理版本。全球修訂的主要問題就是,回購是全球性的。即使部分回購沒有變化,它也會增加。

徹底解除版本與回購協議的版本是恕我直言,更好。你有標籤,使用它們。

+0

如果DVCS使用HASH作爲查詢ID。對於SVN使用** svnversion -c **。 – gavenkoa 2011-08-18 20:10:04

1

svn或任何其他版本控制系統的修訂與您的產品版本號(甚至是內部版本號)不同。

有許多方法可以執行版本號。通常在Subversion中你可以爲一個版本創建一個分支(或標籤,它們本質上是一樣的),如果這是一個發行版本,你爲這個創建一個標籤,例如svn://my-repo/releases/1.0.0

您可以將參數傳遞到構建腳本中以獲取代碼並將其用作構建編號,或者使用構建腳本使用的目錄,然後將svn切換到您想要構建的分支,腳本可以使用svn info來確定它正在構建的版本。

0
x.y.i.j 

x - 主要版本,y - 次要版本,i - 版本號,j - 修訂數

Major version增量上的重大變化(新的架構,新的用戶界面等)

Minor version在較小的變化(性能改進,主要bug修復等)上增加,

Build number遞增everyt ime你公開發布。

Revision number每次將更改提交到項目源代碼樹時都會遞增。

我更希望在0作爲修訂版本號的AssemblyInfo.cs和發佈包(foo-1.1.7.110-source.zip)的名稱

2

與以往所有關於使用約定地點的實數分支機構和標籤。另外,分支名稱和標籤名稱可以合併到具有一些聰明腳本的構建過程中。

我希望增加的唯一技巧是你應該將SVN修訂版隱藏到每個版本中。有時很容易回到某個特定的地方,而不是知道標籤或分支。 99%的標籤/分支是夠好的,但是這個版本對於增量/內部/連續/測試版本來說是很好的。

2

所有分支應該手動創建。構建腳本應該在標籤和/或分支上運行,首先檢查它(或者可能正在更新它)。作爲構建過程的一部分,在構建的確切快照上創建標記是一個好主意。

您通常會建立編號和版本。內部版本號可以自動增加,並作爲版本的一部分進行版本控制(除了基於標籤的版本,其中版本號必須停留在版本庫之外 - 這是避免基於標籤的版本的另一個原因)。

版本通常存儲在您每次發佈週期手動更新一次的文件中。它被檢查進入正確的分支,然後獨自離開。例如,主線在其文件中的版本=「3」,發行版分支上的第一個版本將具有版本=「3.5」,並且如果需要補丁版本,則將其從分支分支中分支出來並簽入版本= 「3.5.1」