Linux 系統上的視覺化比較與合併工具 Meld

發表於2017-09-02

我們已經講過 Linux 中一些基於命令列的比較和合並工具,再來講解該系統的一些視覺化的比較與合併工具也很合理。首要的原因是,不是每個人都習慣使用命令列,而且對於某些人來說,基於命令列的比較工具可能很難學習和理解。

因此,我們將會推出關於視覺化工具 Meld 的系列文章。

在跳到安裝和介紹部分前,我需要說明這篇教程裡所有的指令和用例是都是可用的,而且它們已經在 Ubuntu 14.04 中測試過了,我們使用的 Meld 版本是 3.14.2。

關於 Meld

Meld 主要是一個視覺化的比較和合並的工具,目標人群是開發者(當然,我們將要講到的其它部分也會考慮到終端使用者)。這個工具同時支援雙向和三向的比較,不僅僅是比較檔案,還可以比較目錄,以及版本控制的專案。

“Meld 可以幫你回顧程式碼改動,理解補丁,”其官網如是說。“它甚至可以告知你如果你不進行合併將會發生什麼事情。”該工具使用 GPL v2 協議進行授權。

安裝 Meld

如果你用的是 Ubuntu 或者其它基於 Debian 的 Linux 分支,你可以用以下命令下載安裝 Meld:

或者你也可以用系統自帶的包管理軟體下載這個工具。比如在 Ubuntu 上,你可以用 Ubuntu 軟體中心(Ubuntu Software Center),或者用 Ubuntu 軟體,它從 Ubuntu 16.04 版本開始取代了 Ubuntu 軟體中心。

當然,Ubuntu 官方倉庫裡的 Meld 版本很有可能比較陳舊。因此如果你想要用更新的版本,你可以在這裡下載軟體包。如果你要用這個方法,你要做的就是解壓下載好的軟體包,然後執行 bin 目錄下的 meld 程式。

以下是 Meld 依賴的軟體,僅供參考:

  • Python 2.7 (Python 3.3 開發版)
  • GTK+ 3.14
  • GLib 2.36
  • PyGObject 3.14
  • GtkSourceView 3.14
  • pycairo

使用 Meld

裝好了軟體,就可以看到類似這樣的畫面:

Meld started

有三個選項:比較檔案(File comparison),比較目錄(Directory comparison)以及版本控制檢視(Version control view)。

點選“比較檔案”選項,就可以選擇需要比較的檔案:

Meld file comparison

就像上面的截圖那樣明白,Meld 也可以進行三向比較,但是在這一系列文章的第一部分,我們只會講更常用的雙向比較。

接著,選擇你想要比較的檔案,點選“比較”(Compare)按鈕。軟體會在兩邊分別開啟兩個檔案,高亮不同的行(以及不同的部分)。

Compare files in Meld

兩個檔案的不同之處在第二行,差別在於 file2 檔案的第二行多了一個 3。你看到的黑色箭頭是用來進行合併或修改的操作的。該例中,向右的箭頭將會把 file2 檔案的第二行改成檔案 file1 中對應行的內容。左向箭頭做的事情相反。

做完修改後,按下 Ctrl+s 來儲存。

這個簡單的例子,讓你知道 Meld 的基本用法。讓我們看一看稍微複雜一點的比較:

Meld advanced file comparison

在討論這些變化前,這裡提一下, Meld 的介面中有幾個區域,可以給出檔案之間的差異,讓概況變得直觀。這裡特別需要注意視窗的左右兩邊垂直的欄。比如下面這個截圖:

Visual Comparison

仔細觀察,圖中的這個欄包含幾個不同顏色的區塊。這些區塊是用來讓你對檔案之間的差異有個大概的瞭解。“每一個著色的區塊表示一個部分,這個部分可能是插入、刪除、修改或者有差別的,取決於區塊所用的顏色。”官方文件是這樣說的。

現在,讓我們回到我們之前討論的例子中。接下來的截圖展示了用 Meld 理解檔案的改動是很簡單的(以及合併這些改動):

File changes visualized in Meld

Meld Example 2

Meld Example 3

接著,我們滑動檔案,從一個改動跳到另一個。但是,當要比較的檔案很大時,這會耗一點時間,當你想要滑動檔案跳到一個改動的位置時,也會變得很困難。如果是這種情況的話,你可以用工具欄的橙色箭頭,就在編輯區域的上方:

Go to next change in Meld

這些是你使用 Meld 時做的一般性的事情:可以用標準的 Ctrl+f 組合鍵在編輯區域內進行查詢,按 F11 鍵讓軟體進入全屏模式,再按 Ctrl+r 來重新整理(通常在所有要比較的檔案改變的時候使用)。

以下是 Meld 官方網站宣傳的重要特性:

  • 檔案和目錄的雙向及三向比較
  • 輸入即更新檔案的比較
  • 自動合併模式,按塊改動的動作讓合併更加簡單
  • 視覺化讓比較檔案更簡單
  • 支援 Git,Bazaar,Mercurial,Subversion 等等

注意還不僅僅只有以上所列的。網站上有個專門的特性頁面,裡面提到了 Meld 提供的所有特性。這個頁面列出的所有特性分為幾個部分,以該軟體是用來做檔案比較、目錄比較、版本控制還是處於合併模式下為基礎進行劃分。

和其它軟體相似,有些事情 Meld 做不到。官方網站上列出了其中的一部分:“當 Meld 展示檔案之間的差異時,它同時顯示兩個檔案,看起來就像在普通的文字編輯器中。它不會新增額外的行,讓左右兩邊檔案的特殊改動處於同樣的行數。沒有做這個事情的選項。”

總結

我們剛剛瞭解到的不過是皮毛,因為 Meld 還能做很多事情。考慮到這是教程系列的第一部分,這也挺不錯的。這僅僅是讓你瞭解 Meld 的作用,你可以配置它,忽略一些特定型別的改動,讓它移動,複製或者刪除檔案之間的個別差異,也可以從命令列啟動它。在即將推出的系列教程中,我們將會講述所有這些重要功能。

相關文章