手冊

檢視差異

專案開發中最常見的需求之一是查看變更了什麼。您可能想要查看同一檔案的兩個修訂版本之間的差異,或者兩個不同檔案之間的差異。TortoiseSVN 提供了一個名為 TortoiseMerge 的內建工具,用於檢視文字檔案的差異。對於檢視圖像檔案的差異,TortoiseSVN 也提供了一個名為 TortoiseIDiff 的工具。當然,如果您願意,可以使用您自己喜歡的差異比較程式。

檔案差異

本機變更

如果您想查看在工作副本中所做的變更,只需使用檔案總管的右鍵選單,然後選擇 TortoiseSVNDiff

與另一個分支/標籤的差異

如果您想查看在主幹 (如果您在分支上工作) 或特定分支 (如果您在主幹上工作) 上變更了什麼,可以使用檔案總管的右鍵選單。只需按住 Shift 鍵,同時在檔案上按一下滑鼠右鍵。然後選擇 TortoiseSVN與 URL 比較差異。在接下來的對話方塊中,指定儲存庫中的 URL,您想要將本機檔案與該 URL 進行比較。

您也可以使用儲存庫瀏覽器並選擇兩個樹狀結構進行差異比較,例如兩個標籤,或一個分支/標籤和主幹。那裡的右鍵選單允許您使用 比較修訂版本 來比較它們。請在名為「比較資料夾」的章節中閱讀更多資訊。

與先前修訂版本的差異

如果您想查看特定修訂版本與您的工作副本之間的差異,請使用修訂記錄對話方塊,選取感興趣的修訂版本,然後從右鍵選單中選取 與工作副本比較

如果您想查看上次提交的修訂版本與您的工作副本之間的差異,假設工作副本尚未修改,只需在檔案上按一下滑鼠右鍵。然後選擇 TortoiseSVN與先前版本比較差異。這將在上次提交日期 (記錄在您的工作副本中) 之前的修訂版本與工作 BASE 之間執行差異比較。這會顯示對該檔案所做的最後變更,使其達到您現在在工作副本中看到的狀態。它不會顯示比您的工作副本更新的變更。

兩個先前修訂版本之間的差異

如果您想查看已提交的兩個修訂版本之間的差異,請使用修訂記錄對話方塊,然後選取您要比較的兩個修訂版本 (使用常用的 Ctrl 修飾鍵)。然後從右鍵選單中選取 比較修訂版本

如果您從資料夾的修訂記錄中執行此操作,則會出現「比較修訂版本」對話方塊,其中顯示該資料夾中已變更檔案的清單。請在名為「比較資料夾」的章節中閱讀更多資訊。

在一次提交中進行的所有變更

如果您想在一個檢視中查看特定修訂版本中對所有檔案所做的變更,可以使用 Unified-Diff 輸出 (GNU patch 格式)。這僅顯示差異以及一些上下文行。它比視覺檔案比較更難以閱讀,但會一起顯示所有變更。從修訂記錄對話方塊中選取感興趣的修訂版本,然後從右鍵選單中選取 以 Unified-Diff 格式顯示差異

檔案之間的差異

如果您想查看兩個不同檔案之間的差異,可以直接在檔案總管中執行此操作,方法是選取兩個檔案 (使用常用的 Ctrl 修飾鍵)。然後從檔案總管的右鍵選單中選取 TortoiseSVNDiff

如果要比較的檔案不在同一個資料夾中,請使用命令 TortoiseSVN稍後比較差異 來標記第一個檔案以進行差異比較,然後瀏覽到第二個檔案並使用 TortoiseSVN與 "path/of/marked/file" 比較差異。若要移除標記的檔案,請再次使用命令 TortoiseSVN稍後比較差異,但在按一下它時按住 Ctrl 修飾鍵。

WC 檔案/資料夾與 URL 之間的差異

如果您想查看工作副本中的檔案與任何 Subversion 儲存庫中的檔案之間的差異,可以直接在檔案總管中執行此操作,方法是選取檔案,然後按住 Shift 鍵,同時按一下滑鼠右鍵以取得右鍵選單。選取 TortoiseSVN與 URL 比較差異。您可以對工作副本資料夾執行相同的操作。TortoiseMerge 以與顯示 patch 檔案相同的方式顯示這些差異 - 已變更檔案的清單,您可以一次檢視一個檔案。

