我有一个SVN项目,我想要克隆到Git或Mercurial。克隆到两个VCS'工作正常,除了一个主要问题 - 我总是得到最后一次修订,没有任何其他历史记录。
我可以清楚地看到问题的根源是最近重命名了SVN项目(重命名是最后一次修订,是我唯一能够获得的版本)。使用SVN我可以看到项目背后的所有历史,没有任何问题。
最奇怪的是,当我使用git-svn clone时,我可以看到它经历了许多修改,据说导入它们,但我最终只得到一个修订版。与Git不同,向后工作的Mercurial只需要进行最后一次修订,并完成克隆。
另外,值得注意的是,最后一个SVN项目重命名/移动并不是唯一的。在此之前至少有两个其他重命名,我确实需要完整的项目历史记录,就像我使用SVN看到它一样。
答案 0 :(得分:0)
对于mercurial,我看到this guide可能会有所帮助。关于与git-svn相关的权利还有足够的其他问题来解决您的问题。
我假设您看到了this,这是Parrot项目完成的git-svn教程。您还需要在git rebase之后执行git log以确定您要使用的修订哈希码。和以前一样,如果您需要更多信息,请发表评论。
答案 1 :(得分:0)
<强>观强>
由于无法使用PEG-revision克隆不存在的svn-URL
hg clone http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16
abort: HTTP Error 404: Not Found
即使
svn ls http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16
Hello.txt
你可以尝试克隆repo,使用父od重命名的目录作为root。你会得到很多与sibling路径不相关的变更集,但是(如果重命名是公平的svn move
)我希望,所有关于路径的chagesets都将在repo中:你只有清理历史< / p>
转储SVN-repo,将其与svndumpfilter拆分为单独的转储(转换每个更改的目录名称),将转储装载到单独的svn-repos中,将每个svn-repo克隆到自己的Mercurial仓库中(repo不能有多个subversion)来源),拉回购共同,修复历史