2009-11-05 42 views
17

我們的項目在相當接近的代碼範圍內進行工作(在代碼的相當小的地理區域內並行發生了很多變化),並且基於功能分支的git工作流對我們的java代碼非常有用。如何在git feature branch工作流中處理xml/html?

但是,XML/HTML的東西不能很好地工作。簡單無關的更改(設計師添加了一個周邊div,開發人員更改了其中一個元素的ID),這實際上是非常有害的合併。

我意識到如何處理這個可能有幾個選項。一個好的git xml合併將是最佳的,或者限制xml/html代碼的重新格式化。不在這種近距離工作會是另一種(不可接受的)選擇。

如何有效解決此問題?

回答

17

GIT中允許定製合併驅動,經由gitattributes選擇每個路徑(例如,對於所有*.xml文件)。

你需要找到什麼是XML的合併驅動,再加上可能也寫一個簡單的腳本的Git公約之間變換,說合並司機約定。例如有XML::Merge Perl模塊。有XyDiff,但它看起來像它沒有三路合併(我猜想對於XML構建3-way合併差異像在A Formal Investigation of Diff3紙(PDF)中所述的將不起作用)。您還可以閱讀Matching, diffing and merging XML博客文章(或其中引用的文章)。

另一種解決方案是未設置合併屬性爲XML文件(他們希望二進制文件WRT治療。合併衝突),並使用一些圖形化合並工具來解決合併衝突,可能通過git mergetool

+1

我莫名其妙地認爲,簡單地忽略所有種類的前/後空格(除換行符)的合併將執行不夠好。你知道我能做到嗎? – krosenvold 2009-11-08 10:41:00

5

如果你知道你可以自動完成一些合併問題,您正在使用的XML文件的合併有,你可以寫一個腳本這些決議。
如果有腳本,你可以從XML/XHTML文件量身打造的一款合併司機打電話給他們,只在某些目錄。

here用於合併驅動的(很簡單)。

這樣,這仍然是(因爲合併驅動腳本並沒有解決它)的任何衝突都需要加以解決合法的合併問題。