2009-06-22 96 views
10

什麼是設置顛覆使用供應商分支機構的最佳做法?我們的存儲庫針對單個項目進行構建我們使用的是Subversion 1.6.2和tortoiseSVN 1.6.3。顛覆供應商分支機構

示例文件夾結構:

Project1 
/tags 
/branches 
/trunk 

Project2 
/tags 
/branches 
/trunk 
  1. 會在哪裏我把廠商文件夾,它應該有什麼樣的結構?
  2. 有沒有使用tortoisesvn客戶端的例子?

回答

13

Subversion手冊有一個專門針對Vendor Branches的章節。

基本思想是通過一組追蹤外部變化(只是外部變化,而不是修改)的文件夾將未修改的當前版本導入存儲庫。就像「.../repos/vendor /(software)/ current」。然後立即分支到「... /回購/供應商/(軟件)/(軟件版本)」。隨着新版本發佈,更新「當前」目錄並創建一個新的分支,例如「.../repos/vendor /(software)/(next-version)」。這可以讓你(和svn)對未修改的源進行區分,以得出外部已更改的內容。

爲了您的對軟件進行修改,將分支「(軟件版)」到自己的項目,像「... /回購/(我的項目)/主幹/(軟件)」。當您升級到第三方源的下一個版本時,請告訴svn將「(軟件版本)」和「(下一版本)」之間的區別合併到「trunk /(software)」的工作副本中。這將所有外部變化拉入中繼線,整齊地升級項目源。正常分支並標記項目。

Subversion發行版包含一個名爲「svn_load_dirs.pl」的Perl腳本,它可以在升級「vendor」項目時提供幫助。它發現刪除,添加和重命名的文件,並根據需要修改您的工作副本,例如「(當前)」。

+11

那該死的書SVN擁有一切,不是嗎? – Travis 2009-06-22 14:12:15

0

你說的是真的,但在實踐中你會看到一個很大的問題。

當您將供應商項目導入到您的Subversion存儲庫(並且供應商項目是一個很大的讓我們說像apache httpd 2.2)時,您會發現無法導入每個目錄的svn:ignore屬性,原因是事實上並不存在任何只能訪問WebDAV界面的導出工具(有svn管理工具可以導出svn道具,但需要直接訪問供應商存儲庫)。

所以,當你導入一個供應商項目時,你將不得不首先從供應商的svn倉庫導出原來的一個,並且在將這些文件導入到你的svn之後,你將爲項目中的每個目錄手動設置svn道具。一個非常有效的方法,但是如果你真的想修改供應商項目並跟上他們的修改,這是唯一的方法。

+0

順便說一句,Perl腳本名爲「svn_load_dirs。pl「是完全沒有效率的,因爲它不知道svn道具,再次運行這樣的腳本後,你必須手動設置svn道具並重新提交,並且只有在這一步之後你才能創建標籤版本副本。 ? – gigiduru 2010-01-19 10:45:39

3

對於任何人來到這個它是值得日後明知爲SVN版本1.8處理在詹姆斯的回答這個問題描述vendor分支記錄的方法已經改變。

在撰寫本文時,新文檔仍在定稿,請參見SVN書第4章中的供應商分支部分:http://svnbook.red-bean.com/nightly/en/svn.advanced.vendorbr.html。請注意,該頁面頂部的警告指出正在進行的文檔。