所以我想比较这个文件夹http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/
和这个文件夹http://svn.boost.org/svn/boost/sandbox/boost/extension/
。我希望得到一个diff文件作为结果。这些文件夹是在svn控制下,但我更喜欢git风格的diff文件(如这里所示),我尝试了git diff
,但它似乎不能为web文件夹工作。那么如何在Linux上用一个命令完成同样的事情呢?
更新: 所以我们得到了一个很好的答案。但它的工作方式很奇怪-在我看来,它显示所有文件(相同的文件)的所有内容都被替换为非常相同的内容(虽然我知道肯定只有3-4行代码改变了)…
更新2: 为了实现我真正需要的(dif文件只有真正改变的行,在Linux上使用git样式),执行:
$ svn export http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ repos2 --native-eol CRLF
$ svn export http://svn.boost.org/svn/boost/sandbox/boost/extension/ repos --native-eol CRLF
$ git diff repos repos2 > fileWithReadableDiff.diff
一旦你有了源代码树,例如
diff -ENwbur repos1/ repos2/
更好diff -ENwbur repos1/ repos2/ | kompare -o -
并在一个好的GUI工具中尝试一下:)
- -Ewb忽略空白更改
- -N检测新文件
- - u统一
- - r递归
您的url不在同一个存储库中,因此您不能使用svn diff
命令执行此操作。
svn: 'http://svn.boost.org/svn/boost/sandbox/boost/extension' isn't in the same repository as 'http://cloudobserver.googlecode.com/svn'
另一种方法是使用svn export
导出每个repos,然后使用diff命令比较导出的两个目录。
// Export repositories
svn export http://svn.boost.org/svn/boost/sandbox/boost/extension/ repos1
svn export http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ repos2
// Compare exported directories
diff repos1 repos2 > file.diff