以下是我們遇到的問題:在SVN中,你怎麼知道哪個分支被修改過?
開發人員將在他的沙箱中檢出外線。我們創建了一個切換腳本來將某些文件切換到正在進行更改的分支。有時切換腳本似乎失敗,開發人員檢查他的更改。這些更改顯示在修訂日誌中,但我們無法弄清楚他們是否簽入了分支或主幹。他們似乎迷失在開發者的盒子裏。這會導致大量的來回切換,並且通常只需稍作修改即可重新編碼。
所以我的問題是,我們怎麼能告訴哪個分支修訂被檢入?
以下是我們遇到的問題:在SVN中,你怎麼知道哪個分支被修改過?
開發人員將在他的沙箱中檢出外線。我們創建了一個切換腳本來將某些文件切換到正在進行更改的分支。有時切換腳本似乎失敗,開發人員檢查他的更改。這些更改顯示在修訂日誌中,但我們無法弄清楚他們是否簽入了分支或主幹。他們似乎迷失在開發者的盒子裏。這會導致大量的來回切換,並且通常只需稍作修改即可重新編碼。
所以我的問題是,我們怎麼能告訴哪個分支修訂被檢入?
如果不使用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
------------------------------------------------------------------------
使用烏龜,我拉起了我修改程序的日誌。
我強調了動作和路徑。該路徑顯示了在哪個分支上完全修改了哪些內容。
謝謝。這很有幫助,但是我的一半開發人員都使用Mac,所以此解決方案對他們無效。 –
修訂爲每棵樹,所以首先你需要獲得「變化」的修訂
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
不被視爲一個分支。
這確實爲我提供了我正在查找的信息,但是我無法讓它只用於一個文件。 –
@DougNoel SVN提交不是單個文件提交,它們是「整棵樹」提交。所以,如果你有一個文件,第一步是確定它在哪個提交上次被修改,這可以由'svn info filename'確定。如果您只想爲該文件分支,請爲該文件篩選差異信息。你永遠不知道,但兩個副本_could_已經在兩個不同的分支上籤入了相同的提交。 –
這解決了我的問題。謝謝。 –