2009-07-29 116 views
4

我們在一個3人正在處理的項目中有幾個配置文件。但是,這些配置文件包含幾行,這些行對我們每個人都不相同,因此不應該被提交更改或覆蓋。然而,Git不會讓我們從其他人那裏獲得更改,除非我們提交那些配置文件的更改,這意味着它會再次更改其他成員的配置。讓git免於需要提交更改

作爲Git的新手,似乎我們需要創建分支併合並它們,每次提交以更新代碼 - 或使用.gitignore。處理這種情況的正確方法是什麼?我們都需要不斷訪問其他成員所做的更改。

回答

4

跟蹤示例配置文件通常是一個好方法。然後你可以有一個未追蹤的本地副本。您可以使用githooks來幫助您應用這些差異。您可以將合併後和結賬(甚至是提交後)複製到未跟蹤的跟蹤中,並可能應用更改以創建自定義版本。你最後一步怎麼做取決於你 - 這是一個腳本。幾個電話sed -i可能會這樣做。

另一種可能性,如果你能夠使用兩個配置文件,或者配置文件具有某種「包含」指令,那麼就有一個跟蹤,一個未跟蹤。

7

不檢入配置文件。

如果需要你可以有一個config.example,你們每個人都複製到未跟蹤的配置文件 - 這是大多數項目如何處理這個。

5

我一直在發現在應用程序中使用合理的默認值以及版本控制忽略的可選配置文件的價值。一個示例配置文件可能會被簽入,但使用不同的名稱;通常是「config.example.yml」(或任何擴展名對你有意義)。

1

你也可以使用被稱爲「rebase --onto」的嚴重git-fu,如outlined here

正如我理解這種方法,你有自己的配置更改在您自己的分支單一提交。在你自己的分支上工作。每隔一段時間,您都會跳過以上的分支您的配置提交,然後將其重新安裝到主設備上。必要時重複。

一個很好的圖表是Scott Chacon即將發佈的Pro Git一書。

我認爲這是Git最好能找出一次的東西之一。使用git config --global alias.lop 'rebase --onto etc. etc.',這樣你就可以輸入例如。 git lop在未來。

2

我敢肯定,我建議對以下技術,但是......

您可以使用篩選器驅動程序來設置適當的配置文件爲每個開發人員。檢入文件可能包含一個通用值,並且每個開發人員都會有一個可以爲其更改的塗抹規則。

例如,如果一個名爲「配置文件」要在每個開發人員的基礎修改該文件在該行的樣子:

 
config: default 

然後,開發者必須在這個當地。混帳/信息/屬性:

 
config-file filter=modify-config 

和的.git /配置是這樣的:

 
[filter "modify-config"] 
    smudge = sed -e 's/^config:.*/config: developers value/' 
    clean = sed -e '/^config/s/.*/config: default/'