ケースと折りたたみの衝突を修正するための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でした)。