包含 Blame 資訊的差異

如果您不僅想查看差異,還想查看進行變更的作者、修訂版本和日期,您可以從修訂記錄對話方塊中結合差異和 Blame 報告。請閱讀名為「Blame 差異」的章節以取得更多詳細資訊。

資料夾之間的差異

TortoiseSVN 隨附的內建工具不支援檢視目錄階層之間的差異。但是,如果您有支援該功能的外部工具,則可以使用該工具來代替。在名為「外部差異/合併工具」的章節中,我們告訴您一些我們使用過的工具。

如果您已設定協力廠商差異比較工具,則可以在選取「Diff」命令時使用 Shift 鍵來使用替代工具。請閱讀名為「外部程式設定」的章節,以瞭解有關設定其他差異比較工具的資訊。

行尾符號和空白字元選項

有時在專案的生命週期中,您可能會將行尾符號從 CRLF 變更為 LF,或者您可能會變更某個區段的縮排。不幸的是,即使程式碼的含義沒有變更,這也會將大量行標記為已變更。此處的選項將有助於在比較和套用差異時管理這些變更。您將在 合併Blame 對話方塊中,以及 TortoiseMerge 的設定中看到這些設定。

忽略行尾符號 排除僅因行尾符號樣式差異而造成的變更。

比較空白字元 將縮排和行內空白字元的所有變更都包含為新增/移除的行。

忽略空白字元變更 排除僅因空白字元的數量或類型變更而造成的變更,例如變更縮排或將 Tab 變更為空格。在之前沒有空白字元的地方新增空白字元,或完全移除空白字元仍然會顯示為變更。

忽略所有空白字元 排除所有僅限空白字元的變更。

當然,任何內容已變更的行始終包含在差異中。

比較資料夾

圖 4.29. 「比較修訂版本」對話方塊

The Compare Revisions Dialog


當您在儲存庫瀏覽器中選取兩個樹狀結構,或在記錄對話方塊中選取資料夾的兩個修訂版本時,您可以 右鍵選單比較修訂版本

此對話方塊會顯示所有已變更檔案的清單,並允許您使用右鍵選單個別比較或 Blame 它們。

您可以匯出變更樹狀結構,如果您需要將專案樹狀結構傳送給其他人,但僅包含已變更的檔案,這會很有用。此操作僅適用於選取的檔案,因此您需要選取感興趣的檔案 - 通常這表示所有檔案 - 然後 右鍵選單匯出選取項目至...。系統會提示您輸入儲存變更樹狀結構的位置。

您也可以使用 右鍵選單將選取檔案清單儲存至... 將已變更檔案的清單匯出到文字檔案。

如果您想匯出檔案清單以及動作 (已修改、已新增、已刪除),您可以使用 右鍵選單複製選取項目到剪貼簿 來執行此操作。

頂部的按鈕可讓您變更比較方向。您可以顯示從 A 變更為 B 所需的變更,或者如果您願意,也可以顯示從 B 變更為 A 所需的變更。

帶有修訂版本號碼的按鈕可用於變更為不同的修訂版本範圍。當您變更範圍時,兩個修訂版本之間不同的項目清單將自動更新。

如果檔案名稱清單非常長,您可以使用搜尋方塊將清單縮減為包含特定文字的檔案名稱。請注意,使用的是簡單的文字搜尋,因此如果您想將清單限制為 C 原始程式碼檔案,則應輸入 .c 而不是 *.c

使用 TortoiseIDiff 比較圖像差異

有許多工具可用於比較文字檔案的差異,包括我們自己的 TortoiseMerge,但我們經常發現自己也想查看圖像檔案的變更方式。這就是我們建立 TortoiseIDiff 的原因。

圖 4.30. 圖像差異檢視器

The image difference viewer


