38 Stimmen

git difftool, um einen Verzeichnisvergleich durchzuführen?

Ist es möglich, den Befehl git difftool dazu zu bringen, einen Verzeichnisvergleich zwischen den geänderten Dateien und den bereitgestellten/überprüften Dateien durchzuführen?

Im Idealfall werden also nur 2 Dateien angezeigt, wenn sie sich geändert haben, aber im Rahmen eines Verzeichnisvergleichs.

Ich habe Beiträge darüber gelesen, wie man Git dazu bringt, alle Dateidifferenzen parallel zu liefern, so dass Tools wie BeyondCompare alle die Unterschiede in Tabs aber damit bin ich nicht zufrieden!

Man könnte eine Kopie der geänderten Dateien aus den bereitgestellten/eingecheckten Dateien in einen temporären Ordner ziehen und diesen dann öffnen. Ist das die einzige Möglichkeit?

55voto

VonC Punkte 1117238

Update Juni 2012 (zweieinhalb Jahre später):

Dies (Vergleich von Verzeichnissen statt von Dateien) scheint bald verfügbar zu sein:
Siehe [ANNOUNCE] Git 1.7.11.rc1 :

" git difftool " lernte die " --dir-diff ", um externe Diff-Tools zu erzeugen, die zwei Verzeichnishierarchien vergleichen nacheinander, nachdem zwei temporäre Verzeichnisse angelegt wurden, anstatt eine Instanz des externen Tools einmal pro Dateipaar auszuführen .

Siehe " Aufnäher difftool : unterrichten difftool zur Behandlung von Verzeichnisunterschieden "


Ursprüngliche Antwort (Januar 2010)

Man könnte eine Kopie der geänderten Dateien aus den bereitgestellten/eingekauften Dateien in einen temporären Ordner ziehen und diesen dann öffnen. Ist das die einzige Möglichkeit?

Im Grunde genommen ja:

Ihr Difftool-Skript würde das tun:

  • 2 temporäre Verzeichnisse erstellen
  • definiert sich als ein Diff-Tool
  • git diff aufrufen
    • der sich dann selbst aufruft, um die Datei zu diff
    • In diesem Modus kopiert das gleiche Skript für jede Datei nur die beiden Versionen in die beiden temporären Verzeichnisse
  • Rufen Sie dann Vergleichstools (wie beyondCompare oder WinMerge) für die beiden temporären Verzeichnisse auf

Ein erstes Beispiel finden Sie in diese Frage .

2voto

Rudie Punkte 49458

Ich benutze immer --dirstat=files :

rudie@devver:virenze$ git diff --dirstat=files
   4.1% modules/custom/virenze_conversations/
   7.0% modules/custom/virenze_crs/
   8.3% modules/custom/

das heißt, ich habe die Verzeichnisse virenze_conversations y virenze_crs en custom . (Ich weiß nicht, was die Prozentsätze bedeuten...)

Sie können wahrscheinlich alle normalen diff Optionen: --cached Name der Niederlassung usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X