2010-10-12 137 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进行差异化,可以使用任何可用的工具。只要您可以访问以前的版本,这应该不成问题。