创建新的 mercurial 存储库克隆 SINCE 修订版
Posted
技术标签:
【中文标题】创建新的 mercurial 存储库克隆 SINCE 修订版【英文标题】:Create new mercurial repository cloning SINCE revision 【发布时间】:2019-02-28 11:12:28 【问题描述】:我有一个巨大的 mercurial 存储库。
克隆和一些操作开始变慢。 我想摆脱旧的提交,但保留自特定日期以来的修订历史。
有没有什么方法可以保留一个特定提交以来的提交,并将所有较旧的父提交折叠在一个分支中?
R1 -> R2 ->R3 ->R4 ->R5 -> R6 -> R7 ->R8 ->提示
[R1-5] ->R6 ->R7 ->R8 ->提示
我尝试使用 GRAFT 来做这样的事情,但它不起作用(也许我现在不知道如何正确地做到这一点)。
可选:Sourcetree 上有这样的选项吗?
【问题讨论】:
Compress away all parents in a repository?的可能重复 另一个问题中提到的 splicemap 选项应该可以工作 【参考方案1】:您无法克隆它来实现此目的。但你基本上有两种选择:
使用histedit 重写历史记录(这是默认扩展,但需要启用) 它为您提供了折叠提交的选项,即将多个提交合并为一个。
convert(本质上也是历史改写) 这使您有机会创建一个仅包含选定提交和分支的新存储库。因此,您可以简单地省略前 4 个提交并从第 5 个提交开始。
还请查看 mercurial 附带的帮助(hg help histedit
、hg help convert
)。
【讨论】:
好的,让我们看看我是否明白。如果我 hg clone -b mybranch ,我将拥有一个包含所有历史记录但只有我的分支的仓库。那么,如果我说我想从 rev 5 到小费,我应该如何设置 histedit opts? 您选择要编辑的提交。然后你折叠它们。链接的 wiki 页面有一个示例,尤其是链接的自述文件 bitbucket.org/durin42/histedit/src/tip/… - 它不是一个单一的命令以上是关于创建新的 mercurial 存储库克隆 SINCE 修订版的主要内容,如果未能解决你的问题,请参考以下文章