国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SVN 分支及合并的介紹和實踐
  • 寫在前面
  • 一些相關(guān)的概念和原理
  • 進行分支開發(fā)的最佳實踐
  • 合并的分類
  • 在 Eclipse 中進行合并操作
  • 相關(guān)資源

 

寫在前面

本文是由演講整理而來的,介紹了 SVN 分支與合并的概念、流程和一些實際操作方法,適合對版本控制有基本認識然后想了解 SVN 分支與合并的使用方法的讀者。

對應(yīng) SVN 版本最低為 1.5,因為分支、合并的很多功能都是 1.5(release notes ) 才加進來的。

 

一些相關(guān)的概念和原理

  • 分支(branch)和標記(tag)對于 SVN 來說就只是副本(copy),沒有任何其它意義。分支和標記的意義是我們?nèi)藶榻o予的。
  • SVN 的副本是通過"cheap copies "來實現(xiàn)的,建立一個副本就類似 Unix 中創(chuàng)建一個硬鏈接(hard link),空間和時間的消耗都是固定并且很小的,因此不必太過擔(dān)心副本太多而導(dǎo)致性能問題。
  • SVN 的文件儲存 是通過差異(diff)來實現(xiàn)的,底層儲存方法有兩種:1、Berkeley DB,完整保存一個文件的最新版本(revision),舊版本通過反向差異(reverse diffs)來獲取。2、FSFS,跟 BDB 相反,完整保存一個文件的初始版本,后續(xù)版本通過正向差異來獲取。當然,為了避免版本太多而造成性能下降,SVN 還使用了"skip-deltas "來減少需要追溯的版本數(shù)。
  • SVN 屬性(property )可以附帶在文件、目錄和版本(revision)上。文件和目錄的屬性類似文件內(nèi)容,會被記錄進版本庫中的,例如每次提交時的注釋,其實就是該版本的一個屬性 svn:log。以"svn:"開頭的屬性是系統(tǒng)預(yù)留的,用戶不應(yīng)該自定義這樣的屬性。

 

進行分支開發(fā)的最佳實踐

  • 做分支上做開發(fā)的時候,必須定期使分支與主干同步,避免開發(fā)完成后合并(merge)回主干時出現(xiàn)嚴重沖突(confict)。
  • 進行合并前,處理掉工作副本上的所有本地修改,方便合并失敗時進行回滾(revert)。
  • 進行合并時,特別注意 新增/刪除 操作,因為很多沖突都是這類操作引起的。
  • 完成一個分支的功能并合并回主干后,拋棄該分支,后續(xù)其它功能的開發(fā)使用新建的分支。當然,也有辦法繼續(xù)使用該分支。

 

合并的分類

1、從主干到分支

 

 

 假設(shè)"^/trunk"是主干的 URL,當前目錄為分支的工作副本。該命令同步主干的最新修改到當前工作副本,用于使分支跟主干保持同步。SVN 會通過 svn:mergeinfo 屬性來記錄當前工作副本已經(jīng)合并過的版本號,然后在每次合并時選擇合適的(eligible)版本進行合并。當然,也可以自己手動指定合并版本M到N的修改。

 

2、從分支到主干

 

 

svn merge --reintegrate ^/branches/quota

 假設(shè)"^/branches/quota"是分支的 URL,當前目錄為主干的工作副本。該命令將分支的最新版本(@HEAD)跟主干的最新版本進行比較,將差異實施到當前工作副本,用于將在分支上完成的工作合并回主干。

分支使用 --reintegrate 合并回主干后,如果繼續(xù)在該分支上開發(fā),當需要同步主干的修改到分支過來時,默認會包括之前 reintegrate 的修改,而這些修改已經(jīng)在分支上做過了,所以這樣往往會導(dǎo)致沖突。這也是前面“最佳實踐”中最后一個建議的一個原因。當然,想要使這個分支繼續(xù)可用也是可以的,這就需要使用下面這第三種合并。

 

3、僅記錄的合并

 

 

svn merge -c 25 --record-only ^/trunk

 假設(shè)當前目錄為分支的工作副本,該命令將主干的版本25標記為已合并到當前工作副本,但并不會進行實質(zhì)性的合并,這樣下次合并主干到分支時,該版本的修改就會被跳過,避免修改被重復(fù)實施導(dǎo)致的沖突。其實這種合并就是改一下 svn:mergeinfo 而已,但直接修改太危險了,所以弄了這樣一個所謂合并來規(guī)范操作。

 

在 Eclipse 中進行合并操作

Subclipse

在 Eclipse 中有兩個比較流行的 SVN 插件:Subclipse 和 Subversive,關(guān)于兩者的討論有很多,例如這里 。本文只介紹 Subclipse。

 

上圖是 Subclipse 進行合并操作時的界面,該圖所對應(yīng)的操作是:將 trunk 上版本 8 至今的修改同步到工作副本 pearbranch,也就是分支 branches/quake。這里可以發(fā)現(xiàn)幾個問題:

  • 不能進行自動合并,必須手工指定版本號。
  • 不能進行僅記錄的合并
  • 不能直接進行 --reintegrate 的合并

 

CollabNet Merge Client

上述 Subclipse 的不足,應(yīng)該是因為 Subclipse 默認的合并實現(xiàn)是基于 SVN 1.4 之前的,那時還沒有 svn:mergeinfo、--reintegrate 和 --record-only 呢。要支持這些 1.5 的新特性,可以安裝 CollabNet Merge Client。

 

CollabNet Merge Client 是 Subclipse 的一個可選功能,其實就是一個增強的、支持新特性的合并實現(xiàn),如上圖所示,它的優(yōu)點有:

  • 支持合并信息自動跟蹤和自動合并
  • 支持 --reintegrate 和 --record-only
  • 合并前能對工作副本進行檢查

 

相關(guān)資源

SVN 設(shè)計思想

主要是看 Bubble-Up Method 這一節(jié),是 revision 的基本原理。

 

『Version Control with Subversion』

官方手冊,學(xué)習(xí) SVN 必讀。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
eclipse下SVN subclipse插件
使用svn merge文件
圖文:eclipse中SVN分支合并到主干 | Darren Fang的生活點滴
Subclipse 入門指南和參考(三)
eclipse中svn插件的安裝與使用
詳解eclipse SVN插件如何安裝在Ubuntu系統(tǒng)?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服