Ich verwende ein Wrapper-Skript python
, um Dateien zusammenzuführen (siehe unten). Dies ist eine vereinfachte Version dessen, was ich verwende, um meine ~/.vim
Verzeichnisse und dergleichen zusammenzuführen.
Es sollte in Python 2 und 3 funktionieren; aber wahrscheinlich nicht in sehr alten Versionen von Python, wie sie mit CentOS und einigen anderen Distributionen ausgeliefert werden.
Beachten Sie, dass einige Überprüfungen (z. B. bei Binärdateien oder bei identischen Dateien) nicht sehr schnell sind (die gesamte Datei wird gelesen). Sie können sie entfernen, wenn Sie möchten.
Es wird auch nicht gemeldet, ob a nur in einem der Verzeichnisse vorhanden ist ...
#!/usr/bin/env python
from __future__ import print_function
import hashlib, os, subprocess, sys
if len(sys.argv) < 3:
print('Usage: {} dir1 dir2'.format(sys.argv[0]))
sys.exit(1)
dir1 = os.path.realpath(sys.argv[1])
dir2 = os.path.realpath(sys.argv[2])
for root, dirs, files in os.walk(dir1):
for f in files:
f1 = '{}/{}'.format(root, f)
f2 = f1.replace(dir1, dir2, 1)
# Don't diff files over 1MiB
if os.stat(f1).st_size > 1048576 or os.stat(f2).st_size > 1048576: continue
# Check if files are the same; in which case a diff is useless
h1 = hashlib.sha256(open(f1, 'rb').read()).hexdigest()
h2 = hashlib.sha256(open(f2, 'rb').read()).hexdigest()
if h1 == h2: continue
# Don't diff binary files
if open(f1, 'rb').read().find(b'\000') >= 0: continue
subprocess.call(['vimdiff', f1, f2])