Mercurial revset 选择一个书签
Mercurial revset selecting up to a bookmark
如果我的存储库中有这个变更集
A --> B --> C --> D
*
B 已添加书签,D 位于尖端 - 我如何创建一个 revset select B 和 D 之间的所有内容但不是 B。
具体来说,我正在尝试将 C 和 D 压缩到 B,例如:
hg strip -r "bookmark:." -k
除此行外,还将删除我要保留的提交 B。
您可以使用 the histedit
extension 来实现。只需键入 hg histedit c561b4e977df
(其中 c561b4e977df
是您示例中版本 B 的散列)。然后在弹出的编辑器中在修订版 C 和 D 旁边键入 fold
。这会将修订 C 和 D 折叠为 B。
我不完全清楚你是想压缩 C 和 D,创建一个新的提交 C',还是要压缩 B、C 和 D,创建一个新的提交 B',这将保留原来的书签。
第一个:
hg rebase -s 'children(bookmark)' -d bookmark --collapse -m <msg>
您需要使用 -m
或 -l
选项指定提交消息,否则您将进入编辑器。
第二个:
hg rebase -s bookmark -d bookmark^ --collapse -m <msg>
对于指定修订的所有后代(不包括修订本身)的修订集,请使用以下修订集:
children(bookmark)::
请注意,此时的非线性历史可能会产生意想不到的结果(特别是,此处使用 children()
仅假设只有一个子修订版)。
记得为此在你的 hgrc 文件中启用 rebase 扩展。
如果我的存储库中有这个变更集
A --> B --> C --> D
*
B 已添加书签,D 位于尖端 - 我如何创建一个 revset select B 和 D 之间的所有内容但不是 B。
具体来说,我正在尝试将 C 和 D 压缩到 B,例如:
hg strip -r "bookmark:." -k
除此行外,还将删除我要保留的提交 B。
您可以使用 the histedit
extension 来实现。只需键入 hg histedit c561b4e977df
(其中 c561b4e977df
是您示例中版本 B 的散列)。然后在弹出的编辑器中在修订版 C 和 D 旁边键入 fold
。这会将修订 C 和 D 折叠为 B。
我不完全清楚你是想压缩 C 和 D,创建一个新的提交 C',还是要压缩 B、C 和 D,创建一个新的提交 B',这将保留原来的书签。
第一个:
hg rebase -s 'children(bookmark)' -d bookmark --collapse -m <msg>
您需要使用 -m
或 -l
选项指定提交消息,否则您将进入编辑器。
第二个:
hg rebase -s bookmark -d bookmark^ --collapse -m <msg>
对于指定修订的所有后代(不包括修订本身)的修订集,请使用以下修订集:
children(bookmark)::
请注意,此时的非线性历史可能会产生意想不到的结果(特别是,此处使用 children()
仅假设只有一个子修订版)。
记得为此在你的 hgrc 文件中启用 rebase 扩展。