2010-12-16 173 views
2

我有一個git diff問題。讓我先填寫你的歷史。git diff忽略文件中的模式

我剛剛得到一個客戶的相當不受歡迎的項目。問題是他們在scm中有2個分支。這兩個分支已經很長時間沒有合併過,現在它們必須合併它們。大部分更改都很簡單,所以通過git進行合併只需要大約30分鐘。

如何,我的客戶不相信合併過程可以自動化。因此,他們希望通過在所有4版本的代碼(基本版本和版本a,基本版本和版本b,a和b等)之間具有差異列表來檢查合併。

這也是相當微不足道的,但問題來了。由於這些分支之間有很多變化,比較列表非常長(每個大約50Mb),因此列表是無用的。現在我的客戶希望將這些更改分組。

這些'分組差異'有4個主要的羣體。我想讓git diff能夠在時間上忽略它上面的單個組。

g1:有很多斜槓改變了方向。因此,我希望git能夠解釋/和\。我已經發現如何讓git忽略整行,如果它包含一個斜線,但這不是我想要的,因爲路徑(斜槓來自哪裏)可能已經改變。

g2:除了我有更多的符號涉及之外,這個問題與上面的結構非常相似。在日誌中有很多格式已經改變。大部分與丹麥語字母有關,即'æ'已更改爲'& aelig';','ø'已更改爲'& oslash';'等等。

g3:很多評論已被更改。客戶擔心一些'* /'可能沒有被合併。我看不到如何驗證這一點。你們中的任何一位專家都有想法?

g4:以上未提及的所有內容。這被認爲是真正的變化。

+0

_僅限於30 **分鐘**?!?這是一個瘋狂的時間爲一個微不足道的合併 – knittl 2010-12-16 20:37:41

+0

我說*大多數*是微不足道的。有幾個衝突需要我的注意;) – user1407209 2010-12-17 07:06:25

回答

0

你也許能夠寫出一些東西來分析差異並刪除或消除其中的一些變化。一些正則表達式的魔法可能會幫助你。我認爲這最適用於g1和g2。

不知道該怎麼辦g3。

+0

我希望避免後處理。我曾經使用超越比較,它有一個選項來設置比較規則。我用它然後忽略日誌文件中的時間戳。我希望在差異中有類似的東西。 我同意你有關g3,我不認爲有什麼要做,除了讓客戶審查他們自己的文件:) – user1407209 2010-12-16 20:34:36