本文討論在 Eclipse 中應用補丁,包括在 Eclipse Galileo 中引入的一個功能。要利用本篇文章中的樣本,您需要安裝 Eclipse 並且有一個可用的原始碼庫,如 Subversion(SVN)或 Concurrent Versions System(CVS)。
問題
Eclipse 整合式開發環境(IDE)通過提供一些功能來促進團隊環境中的工作。這些功能使您可以直接在 IDE 中與原始碼控制管理系統進行整合。它們不僅能夠使您獲得原始碼、查看並提交更改,還提供了通過把補丁應用到代碼來處理更改的能力。
補丁可以以檔案的形式交換,其中含有使用標準 diff 格式的代碼版本之間的更改。正確建立後,補丁檔案只包含修改後的檔案與您的工作空間中的檔案之間存在差異的地方。這不僅可以使補丁檔案變得更小,而且能夠更容易、更有選擇地運用補丁。
在團隊開發環境中,有時需要直接在開發人員之間共用對程式碼程式庫的更改。使用補丁檔案的不同情境包括:
來自團隊外部的更改 — 例如,在開原始碼中,更改可能來自社區的某個人。
出於某些原因,更改無法提交到當前原始碼樹中,比如將會影響編譯的重大更改。
更改很複雜,而且在提交到原始程式碼控制系統中之前需要與其他的更改進行整合。
補丁檔案的一個優勢在於它能夠作為電子郵件訊息的附件或者 bug 報告進行提交。然後,可以把補丁檔案應用到原始碼中以整合修改後的代碼。
補丁格式概覽
在 Eclipse 中建立補丁時,補丁是以統一的 diff 格式進行編寫的。這意味著您可以從 CVS 或 SVN 中建立 diff 並把它們應用到 Eclipse 項目中。它還意味著對於補丁檔案,您可以依靠一個標準格式,因此,它們很容易就可以進行共用。diff 檔案有幾種格式。
瞭解補丁檔案的格式對於理解如何在 Eclipse 中應用它們並不是很重要,但對 Eclipse 使用的 diff 檔案格式有一定的瞭解能夠協助您解決問題並協助您瞭解應用補丁時將會發生什麼。
例如,請參見清單 1 中的簡單 Motorcycle 類。在本文中,它是一個基準樣本。您將對其進行修改,而且通過這個樣本,您將瞭解補丁檔案是如何出現在後面的樣本中的。
清單 1. 樣本 Motorcycle 類
package com.nathangood.examples;
public class Motorcycle {
private int cc;
private String model;
private String make;
private String year;
public String getModel() {
return model;
}
public int getCc() {
return cc;
}
public void setCc(int cc) {
this.cc = cc;
}
public void setModel(String model) {
this.model = model;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
}