如何获取网络上2个文件夹内的所有文件之间的差异?


77

所以我想将此文件夹 http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ 进行比较http://svn.boost.org/svn/boost/sandbox/boost/extension/。我想得到一个差异文件。这些文件夹在svn的控制下,但我更喜欢git风格的diff文件(如此处所示),git diff但似乎不适用于Web文件夹。那么如何在Linux上用一个命令来做同样的事情呢?

更新: 所以我们有了一个很好的答案。但这很奇怪-在我看来,这表明所有文件(相同文件)的全部内容都替换为非常相同的内容(尽管我确定只有3-4条代码行被完全更改)...

更新2: 要实现我真正需要的功能(在Linux上具有git样式的仅具有真正更改的行的dif文件):

$ 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

2
哈哈; 我刚刚注意到您与我的差异存在关联one shown here... wotta巧合
-sehe

Answers:


155

一旦有了源代码树,例如

diff -ENwbur repos1/ repos2/ 

更好

diff -ENwbur repos1/ repos2/  | kompare -o -

并在一个好的gui工具中破解它:)

  • -EWB忽略大部分空白更改
  • -N检测新文件
  • -u统一
  • -r递归

所以...是的-爱你diff style,在你的+ mine boost.extension上发送了完整的差异补丁给杰里米...(请参阅此更新以了解我的获取方式)...我仍然想知道如何使用一行=)
Rella

好,谢谢您的接受;我猜我在另一篇文章中的原始说明(第2版)隐藏了我的秘密:我使用了'git svn clone ... svn .... / branches / v0.4 ',只是在本地进行了编辑。然后,根据完成的工作量,它就会变成简单的git diff或gitformat-patch
sehe

以前不知道kompare,这正是我想要的。谢谢
艾琳2016年

2
最好添加一个引用,kompare因为它是一个外部软件包(至少在我的Ubuntu 16.04上)
gilad mayani

1
您完全可以将notepad ++与“ Diff”上的语言一起使用,它的工作原理就像一种魅力(无需
kompare

4

您的网址不在同一个存储库中,因此您无法使用该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,然后使用diff命令比较导出的2个目录。

// 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

我用替换了最后一行,git diff repos1 repos2 > file2.diff它提供了更多信息...但是在我看来,这表明所有文件(相同文件)的所有包装内容都替换为谨慎的相同内容(尽管我确定只有3条代码行)完全改变了)...
Rella
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.