TortoiseSVNDiff 用於任何常見的圖像檔案格式都將啟動 TortoiseIDiff 以顯示圖像差異。預設情況下,圖像並排顯示,但您可以使用「檢視」選單或工具列切換為上下檢視,或者如果您願意,可以覆疊圖像並假裝您正在使用燈箱。

當然,您也可以放大和縮小以及平移圖像。您也可以透過按住滑鼠左鍵拖曳圖像來簡單地平移圖像。如果您選取 連結圖像 選項,則兩個圖像上的平移控制項 (捲軸、滑鼠滾輪) 將會連結在一起。

圖像資訊方塊會顯示有關圖像檔案的詳細資訊,例如像素大小、解析度和色彩深度。如果此方塊妨礙了您,請使用 檢視圖像資訊 將其隱藏。如果您將滑鼠游標停留在圖像標題列上方,則可以在工具提示中取得相同的資訊。

當圖像覆疊時,圖像的相對強度 (Alpha 混合) 由左側的滑桿控制項控制。您可以按一下滑桿中的任何位置以直接設定混合,也可以拖曳滑桿以互動方式變更混合。Ctrl+Shift-滾輪 可變更混合。

滑桿上方的按鈕可在 0% 和 100% 混合之間切換,如果您按兩下該按鈕,則混合會每秒自動切換一次,直到您再次按一下該按鈕。這在尋找多個小變更時很有用。

有時您想看到差異而不是混合。您可能有印刷電路板的兩個修訂版本的圖像檔案,並想查看哪些走線已變更。如果您停用 Alpha 混合模式,則差異將顯示為像素色彩值的 互斥或。未變更的區域將是純白色,而變更將是彩色的。

比較 Office 文件差異

當您要比較非文字文件時,通常必須使用用於建立文件的軟體,因為它瞭解檔案格式。對於常用的 Microsoft Office 和 Open Office 套件,實際上有一些支援檢視差異的功能,TortoiseSVN 包含腳本,可在您比較具有已知檔案副檔名的檔案時,以正確的設定叫用這些功能。您可以檢查支援哪些檔案副檔名,並透過前往 TortoiseSVN設定 並按一下 進階外部程式 區段來新增您自己的副檔名。

Office 2010 的問題

如果您安裝了 Click-to-Run 版本的 Office 2010,並且您嘗試比較文件,則可能會收到來自 Windows Script Host 的錯誤訊息,如下所示:ActiveX component can't create object: word.Application。似乎您必須使用基於 MSI 的 Office 版本才能獲得差異比較功能。

外部差異/合併工具

如果我們提供的工具無法滿足您的需求,請嘗試許多可用的開放原始碼或商業程式之一。每個人都有自己喜歡的工具,此清單絕非完整,但以下是一些您可以考慮的工具

WinMerge

WinMerge 是一個很棒的開放原始碼差異比較工具,也可以處理目錄。

Perforce Merge

Perforce 是一個商業 RCS,但您可以免費下載差異/合併工具。從 Perforce 取得更多資訊。

KDiff3

KDiff3 是一個免費的差異比較工具,也可以處理目錄。您可以從 這裡 下載。

SourceGear DiffMerge

SourceGear Vault 是一個商業 RCS,但您可以免費下載差異/合併工具。從 SourceGear 取得更多資訊。

ExamDiff

ExamDiff Standard 是免費軟體。它可以處理檔案,但不能處理目錄。ExamDiff Pro 是共享軟體,新增了許多好東西,包括目錄差異比較和編輯功能。在兩種版本中,3.2 及以上版本都可以處理 Unicode。您可以從 PrestoSoft 下載它們。

Beyond Compare

與 ExamDiff Pro 類似,這是一個出色的共享軟體差異比較工具,可以處理目錄差異比較和 Unicode。從 Scooter Software 下載。

Araxis Merge

Araxis Merge 是一個有用的商業工具,用於比較和合併檔案和資料夾。它在合併中進行三向比較,並具有同步連結,如果您變更了函數的順序,可以使用這些連結。從 Araxis 下載。

請閱讀名為「外部程式設定」的章節,以瞭解如何設定 TortoiseSVN 以使用這些工具的資訊。

TortoiseSVN 首頁