2011-12-24 53 views
-1

我有一個包含svn統一區別的字符串。我的PyGTK應用程序需要向用戶顯示這個差異,我想像其他差異工具那樣渲染它,或者至少讓它着色。用Python渲染統一區別

你有什麼建議,外部工具,庫,自定義實現...?我喜歡http://kafka.fr.free.fr/diff2html/,但我更喜歡使用一些庫或者類似的東西,所以用戶不需要安裝第三方應用程序。

我希望以後也可以將它用於git和mercurial diff。

+0

您是否研究過標準['difflib'](http://docs.python.org/library/difflib.html)模塊提供的功能? – 2011-12-24 18:38:36

+0

是的。如果你的意思是difflib.HtmlDiff它看起來不錯,但我不知道如何將它與統一差異相結合? – umpirsky 2011-12-24 18:41:14

回答

4

你可以使用difflib產生差異列表,併爲pygtkscintilla語法高亮,線路編號,代碼摺疊等

如果你只是想語法高亮(而不是通過所提供的所有編輯器功能pygtkscintilla),那麼你也可以看看pygments

+0

謝謝。 Pygments看起來像殺手包。我現在正在嘗試。在安裝後獲取ImportError,這很奇怪,因爲安裝了軟件包,我可以從Eclipse導航到源代碼。 Pygments正是我所期待的,我希望我能解決這個錯誤。 – umpirsky 2011-12-24 19:37:13

+0

由於某種原因,它安裝在/usr/local/lib/python2.7/dist-packages而不是/ usr/local/lib中......任何想法? – umpirsky 2011-12-24 20:14:34

+0

你用什麼命令來安裝它?我只是使用'sudo /usr/local/bin/python2.7 setup.py install'來測試它來自[這裏](http://pypi.python.org/pypi/Pygments)的源碼tarball,並且它工作正常精細。 – ekhumoro 2011-12-24 20:36:01

0

difflib.HtmlDiff班提供這樣做的設施。但是,HtmlDiff不是以統一的差異文件開始,而是希望您傳遞完整的「之前」和「之後」文件。這些文件很容易通過svn/git/mercurial命令獲得,而無需使用這些VCS的「差異」功能。

+0

是的,但我想這將比原生統一差異更慢,如果你想完全差異給定的修訂版(我的情況),因爲在一個修訂版中可以更改許多文件,提取所有文件可能需要大量時間。 Native diff一步完成此操作。但是你給了我想法,也許我可以通過點播文件來區分文件,但仍然不知道我的應用程序將如何工作:)謝謝。 – umpirsky 2011-12-24 18:53:08

-1

GtkSourceView是替代pygtk的TextView的替代品,它可以語法突出顯示差異文件,包括統一差異。