2012-01-12 17 views
12

私はマージドライバを作成しています。次のように私は、$ PROJECT/.git/configにマージドライバを作成したgit mergeドライバをリポジトリに追加しますか?

filename merge=mergeStrategy

:私は次のように.gitattributesファイルを定義している

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

これはローカルに正常に動作しますが、私このマージドライバをgitリポジトリにコミットして、マージ戦略が全員に有効になるようにします。

リポジトリ自体にこれ(または他のGit設定オプション)を追加する方法はありますか?

答えて

9

あなたは、単に(もちろん、.gitattributesファイルと一緒に)script/mergeScript追加してコミット(プッシュ)可能性が働くだろう

限り:

  • mergeScriptはの$PATHで何とかですユーザーがマージドライバを実行しています。
  • mergeScript
  • mergeScriptchmod +xは、必要に応じて(C ...に実行可能にPerlスクリプトをbashシェルから)その内容を変更後でにあなたをできるように、拡張子なしで、実行可能です。

(彼はコメントでそれらを述べたように、最後の2点、MestreLionありがとう)

私は「.は」あなたにあったことを疑うよう、ローカルにあなたのためのケースだったこと$PATHだが、誰もがそのことを想定することはできない。

しかし、ローカル設定ファイル(.git/configは)/プッシュされませんクローニングされたAlexandr Priymakとしてコメントでアウトポイント)、そのユーザはまだドライバーをマージするカスタムの宣言を複製する必要があります。
これは潜在的な「有害な」スクリプトをプッシュしないように、次のマージで自動的に実行される基本的な安全対策です。

+1

これはgitリポジトリの設定を保存しません。 –

+0

@AlexandrPriymak:良い点。その重要な警告を答えに加えました。 – VonC

+1

'mergeScript.sh'を' chmod + x'を使って実行可能に設定することを忘れないでください。さもなければ、動作しないかもしれません。私はまた**強く**あなたが実行可能ファイルの拡張機能を使用しない** **をお勧めします。名前を単に 'mergeScript'と命名してください。将来的には、シェルスクリプトからperl、python、あるいはコンパイルされたC実行可能ファイルに変更されるかもしれません。 – MestreLion

関連する問題