バックグラウンド:
最初はファイルbase.c
があり、そのファイルはブランチが 1 つしかないリポジトリにありましたBase
。
Base
-branchを作るために分岐されましたExtended
。次に、この新しいブランチにいくつかの変更が加えられましたbase.c
。
のファイルbase.c
でバグが修正された場合Base
、それらは にマージされExtended
ます。
base.c
ブランチにあまりにも多くのものを追加するExtended
のは良い考えではないことが判明したため、ファイルはにコピーされext.c
ます。次に、ほとんどのExtended
追加機能が から削除されbase.c
、Base
機能が から削除されext.c
ます。したがって、この時点base.c
でExtended
は と非常によく似ていBase
ます。
問題:
ファイルが分割されたとき、共通の履歴を共有していたため、Mercurialext.c
は のコピーであると通知されました。base.c
残念ながら、これは良い考えではありませんでした。
バグがBase
ブランチで修正され、 にマージされた場合Extended
、Mercurial はそれらの変更を と の両方に適用する必要があると考えていbase.c
ますext.c
。これにより、マージが非常に煩わしくなります。
ext.c
と同じと見なされなくなったことを Mercurial に伝える方法はありbase.c
ますか? 解決策の 1 つは新しいファイルに置き換えることext.c
ですが、そうすると履歴が追跡されません。