SVN Log / diff对已删除目录中的文件

时间:2010-10-12 15:14:26

标签: svn websvn

在我的项目中,另一个开发人员重新组织了一些文件,现在我遇到了一些问题: - (我开始认为让webSVN能够显示这些差异会很好,现在我希望自己能够看到它们!

我知道'svn方式'是将删除视为父目录上的操作,但是我的问题因文件位于已删除的子目录中而更加复杂。

原始结构:

 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的范围。

当然必须有更好的方法吗?

2 个答案:

答案 0 :(得分:6)

svn diff有几种使用形式

如果他们是

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

当项目的目录结构发生变化时,它优于-r选项。试试这个:

svn diff  https://svnhost.localdomain/project1/conf/files@2 https://svnhost.localdomain/project1/conf/files@4

答案 1 :(得分:1)

为什么不从先前版本获取您关注的文件的副本,然后获取您想要解决的最新文件,然后使用众多开源差异程序... TortiseSVN(使它成为SVN仓库的用户界面,WinMerge等......

不要强迫使用CVN CLI进行差异化,请使用任何可用的工具。只要您可以访问以前的版本,这应该不是问题。