sccs2svn转换后修订信息不匹配

Son*_*yaH 5 python svn version-control

我正在尝试将现有的SCCS存储库转换为SVN格式,并且我一直在使用推荐的sccs2svn python脚本.但是,它似乎"修改"修订信息如下:

SCCS prt给出:

 revision 5, date 5, author 5, comment 5
 revision 4, date 4, author 4, comment 4
 revision 3, date 3, author 3, comment 3
 revision 2, date 2, author 2, comment 2
 revision 1, date 1, author 1, comment 1

SVN日志给出:

revision 8, today's date, today's author, comment = 'Automated keyword replacement'
revision 7, date 5, today's author, comment = 'Automated property set'
revision 6, today's date, author 5, comment 5
revision 5, date 5, author 4, comment 4
revision 4, date 4, author 3, comment 3
revision 3, date 3, author 2, comment 2
revision 2, date 2, author 1, comment 1
revision 1, date 1, author 1, comment 1

在我开始详细挖掘sccs2svn.py之前,有没有人遇到过这个问题?

Mar*_*ler 1

SonyaH 在问题中发布了此内容,这里是一个清理后的答案:

中存在差一错误run()。这段代码:

mergedVersions = [[versions[0]]]
i = 0
while i < len(versions):
    if versions[i].match(mergedVersions[-1][-1]):
        mergedVersions[-1].append(versions[i])
    else:
        mergedVersions.append([versions[i]])
    i += 1
Run Code Online (Sandbox Code Playgroud)

如果替换为效果更好

mergedVersions = [[versions[0]]]
for v in versions([1:]):
    if v.match(mergedVersions[-1][-1]):
        mergedVersions[-1].append(v)
    else:
        mergedVersions.append([v])
Run Code Online (Sandbox Code Playgroud)

另外,类_commit中的方法SVNInterface有问题。它更改最新修订号的日期(如 sccs2svn 所知),然后提交该修订。不幸的是,sccs2svn 从零开始计算其修订版本号,而 Subversion 从 1 开始计算。因此,如果您按如下方式颠倒函数调用的顺序,现在所有内容都会匹配:

def _commit(self, rev, date, txn, subpool):
    svn_rev = repos.svn_repos_fs_commit_txn(self.repos_ptr, txn, subpool)
    fs.change_rev_prop(self.fsob, svn_rev, core.SVN_PROP_REVISION_DATE,
                       date, subpool)
    return svn_rev
Run Code Online (Sandbox Code Playgroud)