Eclipse 團隊開發中,補丁是跨倉庫、跨團隊、跨版本共享代碼變更的標準載體。Eclipse Galileo (3.5) 引入了「Package Explorer 直接粘貼補丁內容」的創新交互,大幅簡化了應用流程。本文系統講解統一 diff 格式、補丁創建、應用向導、衝突處理、逆向補丁等全生命周期操作,並對比舊版與 Galileo 新特性。
Eclipse 採用 Unified Diff 格式,僅記錄差異行及上下文,標準示例:
Index: src/com/example/Motorcycle.java
===================================================================
--- src/com/example/Motorcycle.java (revision 3)
+++ src/com/example/Motorcycle.java (working copy)
@@ -7,6 +7,11 @@
private String make;
private String year;
+ public Motorcycle(String make) {
+ super();
+ this.make = make;
+ }
+
public String getModel() {
return model;
}
@@ -7,6 +7,11 @@:舊文件第 7 行起 6 行,新文件第 7 行起 11 行- 刪除行(舊版本),+ 新增行(工作副本).patch 文件,可作為郵件附件、Bugzilla 附件分發Local Copy → After Patch 變更無誤Ctrl+A, Ctrl+C 複制全文審查頁面常見報錯及對策:
| 選項 | 適用場景 | 操作建議 | |------|----------|----------| | Ignore leading path name segments | 補丁路徑與項目結構不匹配(如補丁含src/ 但目標選 src 文件夾) | 設置為 1 忽略第一級目錄 |
| Fuzz factor | 上下文行因代碼重排/格式化導致行號偏移 | 點擊 Guess 自動嘗試,或手動遞增直到綠燈 |
| Show matched hunks | 需要核對具體行號上下文 | 勾選查看 |
| Generate .rej file | 衝突塊拒絕合並,需人工處理 | 勾選,生成 Motorcycle.java.rej 供參考 |
場景:本地已添加構造函數 public Motorcycle() { // TODO },補丁也要添加無參構造函數。
Generate .rej file,生成 Motorcycle.java.rej:@@ -5,6 +5,10 @@
private String model;
private String make;
private String year;
+
+ public Motorcycle() {
+ super();
+ }
Motorcycle.java 融合兩版本邏輯Team → Apply Patch 向導中勾選 Reverse Patch,即可將「新增→刪除」「刪除→新增」,用於撤銷有問題的補丁或還原歷史版本片段。
ISSUE-1234_fix_npe_in_login.patch補丁是分布式開發前 Git 時代的核心協作單元,Eclipse Galileo 的「複製內容→粘貼項目」交互創新,將補丁應用門檻降至最低。掌握 Unified Diff 結構、向導進階選項、衝突 .rej 處理、逆向回滾,你就能駕馭任何基於 Eclipse 的團隊協作場景。現代項目建議遷移至 Git/Gerrit,但理解補丁機制對理解版本控制本質依然至關重要。