2010-07-23 56 views
1

我試圖找到一種方法在生產環境中使用自定義修補程序部署軟件。基礎軟件是開源的,擁有自己的回購站(SVN),我們有一些補丁只能選擇一種服務,而不是其他補丁(所以我們在一臺服務器上安裝了基本版+ patchA + patchB,基本版+ patchA + patchC在另一個)。使用自定義本地修補程序管理軟件

一切都將作爲包部署,這很簡單。我正在考慮的問題是:我們如何存儲修改?這些是我想到的一些方法:

  • 我試過使用被子/補丁系列+從上游下載特定版本修建時。這很好,直到我們需要將修補程序移植到新版本。由於被子需要修改修補程序的樹的副本,因此修復東西需要很長時間。而且,在不同的服務器上部署不同的版本意味着我們需要有不同的構建腳本。
  • 我可以將存儲庫克隆到本地git/hg中,並通過本地修改創建一個分支。對於向前移植補丁非常好,我可以在我的分支上創建本地發佈標籤,但不幸的是,我失去了有關單獨補丁的信息。當然,我可以在上游看到差異,但我失去了不同本地修改的明顯分離。
  • 我試過堆疊的git/hg-mq,但據我所見,它們不能輕鬆導出補丁系列。它們適用於存儲正在進行的工作。我可以執行與BitBucket相同的技巧,並在「存儲庫內部」創建修補程序隊列以導出它們,但隨後每個修補程序隊列將分別分配給一個分支(例如,在使用patchA的每個本地分支中都需要進行相同的修改) 。

您有任何其他的想法,文章,標準化的方式嗎?其他專業人士&缺點我提到的方式?

回答

0

我知道這是因爲你問了一個很長一段時間,但你有了答案就在這裏:

我可以克隆庫到本地的git/Hg和創建一個分支 的局部修改。這對移植修補程序非常有用,它可以轉發 ,我可以在我的分支上創建本地發行標籤,但不幸的是,我的 會丟失有關單獨修補程序的信息。我可以在上游看到差異到 當然,但我失去了清晰分離的不同本地 修改。

通過Git的「提交」機制,您仍然可以清楚地區分不同的本地修改。

我看到它的方式,Git「commit」與通過電子郵件發送的補丁本質上是一樣的。也就是說,它使用主題行和描述性主體文本來說明更改原因,從而封裝了一個更改。當然,它也包含所有相關文件的更改。

如果您確實需要將更改發送到外部系統(例如上游),但信息仍然存在,git format-patch命令(及其堂兄git send-email)將實際以此格式輸出。