1

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

4

1 に答える 1

1

試す

hg update -C tip

これでファイルが元に戻るはずです。そうでない場合は、すべてを元に戻してみてください。

hg revert -r tip -a
于 2012-06-06T22:47:08.673 に答える