2012-04-04 1 views
0

私はオープンソースプロジェクトの上に構築されたソフトウェアを開発していますが、独自の変更が含まれています。最近、オープンソースプロジェクトに大きな変更が加えられ、ファイルの束が移動しています。たとえば:マージ時にファイルが動いたことをgitに知らせるようにします。

アプリ/モデル/ my_model.rb - >アプリ/モデル/名前空間/ my_namespaced_model.rb

は、移動されたファイルがたくさんあり、そのうちのいくつかは、変化の多くを持っています。だから、gitはファイルをマージしていませんが、古いファイルは「それらによって削除されました」とマージ競合としてマークしているだけです。 gitがファイルが削除され、新しいファイルが作成されたと考えるのではなく、移動されたことを気付くことができるように単純に変更を加えると、ほとんどの変更を簡単に取り除くことができると思います。それが現実のように、新しいファイルをすべて手作業で変更する必要があるようです。

私の質問は、自動的にファイルを見つけられないときにファイルが移動されたことをgitに認識させる方法はありますか?

答えて

1

git mergeがデフォルトで使用する再帰的な戦略では、ヘルプに変更できる「名前変更のしきい値」オプションがあります。最良の設定を見つけるために実験をしなければならないかもしれません。

git merge -X rename-threshold=70 mybranch 

設定はgit diff -Mと同様の効果を有し、git diffマンページに記載されています。

+0

私はこれを得ています: "致命的:マージ再帰のための不明なオプション:-Xrename-threshold = 70"。また、一部のファイルに字下げの変更がありますが、同じエラーが発生するため、「ignore-space-change」などのオプションを使用しようとしています。私はUbuntu 10.10でgit 1.7.1を使用しています。新しいバージョンが必要ですか? – alexsanford1

+0

Typo、 '-X ...'(スペースで)です。 – torek

+0

@torek:updated。今後は、自分でタイプミスを修正してください。 –