创建新的 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 histedithg help convert)。

【讨论】:

好的,让我们看看我是否明白。如果我 hg clone -b mybranch ,我将拥有一个包含所有历史记录但只有我的分支的仓库。那么,如果我说我想从 rev 5 到小费,我应该如何设置 histedit opts? 您选择要编辑的提交。然后你折叠它们。链接的 wiki 页面有一个示例,尤其是链接的自述文件 bitbucket.org/durin42/histedit/src/tip/… - 它不是一个单一的命令

以上是关于创建新的 mercurial 存储库克隆 SINCE 修订版的主要内容,如果未能解决你的问题,请参考以下文章

在推送之前丢弃 Mercurial 中的本地分支

Mercurial:两个Windows开发人员,我的PC上的中央存储库。我应该在中央存储库中工作还是从中克隆?

如何在 Mercurial 中更新现有克隆存储库的 URL

从 C# 克隆 Mercurial 存储库?

如何在 Mercurial 中克隆存储库的子文件夹?

将存储库克隆到本地文件系统上的文件夹的 Mercurial hg 克隆语法是啥