2012-01-12 40 views
12

我正在創建一個合併驅動程序。我已經定義了一個.gitattributes文件,如下所示:添加git合併驅動程序到存儲庫?

filename merge=mergeStrategy

我創建了合併司機在$ PROJECT/git的/配置如下:

[merge "mergeStrategy"] 
    name = My merge strategy 
    driver = scripts/mergeScript.sh 

也能正常工作本地,但我想要將此合併驅動程序提交到git存儲庫,以便合併策略適用於所有人。

有沒有一種方法可以將此(或其他Git配置選項)添加到存儲庫本身?

回答

9

你可以簡單地添加並提交(推)script/mergeScript(連同.gitattributes文件,當然)

這將工作只要:

  • mergeScript在某種程度上是的的$PATH用戶執行合併驅動程序。
  • mergeScript是可執行的,chmod +x
  • mergeScript是不帶擴展,允許你(Perl腳本從bash shell的一個C可執行...)改變其內容如果需要的話。

(謝謝你,MestreLion,在過去的兩個點,因爲他在評論中提及他們)

這在當地是這種情況你,因爲我懷疑「.」是你的$PATH,但你不能爲每個人假設。

然而,本地配置文件(.git/config)將不會推/複製(如Alexandr Priymak指出在評論),所以用戶仍然需要複製自定義的申報合併的驅動程序。
這是一個基本的安全措施,以便您不推動可能在下一次合併時自動執行的潛在「有害」腳本。

+1

這不會保存git存儲庫中的配置設置。 – 2012-01-12 17:38:11

+0

@AlexandrPriymak:好點。我已經添加了重要的警告答案。 – VonC 2012-01-12 18:02:36

+1

不要忘記使用'chmod + x'將'mergeScript.sh'設置爲可執行文件,否則它可能會(不會)工作。我也**強烈**建議你**不要**使用可執行文件的擴展名。將它命名爲'mergeScript',因爲將來它可能會從shell腳本更改爲perl,python,甚至編譯的C可執行文件。 – MestreLion 2012-03-09 23:53:51