我的問題是,按照以下過程進行合併時,是「將分支摺疊回主幹」過程的最後一步,請執行此操作的正確方法最佳實踐方案?需要關於使用分支和合並回主幹的幫助/建議
我已經使用svn很多年了。在我個人的項目中,我總是樂於在沒有第二思路的情況下快速開始幹活,並且以單線性的方式進行版本控制已經接近完美。簡單而高效。所有的幸福,,直到我想更多地控制第三方庫。
今天,我正在進行一個項目,我覺得它已經超越了黑客直接幹線的方法。我有多個第三方庫,每週更新一次,我真的需要更多的控制權。我需要能夠查看第三方lib版本和特定庫的跟蹤更改之間的特定變更集。我曾經看到過幾次代碼庫變得非常混亂,並且很難用缺乏經驗的buildmaster重新回到可行的狀態,但我無法在這裏出錯。
因此,我看着供應商分支,閱讀一些文章在這裏和那裏。我有'Subversion版本控制'這本書,但是我看到的例子在他們的方法中有時是矛盾的,我想說明'分支'的含義。我正要按照approach given on this post by Evan Weaver。
我制定了以下程序,我關心的是最後一節「將分支摺疊成幹線」。似乎我過去一直在使用的buildmasters通常會將分支變更集合到主幹上,而我認爲分支甚至不會被刪除。這是一個合適的方法嗎?
創建分公司
1 - 請注意當前的頭部修訂:
svn info svn://server.com/svn/repository/trunk | grep Revision
2 - 使後備箱的整潔,遠程複製到分支文件夾。命名它。我們叫它your_branch,帶有修訂版本號替換HEAD_REVISION您在步驟1指出:
svn cp svn://server.com/svn/repository/trunk \
svn://server.com/svn/repository/branches/your_branch \
-m "Branching from trunk to your_branch at HEAD_REVISION"
3 - 切換本地結帳指向新的分支(這不會覆蓋您的更改):
svn switch --relocate \
svn://server.com/svn/repository/trunk \
svn://server.com/svn/repository/branches/your_branch
4 - 檢查你的本地結帳,絕對是現在your_branch,並且您可以更新OK:
svn info | grep URL
svn up
5 - 如果有必要提交您的新變化。
更新分支
你一直在開發上your_branch一段時間,等有其他人幹,現在你必須添加自己的更改your_branch。
1 - 首先,更新您的分支結賬並提交任何未完成的更改。
2 - 搜索Subversion日誌以查看上次合併的修訂版本號(或原始分支的創建時間,如果您從未合併)。這是一次成功的合併關鍵:
svn log --limit 500 | grep -B 3 your_branch
3 - 還要注意當前最新修訂版:
svn info svn://server.com/svn/repository/trunk | grep Revision
4 - 合併最後合併版本的主幹和差異對行李箱的最新修訂版L -
svn merge -r LAST_MERGED_REVISION:HEAD_REVISION \
svn://server.com/svn/repository/trunk .
5.A:進your_branch工作拷貝,用修訂號替換LAST_MERGED_REVISION在步驟2和HEAD_REVISION與修訂號指出在步驟3中記ook輸出中的錯誤。可以找到所有文件嗎?有沒有被刪除的東西?也許你做錯了。如果需要恢復,運行svn revert -R
5.B - 如果事情似乎5.A OK,檢查是否存在衝突,解決任何衝突發現:
svn status | egrep '^C|^.C'
6 - 提交合並,更換命令與來自步驟4:
svn ci -m "Merged changes from trunk to your_branch: COMMAND"
摺疊分支回主幹的確切命令內容
嘿,Y our_branch完成。現在它必須成爲後備箱。
1 - 首先,按照上一節(「更新分支」)中的每一步操作,使your_branch與主幹上的任何最近更改同步。
2 - 完全刪除主幹:
svn del svn://server.com/svn/repository/trunk
3 - 移動your_branch到老樹幹位置:
svn mv svn://server.com/svn/repository/branches/your_branch \
svn://server.com/svn/repository/trunk
4 - 重新定位你的工作拷貝到主幹:
svn switch --relocate \
svn://server.com/svn/repository/branches/your_branch \
svn://server.com/svn/repository/trunk
完成!
請對此程序提供任何建議,意見或反饋意見。