2014-04-17 26 views
3

這個問題是不特定IOS的,但我在這裏包括實際使用情況清晰如何使用Git設置特定於文件的默認合併策略?

我運行的是iOS的項目稱爲Foobar,版本控制下保持明顯。 在iOS項目環境中的項目文件中,有一些名爲Foobar-Info.plist的文件,這是一個存儲關於項目的有趣信息的XML文件,例如版本和構建的數量。

我每次生成項目,我增加存儲在該文件中,像這樣的編譯次數:

... 
<key>BuildCount</key> 
<string>2203</string> 
<key>CFBundleShortVersionString</key> 
<string>0.0.4</string> 
<key>CFBundleVersion</key> 
<string>0.0.4-release/0.0.4.2203</string> 
... 

其中「0.0.4釋放」是一個git流分支的名稱,2203是內部編號。這在CFBundleVersion字段中使用,所以對於構建來自何處的情況我是非常明顯的。在另一分支

想象一下,我已經取得了很大的進步,因爲釋放和同一領域的樣子:

... 
<key>BuildCount</key> 
<string>2754</string> 
<key>CFBundleShortVersionString</key> 
<string>0.0.4</string> 
<key>CFBundleVersion</key> 
<string>0.0.4-feature/add-quux-and-baz.2754</string> 
... 

比方說,我與釋放完成,並且它併入主線develop科。

問題

爲了獲得在發佈分支的最新進展情況,我要變基的特性分支到develop

發生這種情況時,Foobar-Info.plist將在rebase進程中的每次提交時都會導致衝突。這是因爲每次提交都會增加內部版本號;我必須手動合併通過選擇線條手動指定行與最新版本。請注意,3-way diff的基本版本也將不同。

<string>2000</string> // Base 
<string>2754</string> // Local ** always pick this one; it's the latest 
<string>2203</string> // Remote 

我怎樣才能知道,對於一個特定的文件,Foobar-Info.plist,我希望它採取的最新變化,解決衝突我爲我的git?

編輯:該文件必須保存在源代碼管理下。我想保留BuildCount,因爲這是對我的項目投入的努力的一個很好的表示,我想保留它!我知道這個數字只顯示了最少的構建數量,但這對我來說足夠好了。

+0

我發現http://stackoverflow.com/questions/928646/how-do -i-tell-git-to-always-select-my-local-version-for-conflicted-merge-on-as,這可能是我的問題的答案。 – fatuhoku

+0

'複製合併'不是我想要的。我有點想要COPY MERGE FOR CONFLICTS ONLY。其他更改仍應正常應用和合並。 – fatuhoku

+0

另一件事:它不是複製合併,因爲最新的變化是*不一定是*本地分支:可以想象,'develop'具有其他特性的提交,其中來自分支被重新分派的內部編號更大。 – fatuhoku

回答

1

我意識到這是一個遲到的答案,但如果我理解你的問題,你要找的是一個.gitattributes文件。

您可以指定合併特定的文件或從.gitattributes文件相對路徑的文件夾策略,它看起來像這樣:

* text=auto 
path/to/your/file.plist merge=union 
相關問題