SVNプロップセットのような水銀エクステンションはありますか?
-
10-10-2019 - |
質問
Mercurialを介して追跡されているソースファイルにカスタムメタデータを添付する必要があります。 SVNプロパティ コマンドはまさに私に必要なものです。
と同様のコマンドを提供する水銀エクステンションはありますか propset
, propget
, propdel
, 、など?
拡張機能がない場合、なぜですか?
水銀を使用する場合、カスタムメタデータの代替/より良いアプローチはありますか?
カスタムメタデータは他の人にとって有用ではありませんか?
拡張機能は心から望まれていますが、まだ書かれていませんか?
余分な情報: :それが役立つ場合。私が追跡しているメタデータは、各ファイルがCodereViewed、Unitested、QA'dなどであるかどうかです。このデータはトレース可能で、枝/クローン間でマージする必要があります。
解決
Mercurialの哲学は、ファイルとファイルのみを追跡することです。 Mercurialがフォルダーについて知らないため、空のフォルダーをチェックインすることさえできません!
だから、ここに答えがあります:
あなたが望むことをする拡張機能が見つかりません。 (もちろん自分で書くことができます。)
データをフラットファイルに保存し、いくつかのスクリプトを使用して処理することを行うことです。 :(
あなたはあなたの会社でかなりよく考え抜かれたシステムと良いエンジニアリングの練習を持っているように思えますので、私はそれについてここではペダンチックになりませんが、あなたの方法は携帯性を傷つける以外に何もしないという合理的な議論をすることができます。プロパティについて魔法のようなものは何もありません、私はただ実行します svn proplist -v .
あなたの木には、それを隠しファイルに捨てます - .tracking
- 通常のファイルとともに明示的にマージします。とにかくプロパティをマージする必要があるため、これは実際には作業を追加しません。
それがあなたのために働くことを願っています!
他のヒント
水銀条約は、ファイル名を入れることです .hg*
リポジトリのルートに、およびそれらを(何らかの種類の)辞書として使用して、ファイル名をプロパティ値にマッピングします。たとえば、の代わりに svn:eol-style
HGEOL拡張はaを使用します .hgeol ファイル。
コードレビューを追跡する場合は、このメタデータの操作を可能にする別の拡張機能を記述し、その拡張状態をマージに優しい形式で保存することをお勧めします。
私はこの質問に本当に遅いカシアンワーを追加するつもりです。なぜなら、それは私を含むマーキュリアルを使用している多くの人々が、私たちが尋ねたいこと、そして私たちが持っていることを期待し、期待するもの、 SVNプロパティ。
私が知る限り、水銀のような拡張はありません。まだ。
はい、Mercurialの方法は、ファイルとファイルのみを追跡するためのようです。そして、そのような拡張機能を正しく正しくする方法は、必要なメタデータを... repo/.hg*ファイルに入れることです。
わかった。私はそれで遊んでいます。ツールを書き込もうとする前に、手作業で物事を行う。
バージョンされた.hgファイルアプローチの重要な弱点は、非先端バージョンをチェックすると、「Hg update -R Old-version」をチェックすると、メタデータの古いバージョンが入手されることです。
したがって、重要なことは、メタデータを... repo/.hg*ファイルに入れることだと思います。
ただし...ほとんどの操作は、そのようなファイルの最新バージョンで、またはそのような最新バージョンで実行する必要があります。つまり、そのようなメタデータファイルはバージョンを「Truscend」バージョンにしたいと思いますが、理想的な状況では、古いバージョンをチェックアウトした通常のバージョンのファイルに重複するものとして想像するかもしれません。
さらに、多くの場合、このようなメタデータファイルの分岐を個別に処理する必要があります。たとえば、すべてのブランチの説明を一緒に書こうとしているファイルを想像してください。おそらく、「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
これにより、古いバージョンのファイルと一緒に最新のメタデータをチェックすることができます
SuperRepoの特定のバージョンをチェックアウトすると、Metadata Subrepoの古いバージョンが得られる可能性があるため、まったくありません。しかし、少なくとも新しいバージョンはSubrepoにあります。
また、メタデータを隣接するサブレポに入れたり、同じリポジトリに保管したりする場合(ただし、先端で動作します)、できることにも注意してください。
hg clone -r OLD-REVISION repo newrepo
これにより、古いリビジョンよりも遅くメタデータが取り除かれます。 「Old-Revisionがすべてのテストに合格した」と書かれたメタデータを含め、IEは、古いリビジョンに適用される可能性のある後の改訂からメタデータを取り除きます。
この同じ問題は、HGタグで発生します。
「まあ、それを決してしない」と言うかもしれません - 歴史を剥がさないでください。残念ながら、それはリポジトリを「片付ける」方法としてよく推奨されます。
水銀でこれを避けるのは難しいようです。