【发布时间】:2018-08-20 16:53:27
【问题描述】:
我们有一个超过 6GB 的 Hg 存储库和 150,000 个变更集。它在大型应用程序上已有 8 年的历史。在过去的 8 年中,我们使用了分支策略。在这种方法中,我们为功能创建一个新分支,完成后关闭分支并将其合并到默认/主干。在将更改推送到默认值后,我们不会修剪分支。
随着我们的 repo 增长,使用它变得越来越痛苦。我们喜欢拥有每个文件的完整历史记录,并且不想丢失它,但我们想让我们的 repo 大小更小。
我一直在研究的一种方法是拥有两个独立的存储库,一个“工作”存储库和一个“存档”存储库。工作回购将包含最近 1 到 2 年的历史,并且将是回购开发人员每天克隆和推/拉的。 Archive repo 将包含完整的历史记录,包括推送到工作 repo 中的新变更集。
我找不到正确的 Hg 命令来启用它。我能够使用hg convert <src> <dest> --config convert.hg.startref=<rev> 创建一个工作存储库。然而,Mecurial 认为这是一个完全不同的存储库,打破了工作存储库和存档存储库之间的任何关联。我无法找到将推送到工作存储库的变更集合并/拼接到存档存储库并维护统一文件历史记录的方法。我尝试了hg transplant -s <src>,但这导致了几个“跳过清空变更集”消息。我不清楚为什么hg transplant 命令感觉这些变更集是空的。另外,如果我要让这个工作,有谁知道它是否维护文件的历史,或者我的 repo 是否会将移植的部分视为单独的,可能显示为删除/创建或其他内容?
任何人都有解决方案来启用这种工作/存档方法或有可能对我们有用的不同方法?保持完整的文件历史记录对于简化历史研究至关重要。
谢谢
【问题讨论】:
-
你好 Bryan,你能详细说明为什么你想让 repo 更小吗?是因为克隆太慢了吗?是不是因为某些操作太慢了(commit、push、pull)? Mercurial 最近有一些实验性更改可以帮助您,但首先我需要有关您的存储库的更多信息。你能运行
hg heads -T "\n" | wc -l,它会给出你的存储库上的开放头数吗?
标签: mercurial repository