sccs2svn转换后修订信息不匹配

时间:2011-06-03 13:08:55

标签: 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之前,有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分: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
如果用

代替,

效果会更好

mergedVersions = [[versions[0]]]
for v in versions([1:]):
    if v.match(mergedVersions[-1][-1]):
        mergedVersions[-1].append(v)
    else:
        mergedVersions.append([v])

此外,_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