2012-08-31 51 views
1

以下是我們遇到的問題:在SVN中,你怎麼知道哪個分支被修改過?

開發人員將在他的沙箱中檢出外線。我們創建了一個切換腳本來將某些文件切換到正在進行更改的分支。有時切換腳本似乎失敗,開發人員檢查他的更改。這些更改顯示在修訂日誌中,但我們無法弄清楚他們是否簽入了分支或主幹。他們似乎迷失在開發者的盒子裏。這會導致大量的來回切換,並且通常只需稍作修改即可重新編碼。

所以我的問題是,我們怎麼能告訴哪個分支修訂被檢入?

回答

1

如果不使用TortoiseSVN,你可以得到一個詳細的svn日誌:

svn log --verbose -r HEAD 

這將顯示所有文件的提交(就像@Gilbert勒布朗的回答)svn的位置。下面的示例輸出。如果您需要不同的東西,請將HEAD更改爲特定修訂版。

------------------------------------------------------------------------ 
r556 | USER | 2012-08-30 13:37:35 -0500 (Thu, 30 Aug 2012) | 1 line 
Changed paths: 
    M /trunk/Path/File.cs 

Commit Comment 
------------------------------------------------------------------------ 
+0

這解決了我的問題。謝謝。 –

2

使用烏龜,我拉起了我修改程序的日誌。

Log messages

我強調了動作和路徑。該路徑顯示了在哪個分支上完全修改了哪些內容。

+0

謝謝。這很有幫助,但是我的一半開發人員都使用Mac,所以此解決方案對他們無效。 –

1

修訂爲每棵樹,所以首先你需要獲得「變化」的修訂

svn diff -r <start revision>:<end revision> --summarize <root svn URL> 

這可能會產生

分行實現爲目錄輸出如

A  file:///home/xxx/svn/yyy/trunk/src/main/java/com/proj/App.java 
A  file:///home/xxx/svn/yyy/trunk/src/main/java/com/proj 
A  file:///home/xxx/svn/yyy/trunk/src/main/java/com 
A  file:///home/xx/svn/yyy/trunk/src/main/java 
A  file:///home/xxx/svn/yyy/trunk/src/main 
A  file:///home/xxx/svn/yyy/trunk/src 
A  file:///home/xxx/svn/yyy/trunk/pom.xml 
M  file:///home/xxx/svn/yyy/trunk 
在SVN中,那麼你需要確定項目的根,以及哪些直接的子目錄被考慮(按照慣例)「分支」

在上面

file:///home/xxx/svn/yyy/ 

的例子被認爲是該項目的「根」的網址,讓subracting從

file:///home/xxx/svn/yyy/trunk 

告訴我,「分支」這是檢查在爲

trunk 

注意其他項目進行了檢查在

trunk/src/main/java/com 

但這就是不是的一個分支,通過我的約定。由於什麼是分支的決定是傳統,這最後確定哪些分支受到影響需要知道您的特定SVN設置。在我的情況

branches/branchA 

被認爲是我自己的一個分支(我的項目),但

branches/branchA/src 

不被視爲一個分支。

+0

這確實爲我提供了我正在查找的信息,但是我無法讓它只用於一個文件。 –

+1

@DougNoel SVN提交不是單個文件提交,它們是「整棵樹」提交。所以,如果你有一個文件,第一步是確定它在哪個提交上次被修改,這可以由'svn info filename'確定。如果您只想爲該文件分支,請爲該文件篩選差異信息。你永遠不知道,但兩個副本_could_已經在兩個不同的分支上籤入了相同的提交。 –

相關問題