मैं python
फ़ाइलों को मर्ज करने के लिए एक रैपर स्क्रिप्ट का उपयोग करता हूं (नीचे देखें)। यह एक सरल संस्करण है जो मैं अपने ~/.vim
डायर और इस तरह के विलय के लिए उपयोग करता हूं ।
इसे पायथन 2 और 3 में काम करना चाहिए; लेकिन शायद सेंटोस और कुछ अन्य डिस्ट्रो के साथ पायथन के बहुत पुराने संस्करणों में नहीं।
ध्यान रखें कि कुछ जांचें (जैसे कि बाइनरी फ़ाइलों के लिए, या यदि फ़ाइलें समान हैं) बहुत तेज़ नहीं हैं (यह पूरी फ़ाइल पढ़ता है); यदि आप चाहें तो आप उन्हें निकाल सकते हैं।
यह भी रिपोर्ट नहीं करता है कि क्या केवल एक निर्देशिका में मौजूद है ...
#!/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])