ケースと折りたたみの衝突を修正するためのMercurialのガイドに問題がありますか、それとも私がソリューションを実装する方法に問題がありますか。
Mercurialwikiで提供されているソリューションは次のとおりです。
hg clone -U repo repair cd repair hg debugsetparents <bad revision> hg debugrebuildstateこの時点で、Mercurialは、不正なリビジョンがチェックアウトされており、すべてのファイルが欠落していると見なします(ステータス'!')。リポジトリを修正するには、次のことを行う必要があります。
hg rm -A <file causing the collision>これで、hg stは、状態「R」の厄介なファイルと状態「!」の他のすべてのファイルを表示するはずです。これで、修正をチェックインできます。
hg ci -m"fix case collision"すべてのファイルを元に戻すには、もう一度チェックアウトします。
hg co tip
問題のあるファイルは次のとおりです。SomeFile.bashおよびSomefile.bash。私はもともと持っていたSomefile.bashのですが、今はそうなりたいSomeFile.bashです。また、バージョン157は問題なく、衝突はありませんが、バージョン158は私が衝突を導入した場所です。リポジトリのヘッドは現在リビジョン160です。
私はこのソリューションを次のように実装しました。
hg clone -U my-repo-url repair
cd repair
hg debugsetparent 160
hg debugrebuildstate
hg status (reveals that everything is 'missing' (!))
hg rm -A Somefile.bash (responds that SomeFile.bash has been removed, notice case change)
hg ci -m "Fixed the collision... I hope."
hg co tip
hg update -C tip
ガイドによると、これによりケースフォールディングの衝突が解消され、欠落している残りのファイルが元に戻るはずですが、さらに別の方法でhg statusは、すべてがまだ欠落していることがわかります(!)。
編集:その最後のコマンド(update)を既存のコマンドに追加することで、不足しているファイルを回復し、残りの問題を解決することができました。
注:この問題を修正するには、最新の「問題」バージョンを使用する必要がありました<bad revision>(私の場合は160でした)。