2011-01-14 13 views
2

名前を変更したファイルの変更をレポからクローンに追跡することができます。しかし、私は、ファイル名をすでに追跡しているファイル名に変更すると問題があるようです。本質的に、私は追跡されたファイルの上にコピーしたい。オリジナルのレポでMercurial:別の追跡ファイルに名前が変更されたファイルの変更を追跡できますか?

ファイル:

application.txt 
special.txt 

その後、私は次の時間は、私が元にspecial.txtに変更を加えたことを期待し、レポのクローンを作成application.txtを削除し、application.txt

するspecial.txtの名前を変更その変更はapplication.txtに引き継がれます。しかし、それはしません。私はこのメッセージを受け取る

local changed special.txt which remote deleted 
use (c)hanged version or (d)eleted? 

これと同じことをGitで試してみると、同じ結果が出ているようです。既にファイル名を変更しても名前が変更されても問題はありません。これを回避する方法はありますか?

+1

あなたは 'HG mv'で名前の変更をHG教えていましたか? Hgは自動的にファイルの名前の変更を追跡しませんので、ファイルの名前を変更したりコピーしたりする場合は、hgに明示的に指示する必要があります。 – Rudi

+0

はい。まず 'hg rm application.txt'と' hg mv special.txt application.txt'を試しました。私は 'hg mv special.txt application.txt -f'も試しました。いずれにしても、次のマージを行うときに競合が発生します。 –

+0

また、 'application.txt'を削除してから' special.txt'の名前を変更してコミットを試みました。まだ動作しません。 –

答えて

1

水銀ですでに追跡されているファイルの内容を変更しただけなので、これはバグとは言いません。 Mercurialは、ファイルをファイル名と拡張子で追跡します。これは、ファイルの内容全体を置き換えるだけのことではありません。

+0

合意。私が望んでいるように思えないのはちょっと残念ですが、Mercurialは意図したとおりに動作しています。 –

0

現実世界のMercurialプロジェクトでこの問題が発生しました。 GITはまた、偽の競合(special.txtが削除され、更新されている)を見ている。

Bazaarは適切な名前変更をサポートしています。この場合、special.txtへの変更は引き継がれ、application.txtは期待どおりに更新されます。 Bazaarの問題(少なくとも私にとって)は、IntelliJのサポートが不足しているということです。 2つのプラグインがありますが、最新のものは3年間更新されていません。最後にIntelliJの最近のバージョンでは使えませんでした。 リファクタリング時にIDEが "bzr mv"と "bzr rename"を呼び出す必要があるため、サポートがないとBazaarは使えなくなります。

あなたは、このためのIntelliJのサポートをしたい場合は、ここに投票:http://youtrack.jetbrains.com/issue/IDEABKL-5344