6

メインの親リポジトリにタグを付けて、そのタグをすべてのサブリポジトリにも追加することはできますか?

これがないと、プロジェクトをサブリポジトリとして削除して単独でアクセスすると、これは親リポジトリにのみ属しているため、すべてのタグ情報が失われます。

4

1 に答える 1

2

おそらく可能ですが、少しトリッキーです。必要tagな追加情報を収集し、hg tag. ただし、拡張機能を作成するときの API についてはあまり知りません。そのため、私が提供するアイデアはhg、コマンドで直接呼び出すことに基づいています。

デフォルトでは、メイン リポジトリでコミットすると、サブリポジトリが最初にコミットされます。次に、各サブレポの新しい変更セット ID を取得し、.hgsubstate次のような形式でファイルに配置します。

77ba00000fe8e9ca033d97dc07b85a50dd106837 nested

再帰的なタグ.hgsubstate付けでは、メイン リポジトリでタグ付けしている変更セットにあったファイルの内容を取得する必要があります。を考えるかもしれませんがhg revert、作業ディレクトリを簡単に台無しにする可能性があるため、それは悪い考えです (とにかくhgそれを行うのは好きではありませ.hgsubstateん)。そのための最善の策は、そのリビジョンに対して実行し、ファイルの行hg exportの結果の差分を解析することです。+.hgsubstate

次に、 を呼び出すために、それぞれからチャンセット ID とサブレポ名を取得しますhg -R <subrepopath> tag -r <id> <tag>。そしてもちろん、最後にメイン リポジトリにタグを付けます。

これにはまだ潜在的な問題があり、それを認識し続けるか、どのように対処するかを理解する必要があります. 例: メイン リポジトリにコミットし、1 つ以上のサブリポジトリにコミットしていない場合はどうなりますか? メインリポジトリに複数の変更セット.hgsubstateがあり、サブリポジトリに同じ変更セット ID がリストされています。したがって、メイン リポジトリで両方にタグを付けると、サブリポジトリの変更セットには 2 つのタグが付けられます。

TortoisHg 2.0.5 w/ Mercurial 1.8.4 を使用しています。サブリポジトリを独自にタグ付けしても、メイン リポジトリでコミットする必要はなく、ほとんど問題なく動作するはずです。

于 2011-06-27T17:11:36.503 に答える