2014-01-29 55 views
2

我已經檢出了樹幹並已完成從樹枝到樹幹的合併。現在,分支中所做的所有更改都存在於我的主幹工作副本中。如果我在這個工作副本上進行提交,是否有任何方法可以稍後確定它是合併,而不是像正常的結帳 - 修改 - 簽入。我可以在日誌中指定合併詳細信息,但是如果SVN有一些方法可以識別和跟蹤它,我很感興趣。如何捕獲svn合併信息

我在其他版本控制工具(如clearcase)中看到過,合併箭頭將出現在版本樹中,用於每次合併。有沒有像SVN那樣的東西(一些合併符號或合併箭頭)?

+0

'svn log -g' in/trunk? –

+0

我可以在日誌中指定合併細節,但是如果SVN有一些方法可以識別和跟蹤除日誌以外的合併,我很感興趣。合併後,即使沒有提交消息,我也可以簽入主幹。在這種情況下,我將如何跟蹤合併。 –

+0

'svn log -g'顯示合併條目的條目以及合併它的修訂條目。所以說你把你的分支中的r123,r124和r126合併到r129中的trunk中。如果你運行'svn log -c 129 -g',你會得到r129的日誌,然後是r123,r124和r126。合併後的修訂版本將包含「合併通過:r129」或「反向合併通過:r129」之類的行。所以他不只是把你指向你寫的日誌。 –

回答

2

您應該看到一條或多條路徑上的svn:mergeinfo屬性發生了更改。這用於track what was merged。然後,您可以使用svn mergeinfo命令查看哪些路徑已合併或有資格從源分支合併到另一個分支。 svn mergeinfo也可以顯示一個粗略的合併圖,如果你沒有在1.8中通過它的參數--show-revs。由於Dipu H已在他的評論中提及,您還可以看到-g選項合併修訂爲svn log

根據您的標籤,您似乎正在使用TortoiseSVN。據我所知,TortoiseSVN沒有辦法用合併信息可視化其版本圖形功能。 Smart SVNhas such a feature的商業Subversion客戶端(完全披露我爲生產Smart SVN的公司工作)。 Subclipse has such a feature以及如果您使用Eclipse。有一個插件JetBrains IDEs as well

所以我敢肯定,如果你搜索你會發現一些適合你的東西。但我對你的環境不夠了解,無法指出你的方向。

2

替代本的合併信息的方法

讓我們檢查等(測試)庫

enter image description here

與分行及一些交叉節點合併過程

日誌分支(懶惰的日誌,沒有 - 停止 - 副本)

reading>svn log -g -q -v 
------------------------------------------------------------------------ 
r7 | Badger | 2014-01-30 13:51:41 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading/1.txt 
------------------------------------------------------------------------ 
r6 | Badger | 2014-01-30 13:50:34 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading 
    M /branches/reading/1.txt 
------------------------------------------------------------------------ 
r5 | Badger | 2014-01-30 13:43:45 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /trunk/1.txt 
Merged via: r6 
------------------------------------------------------------------------ 
r4 | Badger | 2014-01-30 13:42:59 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading/1.txt 
------------------------------------------------------------------------ 
r3 | Badger | 2014-01-30 13:39:37 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    A /branches/reading (from /trunk:2) 
------------------------------------------------------------------------ 
r2 | Badger | 2014-01-30 13:36:46 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    A /trunk/1.txt 
------------------------------------------------------------------------ 
r1 | Badger | 2014-01-30 13:35:19 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    A /branches 
    A /tags 
    A /trunk 
------------------------------------------------------------------------ 

即使沒有登錄消息中R6 Merged via: r6從R5中明確指出:R6是mergeset,其中幹線的HEAD(R5)在日誌合併到分支

日誌(相關部分)用於中繼線

WC>svn log -g -q -v 
------------------------------------------------------------------------ 
r8 | Badger | 2014-01-30 13:56:09 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /trunk 
    M /trunk/1.txt 
------------------------------------------------------------------------ 
r7 | Badger | 2014-01-30 13:51:41 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading/1.txt 
Merged via: r8 
------------------------------------------------------------------------ 
r6 | Badger | 2014-01-30 13:50:34 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading 
    M /branches/reading/1.txt 
Merged via: r8 
------------------------------------------------------------------------ 
r4 | Badger | 2014-01-30 13:42:59 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    M /branches/reading/1.txt 
Merged via: r8 
------------------------------------------------------------------------ 
r3 | Badger | 2014-01-30 13:39:37 +0600 (Чт, 30 янв 2014) 
Changed paths: 
    A /branches/reading (from /trunk:2) 
Merged via: r8 
------------------------------------------------------------------------ 

Merged via: r8 R3的記錄:R7表示未來的MergePoint(在這個時候 - 從分支到主幹)

簡而言之:合併信息顯示被合併了什麼,登錄-g - 什麼時候