Ich habe zwei fast identische Sourcecode-Bäume, aber keinen Zugriff auf das Quellcode-Repository, so dass ich mit Release-Paketen, die auch Testberichte, Dokumentation, Binärdateien usw. enthalten, festgefahren bin.
Der Befehl diff
unterstützt nur --exclude
, aber ich möchte etwas wie diff -wbur --include='*.c,*.h' tree1 tree2
Ich weiß, dass diese Frage ist etwas verwandt, aber adressiert mein Problem nicht wirklich.
Bonuspunkte zum Ignorieren von Änderungsblöcken, die sich vollständig in C-Kommentaren befinden:)
Ich würde alles ausschließen, was nicht mit .c oder .h übereinstimmt. Es bedeutet also, dass nur .c und .h Dateien enthalten sind:
%Vor%Für mich ist das der beste Weg, weil Sie nur diff
verwenden Sie können alle auszuschließenden Dateien in eine temporäre Datei schreiben und sie an das Argument -X
des diff übergeben.
Oder einfacher (funktioniert in Bash):
%Vor%Sie können mehrere Namensargumente verwenden, wenn Sie längere Dateinamenserweiterungen haben:
%Vor%Ich habe eine einfachere Lösung vorgeschlagen als Unterschiede zu finden, hier ist der Thread: Ссылка
Die Idee ist, eine neue Option bereitzustellen, die diff anordnet, um Dateien zu analysieren, die mit einer Regex übereinstimmen:
diff -Nurp --only "*.[hc]" source/ source-new/
Hier finden Sie die Anweisungen zum Patchen von Diffutils
Klonen Sie das Repo
git clone git://git.savannah.gnu.org/diffutils.git
Führen Sie bootstrap.sh
im Verzeichnis diffutils aus und lösen Sie die Abhängigkeiten auf, bis das Skript ./cofigure erstellt wird
Laden Sie den Patch vom obigen Link herunter
Übernehmen Sie es
git apply <PATCHFILE>
Konfigurieren und kompilieren
%Code%
./configure
Dies erzeugt das gepatchte Diff in src / diff
Prost