hg convert --authors wrongUsers <-- 文件格式是什么?

6 投票
1 回答
945 浏览
提问于 2025-04-16 15:13

相关内容可以查看 这里。具体的操作步骤可以参考 这里,里面有示例:

john=John Smith <John.Smith@someplace.net>
tom=Tom Johnson <Tom.Johnson@bigcity.com>

但这到底是什么意思呢?假设我想把 "hh <right@gmail.com>" 替换成 "hhh <right@gmail.com>",那这一行应该写成什么样子呢?“用户名”、“映射”和“文件名”这些词是什么意思呢?我在 "convert/__init__.py" 里找到了这一部分 "username mapping filename"

cmdtable = {
    "convert":
        (convert,
         [('A', 'authors', '', _('username mapping filename')),
          ('d', 'dest-type', '', _('destination repository type')),
          ('', 'filemap', '', _('remap file names using contents of file')),
          ('r', 'rev', '', _('import up to target revision REV')),

这段代码创建了一个对象,把作者的信息存储为字典,具体在 convcmd.py 的第79行:

class converter(object):
    def __init__(self, ui, source, dest, revmapfile, opts):

        self.source = source
        self.dest = dest
        self.ui = ui
        self.opts = opts
        self.commitcache = {}
        self.authors = {}
        self.authorfile = None

它会用 "=" 来分割作者文件中的每一行,但从这里开始我就搞不懂它是怎么工作的。那么,修正错误作者的 authors.file 应该是什么样子的呢?如果可以的话,请告诉我具体的代码行,因为我觉得文档很难懂。

[更新]

我尝试了各种文件选项,但 "$ hg status""$ hg log --template '{author}\n'" 的结果都没有变化。要么我在执行 "$ hg convert --authors conversionAuthors ." 这个命令后需要做一些奇怪的操作,要么我无法匹配到作者。我怎么才能知道 "完全匹配" 是什么?我怎么知道自己是否成功了呢?

1 个回答

7

这个转换扩展使用的是文字替换的方法。

做个简单的实验,如果你想把 hh <right@gmail.com> 替换成别的名字,你只需要创建一个作者映射文件,内容如下:

hh <right@gmail.com> = hhh <right@gmail.com>

左边的部分必须和你想替换的作者名字完全一致。如果不完全一致,就不会进行替换。

撰写回答