背景: Mercurial トピック
Mercurial には、拡張機能topics
の一部として優れた機能呼び出しがあります。これらは一時的な軽量のローカル ブランチとして機能し、 Heptapod ワークフローevolve
の不可欠な部分であり、たとえばを介した Git との適切なやり取りを保証します。これらは、ファイル (または のリポジトリごと)に以下を含めることで有効になります。hg-git
~/.hgrc
.hg/hgrc
# ~/.hgrc
...
[extensions]
evolve =
topics =
これらはローカル作業用に設計されているため、プッシュすると、トピックはサーバーにプッシュされません (ただし、Heptapod ワークフローを使用して git で一時的なブランチになります)。
質問
リポジトリをローカルでクローンして、クローン内のトピックを取得するにはどうすればよいですか?
答えの一部は、ソース リポジトリを非公開に設定することです(おそらく、クローン作成後にクローン リポジトリでこれを行う必要があります)。
# source_repo/.hg/hgrc
[phases]
publish = false
draft
これにより、トピックの一部である変更セットのフェーズが維持されますが、トピック名は複製されません。
MnWE
mkdir a
cd a
touch A.txt
hg init
hg add A.txt
hg topic "A"
hg commit -m "Initial commit of A"
echo > .hg/hgrc <<EOF
[phases]
publish = false
EOF
cd ..
hg clone a b
a
では、トピック `A` があり、コミットは下書き段階にあります (出力ではオレンジ色で示されています)。
$ hg log -v
changeset: 0:62c4... # orange, indicating draft phase
tag: tip
topic: A
user: Michael <...>
date: Wed ...
files: A.txt
description:
Initial commit of A
ではb
、フェーズを含めてすべて同じですdraft
が、トピックはありません。
$ hg log -v
changeset: 0:62c4... # orange, indicating draft phase
tag: tip
user: Michael <...>
date: Wed ...
files: A.txt
description:
Initial commit of A