2012-04-04 117 views
1

我的用例是這樣的......自動git合併

我有一個項目有兩個生產分支。任何分支中的大部分更改都需要合併到另一個分支中。只有非常特殊和不經常的變化需要在兩個分支中分開。

我想要做的是在主遠程存儲庫上的兩個分支之間建立一個自動合併,作爲生產構建機的源,以便任何將某些東西推入分支A的人自動將其合併到分支B中並手動處理特殊的不合並推送(很少發生)。

任何簡單的方法來做到這一點?

回答

2

你可以使用post-receive git鉤子。當有人推送到主遠程存儲庫時,會調用一個腳本(鉤子),您可以在其中獲取各種信息,查看推送的內容,預覽提交哈希和新提交哈希。

在這裏,您可以確定究竟推送了哪個分支。鑑於此信息,您可以在另一個存儲庫檢出其他分支,執行合併並推送此信息。

在.git/hooks /文件夾中有一個post-receive.sample文件。將它重命名爲post-receive並確保它是可執行的。在bash它可能看​​起來像:

#!/bin/sh 
# <oldrev> <newrev> <refname> 
while read oldrev newrev ref 
do 
    echo "$oldrev $newrev $ref" 
done 
+0

嘿,我不知道爲什麼你說我們應該放棄推...是有一些這樣做的理由還是因爲我的問題是模糊的?大部分開發人員在分支機構A和分支機構B上工作的工作應該結合在一起。唯一的區別是它們鏈接到不同的第三方庫,因此Makefile和頭文件之間存在細微的差異,並且這些差異大體上是不變的。 – owagh 2012-04-05 15:43:27

+0

但是,後接收鉤似乎是這樣做的方式。你可以在關於post-recieve腳本的回答中添加更多的資源鏈接嗎?我的.git/hooks文件夾中唯一的例子是一個電子郵件腳本,它並沒有真正顯示我可以如何在post-recieve腳本中進行合併。 – owagh 2012-04-05 15:45:43

+0

您可以按原樣使用我的腳本。假設你有權訪問bash。 – ralphtheninja 2012-04-05 15:59:38