2008-10-10 139 views
7

我們的情況如下,但在任何情況下我都很好奇這個問題。你如何版本你的項目和管理版本?

我們擁有包括4個項目的框架:

  • UTIL
  • 框架
  • 網絡

我們還需要一個版本,並依賴於一個模塊bean和util版本。

最後,我們有一個客戶項目,其中包含特定版本的核心項目和一個或多個模塊。

是否有標準的方式來版本這些項目?

當我們嘗試向QA發佈發佈,然後通過維護版本(發佈=標籤和可能的分支)來管理我們正在進行的開發時,對我來說看起來很簡單的事情變得非常複雜。

我更喜歡以下內容:

1.2.0 - 主要和次要版本+發佈。

1.2.1 - 下一個版本

1.2.0_01 - 在1.2.0版本(分支)的bug修復

任何想法?

回答

10

我們使用major.minor.bugfix。主要版本只發生巨大變化。 API發生更改時會調用次要版本。所有其他版本都是bugfix版本。在編譯或修訂編號方面也有明確的實用工具,可以用於故障排除,但如果您有非常嚴格的CM,則可能不需要包含它。

在Apache Ivy或Maven等工具的幫助下,可以很好地協調所有這些項目的版本。使用自己的版本號構建一個項目可以涉及其他項目(的產品)的特定版本的彙總,因此您的構建文件從下到上提供了嚴格的版本映射。將其全部保存到[在此處插入最喜歡的版本控制工具],並記錄下不錯的歷史記錄。

+0

我曾經工作過的一個地方做過major-minor-bugfix,真的很認真,只是爲了增加巨大的東西而增加了專業。他們已經存在了15年,我正在研究最新最好的版本:1.52.0 :) – tloach 2008-10-10 17:54:16

2

沒有標準的版本號系統。共同的主題是有一個主要的,次要的和內部編號,偶爾還有一個點編號(1.2.2.1,例如,對於1.2版本的第2版第1版)。版本號的含義非常靈活。然而,頻繁的選擇是在小版本或點發布之間具有向後兼容性。

只要您的源代碼管理允許,發佈可能最好通過標記一組源代碼控制文件來完成。然後重新創建一個版本,就像同步到標籤和建築物一樣簡單,這非常有用:)

2

在自動構建系統中,我目前使用I版本與Major.Minor.Build.X,其中構建是每我們打了系統測試的時間,X是從代碼生成的repo中獲得的最後一個Subversion修訂版本號。似乎Subversion能夠很好地工作,因爲如果需要的話,我們可以輕鬆地回到特定構建的代碼庫。

1

在可能的情況下,我更喜歡使用相同版本編號版本的項目,除非它們是共享的。它允許移動部件之間更加一致,並且更容易識別構成產品發佈的組件。

正如workmad3所說,構建數字確實沒有共同的規則。我的建議是使用對你的團隊/公司有意義的事情。

我曾經工作過的一些地方已將項目里程碑和迭代的內部版本號對齊,
e。g:Major = Release或Milestone,Minor =迭代,Build =內部版本號(從項目開始或迭代開始),Revision =如果構建必須重建(或分支)。

3

我使用{major}。{minor}。{buildday}。{sequential}。對於Windows,我們使用實用程序stampver.exeUpdateVersion.exe來處理主要自動處理的.NET項目。

0

您沒有提及任何項目是否訪問數據庫,但是如果有的話,這可能是另一個需要考慮的因素。我們使用一個major.minor.bugfix.buildnumber方案,類似於在這個問題的答案中描述的其他方法,具有大致相同的邏輯,但是要求任何數據庫模式更改至少需要一個小增量。這也爲您的數據庫模式提供了一個命名方案。例如,版本1.2.3和1.2.4都可以針對「1.2」數據庫模式運行,但版本1.3.0需要「1.3」數據庫模式。

+0

我們正在使用autopatch。它會自動保持數據庫在部署新版本時保持最新。 (跟蹤他們在補丁表中)這很不錯。 – ScArcher2 2008-11-06 16:40:56

-1

目前我們還沒有真正的版本控制。我們使用svn內部版本號和發佈日期。 (標記名稱是像release_081010_microsoft例如)

老產品使用major.minor.sub版本編號

主要從未改變 的微小變化對每一個版本/每6個月featurerelease。 Sub是不影響功能集的一切 - 主要是bug修復。

2

我用的是Linux內核的版本編號系統的變化:

major.minor.bugfix

,甚至微小的數字表示幾分穩定版本可至少被分配用於測試,和奇怪的次要數字表示一個不穩定/未經測試的版本,不應該分發給開發者。

1

其中最常見的約定是major.minor.bugfix,並帶有一個表示內部版本號或預發佈標識(例如alpha,beta等)的附加後綴。

我的團隊編號根據項目里程碑進行構建 - 在開發迭代結束時(每隔幾周)將構建交付給我們的QA組。臨時CI構建未編號;因爲我們使用Maven,所以這些版本會以SNAPSHOT後綴編號。

無論你決定什麼,一定要記錄它,並確保每個人都明白它。我還建議您記錄並始終應用發佈分支政策,否則它可能會很快讓每個人感到困惑。雖然只有4個項目,但應該很容易跟蹤發生的情況。

+0

太棒了,我們也使用maven。這聽起來像我們的計劃與你所說的相似。我完全同意讓其他人瞭解這個過程是關鍵。 – ScArcher2 2008-10-16 14:48:41