我在問自己如何處理以下情況。在Git中處理需要在每個分支不同的文件
我在兩個不同的生產系統上有兩個不同的分支,在Git中需要一個文件夾中的config xml文件,需要不同。現在我們總是從開發分支合併到兩個分支。
現在我擔心,有人可能會將錯誤的配置文件合併到其中一個生產分支中。
我該如何處理這些類型的問題?我不想的.gitignore文件和手動處理他們...
問候
我在問自己如何處理以下情況。在Git中處理需要在每個分支不同的文件
我在兩個不同的生產系統上有兩個不同的分支,在Git中需要一個文件夾中的config xml文件,需要不同。現在我們總是從開發分支合併到兩個分支。
現在我擔心,有人可能會將錯誤的配置文件合併到其中一個生產分支中。
我該如何處理這些類型的問題?我不想的.gitignore文件和手動處理他們...
問候
讓我們稱之爲分支dev的,PROD1和Prod2的。
只要你只合並dev-> prod1和dev-> prod2,你就沒有問題,prod1或prod2中對$ file.xml的本地修改將會保持良好,彼此獨立。
如果有人合併了prod1-> dev或prod2-> dev,您會在某個時候遇到問題。 prod1-> prod2和prod2-> prod1的相同之處。
我通常在小團隊中工作,只是告訴人們不要合併錯誤的方式,就是這樣。如果你在一些需要自動化的企業公司工作,你可能會想出一些強制執行這些事情的鉤子,但是我個人認爲這太過矯枉過正。
我通常會將依賴於特定環境的配置文件保存在單獨的「contrib」文件夾中。所以我可以讓它們在版本控制下,但我必須將它們複製到預期位置(手動)。我通常會添加「設置」腳本於contrib文件夾:
./
contrib/
prod1/
application.config
prepare.sh
prod2/
application.config
prepare.bat
team1/
application.config
prepare.bat
team2/
application.config
prepare.sh
的例子假設生產系統使用不同的操作系統,需要不同的「準備」腳本(複製配置文件(S)和做其他的東西)並且具有不同開發環境的團隊在同一個項目上工作。
這就是我可以做的,如果我想手動hanlde他們,但我想他們在混帳。所以我如果文件更新,我不能忘記上傳它們... – spankmaster79
@ spankmaster79這是你應該做的。否則我不明白你想從git中得到什麼。你需要不同的文件,但git很好地合併差異。你對git有什麼樣的幫助? – kan
@ spankmaster79 - 可能還不夠清楚:contrib文件夾處於版本控制之下。所有配置文件和腳本的「實例」都被簽入。 –
您可以在回購站上添加一個update
掛鉤,您不希望其他分支的更改泄漏到prod1
和prod2
。在update
掛鉤中,您可以檢查哪些路徑受到推送的影響,如果您不想要那些路徑,請拒絕。
該解決方案在實踐中防止任何修改這些XML文件,我的猜測是不是正是你想要的(如果文件版本控制之下一定要能夠創建他們的新版本)的。爲了克服此限制,您可以授予一個用戶權限,將更改推送到這些文件。
Git Book包含如何在Git倉庫上創建update
鉤子的example,包括如何獲取用戶名(包括SSH和其他類型的訪問)。查看鏈接瞭解更多關於如何實際編寫鉤子的信息。請記住,鉤子只是可執行文件(或腳本),所以你可以用你選擇的語言編寫它們。
有沒有辦法阻止合併方向,然後告訴團隊中的每個人?我想在分支機構寫入權限 – spankmaster79
git的權限系統實際上是不存在的。如果你可以達到克隆你可以做任何你想要的。您可以提供一些鉤子來阻止某些事故中的合作用戶,並且一些存儲庫管理軟件(如gitolite)可以爲您提供一些可以推送到中央存儲庫的控制權。 – mnagel