手冊

建立與套用修補程式

對於開放原始碼專案 (像是這個專案),每個人都有儲存庫的讀取權限,而且任何人都可以對專案做出貢獻。那麼這些貢獻是如何控管的呢? 如果任何人都可以提交變更,專案將會永久地不穩定,而且可能永久地損壞。 在這種情況下,變更會透過提交修補程式檔案給開發團隊來管理,開發團隊擁有寫入權限。 他們可以先審閱修補程式,然後提交到儲存庫,或是將其退回給作者。

修補程式檔案只是 Unified-Diff 檔案,顯示您的工作副本與基礎修訂版本之間的差異。

建立修補程式檔案

首先您需要進行並測試您的變更。 然後,不要在父資料夾上使用TortoiseSVN提交...,而是選擇TortoiseSVN建立修補程式...

圖 4.63. 建立修補程式對話方塊

The Create Patch dialog

現在您可以選擇要包含在修補程式中的檔案,就像您進行完整提交一樣。 這將產生一個單一檔案,其中包含您自上次從儲存庫更新以來,對所選檔案所做的所有變更摘要。

此對話方塊中的欄位可以自訂,方式與檢查修改對話方塊中的欄位相同。 請閱讀名為「本機和遠端狀態」的章節,以取得更多詳細資訊。

透過點擊選項按鈕,您可以指定如何建立修補程式。 例如,您可以指定最終修補程式檔案中不包含行尾符號或空格的變更。

您可以產生個別的修補程式,其中包含對不同檔案集的變更。 當然,如果您建立一個修補程式檔案,對相同的檔案進行更多變更,然後建立另一個修補程式,則第二個修補程式檔案將包含兩組變更。

只需使用您選擇的檔名儲存檔案即可。 修補程式檔案可以使用您喜歡的任何副檔名,但依照慣例,它們應該使用 .patch.diff 副檔名。 您現在可以提交您的修補程式檔案了。

提示

如果您打算透過電子郵件將修補程式檔案傳送給其他人,請勿將其儲存為 .txt 副檔名。 純文字檔案經常被電子郵件軟體損壞,而且經常發生空格和換行字元被自動轉換和壓縮的情況。 如果發生這種情況,修補程式將無法順利套用。 因此,當您儲存修補程式檔案時,請使用 .patch.diff 作為副檔名。

您也可以將修補程式儲存到剪貼簿,而不是儲存到檔案。 您可能會想要這樣做,以便您可以將其貼到電子郵件中供其他人審閱。 或者,如果您在一台機器上有兩個工作副本,並且想要將變更從一個傳輸到另一個,則剪貼簿上的修補程式是一種方便的方法。

如果您願意,您可以從提交檢查修改對話方塊中建立修補程式檔案。 只需選擇檔案並使用右鍵選單項目從這些檔案建立修補程式。 如果您想看到選項對話方塊,則必須在按下滑鼠右鍵時按住Shift鍵。

套用修補程式檔案

修補程式檔案會套用到您的工作副本。 這應該從與建立修補程式時使用的相同資料夾層級完成。 如果您不確定這是什麼,只需查看修補程式檔案的第一行。 例如,如果第一個處理的檔案是 doc/source/english/chapter1.xml,並且修補程式檔案中的第一行是 Index: english/chapter1.xml,那麼您需要將修補程式套用到 doc/source/ 資料夾。 但是,如果您在正確的工作副本中,如果您選擇了錯誤的資料夾層級,TortoiseSVN 會注意到並建議正確的層級。

為了將修補程式檔案套用到您的工作副本,您需要至少擁有儲存庫的讀取權限。 原因是合併程式必須將變更參照回遠端開發人員進行變更時所依據的修訂版本。

從該資料夾的右鍵選單中,點擊 TortoiseSVN套用修補程式... 這將會開啟一個檔案開啟對話方塊,讓您可以選擇要套用的修補程式檔案。 預設情況下,只會顯示 .patch.diff 檔案,但您可以選擇所有檔案。 如果您先前將修補程式儲存到剪貼簿,則可以在檔案開啟對話方塊中使用 從剪貼簿開啟...。 請注意,只有在您使用 TortoiseSVN建立修補程式... 將修補程式儲存到剪貼簿時,此選項才會出現。 從另一個應用程式複製修補程式到剪貼簿不會使按鈕出現。

或者,如果修補程式檔案具有 .patch.diff 副檔名,您可以直接在其上按下滑鼠右鍵,然後選擇 TortoiseSVN套用修補程式...。 在這種情況下,系統會提示您輸入工作副本位置。

這兩種方法只是提供執行相同操作的不同方式。 使用第一種方法,您選擇工作副本並瀏覽到修補程式檔案。 使用第二種方法,您選擇修補程式檔案並瀏覽到工作副本。

一旦您選擇了修補程式檔案和工作副本位置,TortoiseMerge 就會執行,將修補程式檔案中的變更與您的工作副本合併。 一個小視窗會列出已變更的檔案。 依序雙擊每個檔案,檢閱變更並儲存合併後的檔案。

遠端開發人員的修補程式現在已套用到您的工作副本,因此您需要提交以允許其他人從儲存庫存取變更。

TortoiseSVN 首頁