重命名项目的Git-svn / hgsubversion克隆

时间:2012-11-30 08:26:57

标签: svn git-svn hgsubversion

我有一个SVN项目,我想要克隆到Git或Mercurial。克隆到两个VCS'工作正常,除了一个主要问题 - 我总是得到最后一次修订,没有任何其他历史记录。

我可以清楚地看到问题的根源是最近重命名了SVN项目(重命名是最后一次修订,是我唯一能够获得的版本)。使用SVN我可以看到项目背后的所有历史,没有任何问题。

最奇怪的是,当我使用git-svn clone时,我可以看到它经历了许多修改,据说导入它们,但我最终只得到一个修订版。与Git不同,向后工作的Mercurial只需要进行最后一次修订,并完成克隆。

另外,值得注意的是,最后一个SVN项目重命名/移动并不是唯一的。在此之前至少有两个其他重命名,我确实需要完整的项目历史记录,就像我使用SVN看到它一样。

2 个答案:

答案 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)来源),拉回购共同,修复历史