私を含め、非常に多くの Mercurial を使用している人々が、次のような他のツールを使用した後、私たちが持ちたいもの、持つことを期待しているものであるため、この質問に非常に遅い準回答を追加します。 svn プロパティ。
私の知る限り、Mercurial にはそのような拡張機能はありません。まだ。
はい、Mercurial の方法では、ファイルとファイルのみを追跡するようです。そして、そのような拡張子を正す方法は、必要なメタデータを ...repo/.hg* ファイルに入れることかもしれません。
わかった。私はそれで遊んでいます。ツールを作成する前に、手作業で作業を行います。
バージョン管理された .hg ファイル アプローチの主な弱点は、「hg update -r OLD-VERSION」などの非ヒント バージョンをチェックアウトすると、古いバージョンのメタデータが取得されることです。
したがって、重要なことは、メタデータを ...repo/.hg* ファイルに入れることだと思います。
しかし...ほとんどの操作は、そのようなファイルの最新バージョンで、または最新バージョンで実行する必要があります。つまり、そのようなメタデータ ファイルはバージョンを「超える」と思います。つまり、バージョンを管理したいのですが、理想的な状況では、古いバージョンをチェックアウトした可能性のある、通常はバージョン管理されているファイルにオーバーレイされていると想像できます。
さらに、多くの場合、そのようなメタデータ ファイルの分岐を個別に処理する必要があります。たとえば、すべてのブランチの説明を一緒に書き込もうとしているファイルを想像してみてください。おそらく、「branch1.1 は branch1 の最新バージョンです」のように、ブランチを比較します。その説明がどちらのブランチにもあることは望ましくありません。または、両方の枝に同時に適用し、両方の枝に変更を反映させたいと考えています。
そのような推定上の拡張は、「hg cat -r tip ...repo/.hg-my-new-metadata」で動作します。または、バージョン管理されたファイルを、通常のバージョンを超えるメタデータ ファイルで何らかの方法でオーバーレイします。
サブレポでこれを行う上で、いくつかの進歩を遂げました:
superrepo
files // normally-versioned-files <-- a subrepo
metadata // version transcending metadata <-- a subrepo
これにより、古いバージョンのファイルと一緒に最新のメタデータをチェックアウトできます
スーパーレポの特定のバージョンをチェックアウトすると、古いバージョンのメタデータ サブレポが取得される可能性があるため、まだ十分ではありません。しかし、少なくとも新しいバージョンはサブレポにあります。
また、メタデータを隣接するサブレポに配置するか、同じレポに保持するか (ただし、ヒントで操作するか) にかかわらず、実行できる問題があることに注意してください。
hg clone -r OLD-REVISION repo newrepo
これにより、OLD-REVISION 以降のメタデータが取り除かれます。「OLD-REVISION はすべてのテストに合格した」というメタデータを含めます。つまり、OLD-REVISION に適用される可能性のある後のリビジョンからメタデータを取り除きます。
これと同じ問題が hg タグでも発生します。
「まあ、そんなことはしないでください」と言う人もいるかもしれませんが、履歴を削除しないでください。残念ながら、これはリポジトリを「整理」する方法として推奨されることがよくあります。
Mercurial でこれを回避するのは難しいようです。