Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换Mercurial存储库时重命名标记_Mercurial_Tags_Rename - Fatal编程技术网

转换Mercurial存储库时重命名标记

转换Mercurial存储库时重命名标记,mercurial,tags,rename,Mercurial,Tags,Rename,我有一个Mercurial存储库,只希望在新的Mercurial存储库中包含其内容的一个子集。我知道如何使用带有文件映射文件的 但是,我也喜欢过滤标签,即只保留一个特定于我想要包含的文件的标签。我很抱歉,我将能够命名所有这些标签,还想重命名它们。换句话说,我还需要一个标记映射功能 我知道我可以排除.hgtags,然后手动添加所有标记或如何添加,但我实际上喜欢保留原始标记日期和修订,因此转换后的存储库看起来“真实” 有什么办法吗?我也不介意编写一些Python代码。正如您所发现的,这个功能在今天并

我有一个Mercurial存储库,只希望在新的Mercurial存储库中包含其内容的一个子集。我知道如何使用带有文件映射文件的

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

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


有什么办法吗?我也不介意编写一些Python代码。

正如您所发现的,这个功能在今天并不存在。编写它将是一个有趣的小练习:-)您应该从
hg
sink的源代码开始,然后更改。它解析
数据(当前正在转换的变更集的
.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.filemapmode
更改为
True
。否则,
convert
将无法检测并过滤掉空提交。因为您已经使用了文件映射,所以应该不会有问题


最后,去掉convert添加的额外“update tags”变更集,您将再次拥有一个良好的历史记录。

我不确定订单是如何保留的,但您可以指定希望在创建带有-d或--date的标记时记录标记的日期?它并不能精确地解决它所做的修订,但它可以让你将日期设置为你想要的。@TrentonSchulz:谢谢。我知道日期,以前也用过。这是我的实际备份计划。你能不能把它和按日期而不是按分支机构排序的转换结合起来?