2

リポジトリにフォルダがあります。次に、このフォルダーを(まったく同じファイルを持つ)サブリポジトリーにし、この変更をコミットしてプッシュしました。今、私はそのコミットを介して更新することはできません。これが私が受け取るメッセージです:

% hg update --repository <path to repo> --config ui.merge=internal:fail --rev 1159 --clean
abort: path 'subrepo\include\header.h' is inside nested repo 'subrepo'
[command returned code 255 Wed Dec 05 11:57:45 2012]

subreposubrepoが現在存在するフォルダの名前はどこにありますか。これを打ち負かして以前のリビジョンに更新する方法はありますか?

4

2 に答える 2

6

解決策を見つけました:問題のフォルダを削除してから、[変更を破棄]オプションで更新します。チャームのように機能します。

于 2012-12-05T16:14:49.930 に答える
5

少しグーグルすると、これはCaveat 3に直接関連しているように見えます。「更新/マージでは、ローカルのみの変更が失われる可能性があるため、現在、サブリポジトリを完全に削除することはできません」。また、警告5には、「通常のファイルとサブリポジトリ間の衝突は処理されません」と記載されています。

興味深いことに、これまで見たことのないものですが、サブリポジトリは「最後の手段の機能」と見なされます。つまり、支援できる場合は使用しないようにする必要があります。

おそらくあなたが探していた答えではありません。

回避策は、クローンを作成してリビジョンに到達することです...サブリポジトリを作成する直前のリビジョンに基づいて新しいクローンを使用できます。

% hg clone --repository <path to repo> new_copy --rev 1159

これにより、その時点までのすべてが複製されるため、「将来の履歴」は失われますが、少なくとも以前のバージョンに戻ることができます。

于 2012-12-05T15:01:57.593 に答える