2009-07-10 7 views
2

Ich möchte eine Zusammenfassung der Dateien in einem Baum, die auch in den anderen sind, die in der zweiten geändert wurden, erstellen.Kann ich `diff -r` verwenden, um mir nur die Dateien zu geben, die sich in einem der Bäume befinden, die sich in dem anderen geändert haben?

Der Anwendungsfall ist dies: Ich habe eine Produktverteilung, die Web-Content-Dateien enthält. Diese Dateien werden dann in ein mandantenspezifisches Projekt importiert und können von dort aus geändert werden. Ich möchte jetzt alle Dateien im kundenspezifischen Projekt sehen, die sich seit dem Import des Produkts geändert haben, damit ich das Produkt aktualisieren und die kundenspezifischen Änderungen beibehalten kann.

Ich denke, so etwas wie dies könnte jedoch

diff -r productDistribution/WebContent clientProject/WebContent 

arbeitet, gibt es eine Reihe von Dateien, die in dem Client-spezifischen Projekt sind, die nicht in der Produktverteilung ist, dass ich nicht besorgt bin mit in dieser Prozess. Im Wesentlichen möchte ich eine "äußere Verknüpfung" im SQL-Sprachgebrauch.

Idealerweise möchte ich in der Lage sein, einen Patch zu erstellen, der alle clientspezifischen Änderungen enthält. Dann kann ich einfach die neuen Produktdateien überlagern und den Patch anwenden, und ich sollte alles einstellen.

Irgendwelche Ideen?

Antwort

2

standardmäßig diff druckt nur eine einzige Zeile für jede Datei, die in nur einem der Bäume ist, so ist es einfach, diese zu filtern:

diff -r productDistribution/WebContent clientProject/WebContent | \ 
    grep -v 'Only in clientProject' 
+0

ich aber davon. Ich hatte gehofft, dass es einen Weg gibt, es ohne diese Nachbearbeitung zu machen, aber wenn nicht, dann beantwortet das meine Frage. – pkaeding

+0

Ich glaube nicht, dass die Nachbearbeitung vermeidbar ist. Zumindest die Manpage für Diff, die ich betrachte, enthält keine Option, Dateien ohne ein Gegenstück zu ignorieren. –

Verwandte Themen