gpt4 book ai didi

mercurial - 转换 Mercurial 存储库时重命名标签

转载 作者:行者123 更新时间:2023-12-01 02:42:27 24 4
gpt4 key购买 nike

我有一个 Mercurial 存储库,并且只想要它在新 Mercurial 存储库中的内容的一个子集。我知道如何使用 Convert Extension 来做到这一点带有文件映射文件。

但是,我也喜欢过滤标签,即只保留一个特定于我喜欢包含的文件。我将能够命名所有这些标签,也想重命名它们。换句话说,我还需要一个标签映射功能。

我知道我可以排除 .hgtags然后手动添加所有标签或如何添加 rename tags ,但我实际上喜欢保留原始标记日期和修订版本,因此转换后的存储库看起来“真实”。

任何想法如何做到这一点?我也不介意写一些 Python 代码。

最佳答案

正如您所发现的,此功能今天不存在。编写它会是一个有趣的小练习:-) 你应该从 hg 的源开始。下沉改 _rewritetags function .它解析 data (当前正在转换的变更集的 .hgtags 文件的内容)并重写变更集哈希以匹配新的哈希。

这是您重写或排除标签的机会!我像这样修改了文件以排除低于 2.0 版本的标签并稍微重写它们:

def _rewritetags(self, source, revmap, data):
def keep(tag):
try:
version = map(int, tag.split('.'))
return version >= [2, 0]
except ValueError:
return False

def rename(tag):
return tag + "-partial"

fp = cStringIO.StringIO()
for line in data.splitlines():
s = line.split(' ', 1)
if len(s) != 2:
continue
if not keep(s[1]):
continue
revid = revmap.get(source.lookuprev(s[0]))
if not revid:
continue
fp.write('%s %s\n' % (revid, rename(s[1])))
return fp.getvalue()

为了测试,我也改了 self.filemapmodeTrue无条件。否则, convert不会检测和过滤掉空提交。由于您已经使用了文件映射,因此应该没问题。

最后,去除由 convert 添加的额外“更新标签”变更集,您将再次拥有一个不错的历史记录。

关于mercurial - 转换 Mercurial 存储库时重命名标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com