删除变更集或缩小 Mercurial 存储库
如何通过删除旧的变更集来缩小 Mercurial 存储库?
How can I shrink a mercurial repository by removing old changesets?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何通过删除旧的变更集来缩小 Mercurial 存储库?
How can I shrink a mercurial repository by removing old changesets?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
从根本上来说,你不能。 Mercurial 有一条严格的规则,即只有当某个变更集的每个祖先变更集也存在于该存储库中时,该变更集才能存在于该存储库中。
但是,您可以创建一个新存储库,其变更集对应于另一个存储库中后续变更集的子集。然而,它们不会是相同的变更集,因为它们将具有不同的哈希节点 ID,并且原始存储库中的任何克隆都无法与新存储库一起使用(“不相关的存储库”)。
您可以尝试使用如下过程创建一个仅反映另一个存储库中的一些较新变更集的新存储库:
这将仅将编号为 10 及之后的变更集复制到新存储库中具有不同哈希值的新变更集中。它对于合并也不会很好地工作。
Fundamentally, you can't. Mercurial has a hard and fast rule that a changeset can only exist in a repository if every one of its ancestor changesets also exists in that repository.
You can, however, create a new repository whose changesets correspond to a subset of the later changesets in another repository. They won't, however be the same changesets, because they'll have different hash nodeids, and any clones from the original repo won't work with the new one ("unrelated repositories").
You could try to create a new repo reflecting only some of newer changesets in another repo using a process like this:
That would copy only the changesets numbered 10 and later into new changesets with different hashes in the new repository. It also won't work terribly well with merges.
请参阅
convert
扩展(包含在 Mercurial 中)。一个简单的示例如下:这将生成一个新的、不相关的存储库,该存储库以指定的修订版开始,删除以前的历史记录。它也将处理合并。所有用户都需要克隆存储库的新版本,因为变更集哈希值都会发生变化。
通过将以下内容添加到
mercurial.ini
来启用该扩展:运行
hg help Convert
获取选项。See the
convert
extension (included with Mercurial). A simple example is the following:This will generate a new, unrelated repository that starts with the revision specified, dropping previous history. It will handle merges as well. All users will need to clone the new version of the repository, since changeset hashes will all change.
Enable the extension by adding the following to
mercurial.ini
:Run
hg help convert
for options.