我正在尝试将现有的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之前,有没有人遇到过这个问题?
答案 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