簡要理解svn merge的幾種用法
版本管理中有一個很重要的概念,就是主幹和分支。對應於主幹和分支之間程式碼的合併操作,就會用到svn merge。
svn提供了4種不同形式的merge方法,分別如下:
1. merge SOURCE[@REV] [TARGET_WCPATH] (the 'sync' merge) **同步合併** 2. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH] (the 'cherry-pick' merge) **摘選合併** 3. merge --reintegrate SOURCE[@REV] [TARGET_WCPATH] (the 'reintegrate' merge) **歸源合併** 4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH] (the '2-URL' merge) **雙URL合併**
我們逐個進行介紹
1. merge SOURCE[@REV] [TARGET_WCPATH]
merge的第一種用法,就是最基本的合併方式。
首先從字面上解釋一下,source指需要合併的程式碼源,TARGET_WCPATH指目標工作區間,這條命令的意思是把source的內容合併到TARGET_WCPATH。
再來解釋一下merge的過程。在合併的過程中,svn會對兩個路徑下的資料夾、檔案進行對比。
- 從根目錄開始,source中的資料夾如果中TARGET_WCPATH找不到同名資料夾,則直接複製到TARGET_WCPATH;
- 如果找到同名資料夾,則資料夾內再依次深層比對,同名的再比對,不同名的複製,直到沒有資料夾可以比對;
- 對於檔案來說,文字檔案會對文字內容進行合併;而非文字檔案比如png、exe、gif等等,會產生衝突
上張圖片來說明一下資料夾的合併方式
注意命令中[]中括號中的內容,代表可以省略。
我們將這條命令省略為merge SOURCE[@REV],也就是說source可以合併程式碼到source。 @REV是Peg Revision,它用於定位某些被刪除又重新建立的檔案。具體可以參考http://svnbook.red-bean.com/en/1.1/ch07s03.html,這裡不詳述。
2. merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [TARGET_WCPATH]
第二種合併文件描述為cherry-pick(摘櫻桃),我翻譯為 摘選合併。它可以指定source的某些版本區間,在這些區間內的程式碼變更才進行合併。
-r 100:200 指source的版本100到200之間的程式碼。
-c可以算作-r的特殊用法,-c 200 等價於 -r 199:200,它指對比某個臨近版本的程式碼變更。
在這個命令中,-c -r可以指定多個,所以它稱為摘櫻桃,就是選某些版本(櫻桃)進行操作(來摘)。
3. merge –reintegrate SOURCE[@REV] [TARGET_WCPATH]
第三種合併,我翻譯為 歸源合併。
它要求source是從TARGET_WCPATH中拷貝建立的,然後在某個版本將所有程式碼變更合併回TARGET_WCPATH。
在這次合併後,source的新的修改無法再向TARGET_WCPATH合併,也就是一次性的回到源頭的合併。簡直像是個魔法啊,哈哈
這裡起到關鍵作用的就是–reintegrate選項。
另外注意,在歸源合併中,不能指定版本區間-r或-c。
4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]
the ‘2-URL’ merge,雙URL的合併。
這個可以分為兩部分進行理解:
- diff SOURCE1[@N] SOURCE2[@M] ,對比這兩個URL的區別,假設為diff1
- 將有區別的內容diff1,合併到TARGET_WCPATH
以上就是幾種merge的用法介紹,
PS :實際上,對於svn來說並不存在主幹和分支這樣的模組,這是一個便於理解的虛擬概念,使大家中版本管理上有共同的描述形式。實際在使用merge時,只要是從一個工作區間到另一個工作區間,都可以進行合併操作。
在實際操作merge時,svn會對比需要merge的source和target的版本號,所以要注意一下版本號的情況。有的時候一直commit程式碼,但是沒有update過,你的本地版本號是不會變的,直接合並就會有問題。
相關推薦
簡要理解svn merge的幾種用法
版本管理中有一個很重要的概念,就是主幹和分支。對應於主幹和分支之間程式碼的合併操作,就會用到svn merge。 svn提供了4種不同形式的merge方法,分別如下: 1. merge SOURCE[@REV] [TARGET_WCPATH] (the
PHP header的幾種用法
aid var esp comment har pos -type refresh fresh 跳轉頁面 header(‘Location:‘.$url); //Location和":"之間無空格。 聲明content-type header(‘content-
Java for循環的幾種用法
java unboxing 比較 有效 post 編譯期 環比 開始 進行 原文鏈接:Java for循環的幾種用法 J2SE 1.5提供了另一種形式的for循環。借助這種形式的for循環,可以用更簡單地方式來遍歷數組和Collection等類型的對象。本文介紹使用這種
python幾種用法的性能比較1.5
+= 用法 setup using _array __name__ 1.5 nump name import timeit sum_by_for = """ for d in data: s += d """ sum_by_sum = """ sum(data
3分鐘掌握MongoDB中的regex幾種用法
lib cat 正則表達式 小寫 可選參數 介紹 src 我們 包括 3分鐘掌握MongoDB中的regex幾種用法背景Part1:寫在最前使用MySQL或其他關系型數據庫的朋友們都知道,使用模糊查詢的用法類似於:SELECT * FROM products WHERE s
java定時器的幾種用法
comment 四種方法 out x64 instance system new ring main package com.lid; import java.util.Calendar; import java.util.Date; import j
Unity_C#判斷字符串為空的幾種用法
tps rem ref har http string 使用 比較 itl 轉載自CSDN_FreeSon; https://blog.csdn.net/biaobiao1217/article/details/39047963 字符串判斷:string在C#中是一個引用類
格式化的幾種用法
{0} clas pri code body OS stat main world String.format詳情參考地址 public class FormatWay { static final String detail_url = "http://www.ex
ng-class動態類幾種用法
條件 clas bsp led span item sele 括號 color 方法1.邏輯在後面的中括號裏面 ng-class="{true : ‘checker disabled‘,false : ‘checker‘ }[selectAllButton]" 方
可改進的BigDecimal的幾種用法
我在實際專案中發現現存的程式碼中對BigDecimal的使用有些可以改進的地方,在此記錄下來,供大家參考。 1、new BigDecimal(0)、new BigDecimal("0")、new BigDecimal(1)、new BigDecimal("1")、new BigDecimal
JavaScript中的this關鍵字的幾種用法
JS 裡的 this 在 function 內部被建立 指向呼叫時所在函式所繫結的物件(拗口) this 不能被賦值,但可以被 call/apply 改變 1. this 和建構函式 function C(){ this.a = 37; }
關於sort函式的幾種用法
1.要使用sort函式只需用#include <algorithm> 即可使用,語法描述為: sort(begin,end),表示一個範圍,例如: int _tmain(int argc, _TCHAR* argv[]) { int a[20]={2,4,1,23,5,76,0,4
numpy.mean()的幾種用法
import numpy as np x = np.array([1,2,3,4,5]) y = np.array([0,2,3,4,6]) z = np.array([[1,2],[3,4]])#二維陣列 np.mean(x==y)#返回條件成立的佔比 Out[5]: 0.599999
C#的new關鍵字的幾種用法
一共有三種用法: 在 C# 中,new 關鍵字可用作運算子、修飾符或約束。 1)new 運算子:用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。 2)new 修飾符:在用作修飾符時,new 關鍵字可以顯式隱藏從基類繼承的成員。 3)new 約束:用於在泛型宣告中約束可能用作型
jquery事件綁定的幾種用法
防止 thead hello 語法 多個 col rop 分享 tlist 常見的事件綁定的幾種方法 主要有on(),bind(),live(),delegate(),隨著版本的不斷更新,live(),bind(),delegate()被相繼棄用。live():1.7版本之
jquery事件繫結的幾種用法
常見的事件繫結的幾種方法 主要有on(),bind(),live(),delegate(),隨著版本的不斷更新,live(),bind(),delegate()被相繼棄用。live():1.7版本之後被棄用bind()、delegate():3.0版本之後被棄用雖然在3.0之後的版本中有bind和deleg
Java中Array.sort()的幾種用法[轉]
轉自: http://www.cnblogs.com/IT-sky/p/3749859.html?utm_source=tuicool&utm_medium=referral void java.util.Arrays.sort(int[] a, int fromIn
vue class style的幾種用法
這幾種是我平常經常用的常規用法,並不是全部用法 class第一種用法:物件,true,false控制 this.$store.state.threeD.isactive:布林,用來控制activeclass這個類是否顯示 <span :class="{'bodstyle':true
關於java中Arrays.sort()的幾種用法
今天看到了Arrays了(覺得自己學東西真是龜速啊),Arrays裡面有一個sort是針對陣列排序的。。。然後就看了看它的簡單用法 同樣轉載(我不生產程式碼,我只是程式碼的搬運工.....):http://www.tuicool.com/articles/iii6N3
git merge 幾種方式對的區別?
--no-ff指的是強行關閉fast-forward方式。 fast-forward方式就是當條件允許的時候,git直接把HEAD指標指向合併分支的頭,完成合並。屬於“快進方式”,不過這種情況如果刪除分支,則會丟失分支資訊。因為在這個過程中沒有建立commit git m