2016-02-01 9 views
9

マージドライバを使ってGitリポジトリをセットアップし、マージ時にリネームの検出を無効にしたいとします。名前の変更を伴わないカスタムGitマージドライバ

問題は、既定の再帰戦略を使用すると、名前の変更の検出を無効にできないため、解決戦略(理想的ではないが十分に良い)を使用すると、マージドライバが無視されることです。

ファイルの内容が完全に一致していても、名前の変更を検出しないようにしたいと思います。

.git/configに:

[merge "my"] 
    name = my merge 
    driver = my_merge_driver %A %O %B 
[merge] 
    default = my 

試み:

$ git merge -X rename-threshold=200% # Equivalent to 100% 
$ git merge -s resolve    # Custom driver ignored 
$ git --version      # git version 2.2.0-rc0 
+0

によって解決され、それはまだで無視ですgit 2.7.0? – VonC

+1

私はそれがまだ無視されていると思う、私の古い答えを読むhttp://stackoverflow.com/a/22579625/6309 – VonC

+0

確かに、@ VonC、私はgitバージョン2.7.0で全く同じ動作を確認することができます。 – filipos

答えて

2

Gitの2.8.0.rc0のとおり、マージ、再帰的なアルゴリズムは、今(4ce064dをコミット)オプション「無リネーム」を受け入れ、そう私の問題は、今

$ git merge -X no-renames 
1

考慮にあなたがこのために計画しているユースケースを考えると、良い回避策はと一緒に、ファイル名を書くことであろう各ファイルのバージョン番号。

+0

私はそれがちょっと醜いと思いますし、リポジトリを扱うコードにいくつかの(単純な)変更が必要ですが、うまくいきます。有効期限満了の賞金が与えられました。私はもう一度待って、それを受け入れる前に他の答えが出ているかどうかを見ます。 – filipos

関連する問題