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