2013-07-05 55 views
0

我在問自己如何處理以下情況。在Git中處理需要在每個分支不同的文件

我在兩個不同的生產系統上有兩個不同的分支,在Git中需要一個文件夾中的config xml文件,需要不同。現在我們總是從開發分支合併到兩個分支。

現在我擔心,有人可能會將錯誤的配置文件合併到其中一個生產分支中。

我該如何處理這些類型的問題?我不想的.gitignore文件和手動處理他們...

問候

回答

0

讓我們稱之爲分支dev的,PROD1和Prod2的。

只要你只合並dev-> prod1和dev-> prod2,你就沒有問題,prod1或prod2中對$ file.xml的本地修改將會保持良好,彼此獨立。

如果有人合併了prod1-> dev或prod2-> dev,您會在某個時候遇到問題。 prod1-> prod2和prod2-> prod1的相同之處。

我通常在小團隊中工作,只是告訴人們不要合併錯誤的方式,就是這樣。如果你在一些需要自動化的企業公司工作,你可能會想出一些強制執行這些事情的鉤子,但是我個人認爲這太過矯枉過正。

+0

有沒有辦法阻止合併方向,然後告訴團隊中的每個人?我想在分支機構寫入權限 – spankmaster79

+0

git的權限系統實際上是不存在的。如果你可以達到克隆你可以做任何你想要的。您可以提供一些鉤子來阻止某些事故中的合作用戶,並且一些存儲庫管理軟件(如gitolite)可以爲您提供一些可以推送到中央存儲庫的控制權。 – mnagel

0

我通常會將依賴於特定環境的配置文件保存在單獨的「contrib」文件夾中。所以我可以讓它們在版本控制下,但我必須將它們複製到預期位置(手動)。我通常會添加「設置」腳本於contrib文件夾:

./ 
    contrib/ 
      prod1/ 
       application.config 
       prepare.sh 
      prod2/ 
       application.config 
       prepare.bat 
      team1/ 
       application.config 
       prepare.bat 
      team2/ 
       application.config 
       prepare.sh 

的例子假設生產系統使用不同的操作系統,需要不同的「準備」腳本(複製配置文件(S)和做其他的東西)並且具有不同開發環境的團隊在同一個項目上工作。

+0

這就是我可以做的,如果我想手動hanlde他們,但我想他們在混帳。所以我如果文件更新,我不能忘記上傳它們... – spankmaster79

+0

@ spankmaster79這是你應該做的。否則我不明白你想從git中得到什麼。你需要不同的文件,但git很好地合併差異。你對git有什麼樣的幫助? – kan

+0

@ spankmaster79 - 可能還不夠清楚:contrib文件夾處於版本控制之下。所有配置文件和腳本的「實例」都被簽入。 –

0

您可以在回購站上添加一個update掛鉤,您不希望其他分支的更改泄漏到prod1prod2。在update掛鉤中,您可以檢查哪些路徑受到推送的影響,如果您不想要那些路徑,請拒絕。

該解決方案在實踐中防止任何修改這些XML文件,我的猜測是不是正是你想要的(如果文件版本控制之下一定要能夠創建他們的新版本)的。爲了克服此限制,您可以授予一個用戶權限,將更改推送到這些文件。

Git Book包含如何在Git倉庫上創建update鉤子的example,包括如何獲取用戶名(包括SSH和其他類型的訪問)。查看鏈接瞭解更多關於如何實際編寫鉤子的信息。請記住,鉤子只是可執行文件(或腳本),所以你可以用你選擇的語言編寫它們。

相關問題