Việc triển khai Python của chính Cohen chỉ cần các chỉnh sửa nhỏ (bên dưới) để chạy độc lập.Đó là trong hai tập tin, bản sao mà tôi vướng bởi googling "kiên nhẫn difflib":
http://stuff.mit.edu/afs/athena/system/i386_deb50/os/usr/share/pyshared/bzrlib/patiencediff.py và http://stuff.mit.edu/afs/athena/system/i386_deb50/os/usr/share/pyshared/bzrlib/_patiencediff_py.py
Các tập tin đầu tiên có thể được chạy từ dòng lệnh xấp xỉ như diff. Thứ hai là việc triển khai Python của các vòng bên trong. (Tập tin duy nhất ?? Tập thể dục cho người đọc!) Trong bzrlib cũng có một C thực hiện các vòng bên trong.
đây (với sự giúp đỡ của chương trình riêng của mình) đều được các bản vá lỗi của tôi để làm cho họ chạy độc lập:
Sandy$ patiencediff.py --patience orig/patiencediff.py patiencediff.py
--- orig/patiencediff.py
+++ patiencediff.py
@@ -15,14 +15,20 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+try:
+ from bzrlib.lazy_import import lazy_import
+ lazy_import(globals(), """
+ import os
+ import sys
+ import time
+ import difflib
+ """)
+except:
+ import os
+ import sys
+ import time
+ import difflib
-from bzrlib.lazy_import import lazy_import
-lazy_import(globals(), """
-import os
-import sys
-import time
-import difflib
-""")
__all__ = ['PatienceSequenceMatcher', 'unified_diff', 'unified_diff_files']
@@ -135,11 +141,18 @@
PatienceSequenceMatcher_c as PatienceSequenceMatcher
)
except ImportError:
- from bzrlib._patiencediff_py import (
- unique_lcs_py as unique_lcs,
- recurse_matches_py as recurse_matches,
- PatienceSequenceMatcher_py as PatienceSequenceMatcher
- )
+ try:
+ from bzrlib._patiencediff_py import (
+ unique_lcs_py as unique_lcs,
+ recurse_matches_py as recurse_matches,
+ PatienceSequenceMatcher_py as PatienceSequenceMatcher
+ )
+ except ImportError:
+ from _patiencediff_py import (
+ unique_lcs_py as unique_lcs,
+ recurse_matches_py as recurse_matches,
+ PatienceSequenceMatcher_py as PatienceSequenceMatcher
+ )
def main(args):
Sandy$ patiencediff.py --patience orig/_patiencediff_py.py _patiencediff_py.py
--- orig/_patiencediff_py.py
+++ _patiencediff_py.py
@@ -15,11 +15,16 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+from __future__ import print_function
from bisect import bisect
import difflib
-from bzrlib.trace import mutter
+try:
+ from bzrlib.trace import mutter
+except:
+ import sys
+ def mutter(msg):
+ print (msg, file=sys.stderr)
__all__ = ['PatienceSequenceMatcher', 'unified_diff', 'unified_diff_files']
Sandy$
gì, tôi sử dụng git để chạy nó trên hai tập tin? điều đó có vẻ xấu. Nó không bao giờ xảy ra với tôi. Tôi thấy rằng điều này hoạt động khá tốt, và tôi chắc chắn sẽ sử dụng nó. Nhưng nhiều hệ thống không được cài đặt git ... –