2011-06-06 42 views
57

我正在嘗試將樹幹中的最新更改合併到我的項目的分支中,但問題是我不知道樹幹的修訂版本是什麼,從中創建分支。我會認爲SVN記錄了這個地方。有誰知道我如何找到修訂號碼?查找樹幹中創建分支的版本

+0

如果您使用的是svn 1.5或更高版本,則無需知道此修訂版號即可進行合併。 'svn merge ^/trunk .'會自行解決它。如果沒有發生,你可能需要'svnadmin升級'你的倉庫。 – slowdog 2011-06-07 13:23:19

+0

嗯...... Subclipse要求開始修訂,我得看看它是否可以這樣做合併 – Andy 2011-06-08 23:33:04

回答

67

在命令行中,--stop-上覆制標誌可以用來幫助您展示你來自哪裏,複製一個分支:

svn log --verbose --stop-on-copy $REPOSITORY/branches/feature 

最後一行的會說這樣的事情:

Changed paths: 
    A /branches/feature (from /trunk:1234) 
+0

啊人。我希望有一個「停止在N副本」選項!將不得不手動遍歷它們。謝謝! – Andy 2011-06-08 23:36:16

+0

我認爲一個svn移動將被選爲「複製」...因爲它是一次複製和刪除。所以如果你創建了一個分支,然後重命名它(重命名爲tortoise命令來重命名),它會拋棄「這個分支何時開始?」數據。我只提到這一點,因爲「重命名」聽起來不像「創造」......可悲的是,我學到了這一點。 – granadaCoder 2013-03-08 21:31:23

12

您使用的是TortoiseSvn還是命令行?

命令行:svn log --stop-on-copy然後查看最小的轉速編號。

烏龜SVN:right-click, tortoise-svn, show log, make sure 'stop on copy' is *checked* and press refresh. Scroll to the bottom and find the smallest rev number. enter image description here

+0

實際上我使用Subclipse – Andy 2011-06-08 23:30:59

+1

不完全正確。創建分支時,您可以指定分支基於哪個版本(使用-r) - 例如。 'svn copy -r 1234 svn://foo.com/trunk svn:// foo.com/branches/b1'。基本版本不一定與創建分支的版本相同。 @ richq的答案顯示瞭如何正確得到它。 – harmic 2015-04-09 00:38:48

2

如果你已經使用svn copy創建tag/branch,然後svn log可以從您的分支東西被複制告訴你。例如,假設我們有svn://svn/trunk/foo,我們創建了一個分支svn://svn/branches/super_foo。運行svn log -v svn://svn/branches/super_foo,它會告訴你類似這樣的東西 - /branches/super_foo from /trunk/foo:22890,這意味着你已經將樹幹版本22890複製到你的分支中。

0

對於Cornerstone應用程序,要查看標記或分支的起源位置,請查看時間線。

9

也許有點晚了,但。

如果您在分支目前是可以運行:

svn log -r 1:HEAD --limit 1 --stop-on-copy 

它顯示了分支,即創建時,它的第一個版本。

+0

這是正確的答案。它沒有列出成千上萬的無用修訂,只是看最後一個。 – bobbogo 2017-03-21 13:27:30

+1

我建議在上面的命令中加上'-v'選項,這樣你也可以得到'(from path:rev)'消息。 – 2017-06-06 15:01:51