Wie bekomme ich Unterschiede zwischen allen Dateien in 2 Ordnern, die sich im Web befinden?


77

Deshalb möchte ich diesen Ordner vergleichen http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ mit dieser http://svn.boost.org/svn/boost/sandbox/boost/extension/ . Ich möchte als Ergebnis eine Diff-Datei erhalten. Diese Ordner stehen unter der Kontrolle von svn, aber ich würde eine Diff-Datei im Git-Stil bevorzugen (wie die hier gezeigte ), die ich ausprobiert habe, git diffaber für Webordner scheint dies nicht so zu funktionieren. Wie macht man dasselbe mit einem Befehl unter Linux?

Update: Wir hatten also eine tolle Antwort . Aber es funktioniert seltsam - es scheint mir, dass es zeigt, dass alle Dateien (dieselben Dateien) ihren gesamten Inhalt durch denselben Inhalt ersetzt haben (obwohl ich sicher weiß, dass überhaupt nur 3-4 Codezeilen geändert wurden) ...

Update 2: Um das zu erreichen, was ich wirklich brauchte (dif-Datei mit nur wirklich geänderten Zeilen, mit Git-Styling, unter Linux), gehen Sie wie folgt vor:

$ 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
Haha; Ich habe gerade bemerkt, dass du mit meinem Diff verbunden bist mit one shown here... muss zufällig sein
sehe

Antworten:


155

Sobald Sie die Quellbäume haben, z

diff -ENwbur repos1/ repos2/ 

Noch besser

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

und habe einen Riss in einem guten GUI-Tool :)

  • -Ewb ignoriert den Großteil der Leerzeichenänderungen
  • -N neue Dateien erkennen
  • -u vereinheitlicht
  • -r Rekurs

Also ... yep - liebte deine diff style, schickte einen vollständigen Diff-Patch auf deine + meine boost.extension an Jeremy ... (siehe dieses Post-Update für meine Art, es zu bekommen) ... Ich frage mich immer noch, wie ich so etwas machen soll eine Zeile =)
Rella

Nun, danke für die Annahme; Ich denke, meine ursprünglichen Anweisungen (Rev. 2) in diesem anderen Beitrag haben mein Geheimnis verborgen: Ich habe 'git svn clone ... svn .... / branch / v0.4 ' verwendet und nur lokal bearbeitet. Es wird dann einfach git diffoder git, format-patchje nachdem, wie viel Arbeit geleistet wurde
siehe

Ich wusste vorher nichts über kompare, genau das habe ich gesucht. Vielen Dank
Erin

2
Es wäre schön, einen Verweis hinzuzufügen, kompareda es sich um ein externes Paket handelt (zumindest auf meinem Ubuntu 16.04)
Gilad Mayani

1
Sie können Notepad ++ vollständig verwenden, wenn die Sprache auf "Diff" eingestellt ist. Es funktioniert wie ein Zauber (ohne Kompare)
Hybris95

4

Ihre URLs befinden sich nicht im selben Repository, daher können Sie dies nicht mit dem svn diffBefehl tun .

svn: 'http://svn.boost.org/svn/boost/sandbox/boost/extension' isn't in the same repository as 'http://cloudobserver.googlecode.com/svn'

Sie können dies auch tun, indem Sie jedes Repos mit exportieren svn exportund dann mit dem Befehl diff die beiden exportierten Verzeichnisse vergleichen.

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

Ich habe die letzte Zeile durch ersetzt git diff repos1 repos2 > file2.diffund es wurde informativer ... aber es scheint mir, dass alle Dateien (dieselben Dateien) alle Inhalte durch vorsichtig dieselben Inhalte ersetzt haben (obwohl ich sicher weiß, dass es nur 3 Codezeilen gab überhaupt geändert) ...
Rella
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.