背景:Mercurial 主题
Mercurial 有一个很好的功能调用topics
作为evolve
扩展的一部分。它们充当临时的轻量级本地分支,并且是Heptapod 工作流程不可或缺的一部分,例如确保与 Git(通过)的良好交互hg-git
。它们是通过在您的~/.hgrc
文件(或 per-repo in .hg/hgrc
)中包含以下内容来启用的:
# ~/.hgrc
...
[extensions]
evolve =
topics =
由于这些是为本地工作而设计的,因此当您推送时,主题不会推送到服务器(而是通过Heptapod 工作流程成为 git 中的临时分支)。
问题
如何在本地克隆 repo 以获取克隆中的主题?
部分答案是将源存储库设置为非发布:(可能应该在克隆后的克隆存储库中执行此操作)。
# source_repo/.hg/hgrc
[phases]
publish = false
这会保留作为draft
主题一部分的变更集的阶段,但不会克隆主题名称。
锰WE
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