2012-01-24 30 views
2

我正在研究使用Netbeans的Subversion,並想知道維護不同版本(分支機構)的代碼是多麼容易。顛覆Netbeans和多種版本的良好做法

我們目前擁有使用Netbeans中維護的單一版本代碼的Sourcesafe。現在我們有更多的客戶,因此我們需要維護不同版本的軟件。

正如我在Subversion中所瞭解的那樣,您有一箇中繼文件夾,它是代碼的主要/工作分支。然後,由於需要不同的版本,因此您需要在分支下分支代碼。所以想着事情會如何看未來以下層次結構可用於:

product\trunk 
product\branches\version 1.0.0.0 
product\branches\version 1.0.0.1 
product\branches\version 1.0.0.2 
product\tags 

在軀幹和每個版本(即版本1.0.0.0,版本1.0.0.1和1.0.0.2版本),你有相同的Netbeans項目的文件夾層次結構,即:

src 
lib 
test 

其中lib包含可由第三方開發的項目使用的JAR文件。 src將包含應用程序使用的數十,數百,數千個源代碼類。測試將有望包含等效源代碼類的測試類。

nbproject是Netbeans專門用於存儲各種項目設置的文件夾。 當您編譯您的應用程序時,Netbeans通常會創建一個dist文件夾,該應用程序是一個已編譯的JAR文件以及它在lib文件夾中引用的JAR文件。

有幾個問題,我有:

  1. 沒有任何理由不添加nbproject文件,LIB和dist文件夾到版本控制?
  2. 在Netbeans中維護不同版本的代碼時,是否必須爲每個版本的源代碼創建單獨的Netbeans項目?所以基本上,你會在你的項目中查看Netbeans的:

    • 產品樹幹
    • 產品版本1.0.0.0
    • 產品版本1.0.0.1
    • 產品版本1.0.0.2
    • ...等等...
    • 產品版本XXXX

從我所看到的Subversion比Sourcesafe和許多其他更好的功能具有更好的合併功能。它也與Netbeans整合,這是另一大優勢。我已經創建了一個測試存儲庫,其中包含一個主幹和一個分支版本,我已將分支版本的文件合併到主幹中,並在同一個文件中存在多個衝突。

回答

1

通常避免在目錄和文件名中使用空格,因爲它可以提高腳本的能力。雖然腳本不是一個直接的問題,但您不想關閉這樣一個有用工具的大門(如果將來需要它)。

那麼試試這個,而不是

product/ 
product/trunk 
product/branches/1.0.0 
product/tags/1.0.0.1 
product/tags/1.0.0.2 
product/tags/1.0.0.3 

其中一個從後備廂裏複製「使」 1.0.0分支。在穩定1.0.0分支的同時,可以繼續工作1.0.1,1.1或2.0,而不會擾亂1.0.0分支

現在,當您準備「釋放」1.0.0的副本時分支,您可以使用增加的「發行版」號將其複製到「標籤」目錄中。在將它複製到「標籤」中之後,您應該重新配置服務器,以便不允許對1.0.0.1,1.0.0.2等進行任何更新。否則,您將無法獲得有關您發佈內容的有效快照。

這只是一種做事方式,而且是一種頗受歡迎的方式。也就是說,有很多變體,你可能會發現一個更適合你的需求的改進。

0

注意

  • 樹的佈局和顯示目錄的名稱只是有條件協議,即你可以有主線/ vesions /釋放,而不是主幹/分支/標籤(合併/副本將與任何工作FE網址
  • 分行通常使用的一些(長)的時間WIP,因而 - 分離枝條作每建沒有,大多數時候(我發現)「分支,每個小的」政策

一對夫婦的答案

  1. nbproject的文件夾 - 我不知道哪個數據存放在裏面,有多少是可用於3方開發人員,但共同的規則SCM是「只版本的數據,這是一個必須開始在任何新的地方從一個地面的項目工作「。如果nbproject僅包含特定於您的特定設置或此工程特定的設置,則它可以並且必須從儲存庫保存中排除
  2. 您可以更加可用(因爲nbproject的設置可能會因版本而異,而且您不會存儲設置內回購每個版本/分支機構/),但「味道可以不同?」 - 你必須測試和檢測自己的方式
  3. 沒有問過,但回答 - DIST文件夾還必須排除從版本 - 構建的文物根據來源控制沒有任何歷史價值(並且對於任何記錄的修訂可以總是容易地重新創建 - 參見關於「通用規則」的回答N1)