2010-10-12 115 views
3

在我的項目中,另一個開發者重組了一些文件,現在我遇到了一些問題,他們的差異:-(我開始認爲它會很高興讓webSVN能夠顯示這些差異,現在我只想自己能夠看到他們!SVN在已刪除目錄中的文件的日誌/差異

我知道'svn way'將刪除視爲父目錄上的操作,但我的問題的事實,文件是在一個子目錄,這已被刪除加劇

原來的結構:

conf/ 
     files/ 
      configfile1 
      configfile2 

事情是這樣的:

$ svn log -vr 5 
... 
D /conf/files 
A /conf/combined_configfile 

我想要得到的是以前在配置文件中引入改變的差異,在刪除之前發生。這樣的事情將是很好:

svn diff -r 2:4 conf/files/configfile1 
svn: 'conf/files' is not a working copy 
svn: 'conf/files' does not exist 

甚至:

svn diff -r 2:4 'conf/files' 
svn: 'conf/files' is not under version control 

或怎麼樣:

svn diff -r 2:4 'https://svnhost.localdomain/project1/conf/files' 
svn: '/proj1/!svn/bc/1343/conf/files' path not found 

好像讓這段歷史的唯一途徑是通過SVN操作在目錄中,當前存在於版本庫的頭版本中(在這種情況下爲conf/),大大拓寬了diff的範圍。

當然必須有更好的方法嗎?

回答

6

svn diff有幾種形式使用

之一,如果他們是

diff OLD-URL[@OLDREV] NEW-URL[@NEWREV] 

它比-r選項更好時,該項目的目錄結構發生變化。試試這個:

svn diff https://svnhost.localdomain/project1/conf/[email protected] https://svnhost.localdomain/project1/conf/[email protected] 
+0

太好了,謝謝!這實際上也適用於單獨的文件名,在試圖對我們的定製工具的其餘部分進行修改時,這更有希望:) – paulw1128 2010-10-13 08:25:49

+0

澄清一點:我試圖使用'svn diff -c N/path/to/working/copy @ N',但得到錯誤E155010:未找到節點'...'。看起來,如果你使用這種形式的'svn diff',你應該使用一個URL指向主要的倉庫,而不是工作副本。 – iboisver 2016-02-25 21:46:40

0

爲什麼不從之前的版本獲得你關心的文件的副本,然後獲得你想要的最新版本,然後利用衆多的開源差異程序... TortiseSVN(讓它成爲你的UI到SVN回購也是如此),WinMerge等...

不要覺得被迫使用CVN CLI進行差異化,可以使用任何可用的工具。只要您可以訪問以前的版本,這應該不成問題。