メインの親リポジトリにタグを付けて、そのタグをすべてのサブリポジトリにも追加することはできますか?
これがないと、プロジェクトをサブリポジトリとして削除して単独でアクセスすると、これは親リポジトリにのみ属しているため、すべてのタグ情報が失われます。
メインの親リポジトリにタグを付けて、そのタグをすべてのサブリポジトリにも追加することはできますか?
これがないと、プロジェクトをサブリポジトリとして削除して単独でアクセスすると、これは親リポジトリにのみ属しているため、すべてのタグ情報が失われます。
おそらく可能ですが、少しトリッキーです。必要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 を使用しています。サブリポジトリを独自にタグ付けしても、メイン リポジトリでコミットする必要はなく、ほとんど問題なく動作するはずです。