3

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

我可以清楚地看到问题的根源是SVN项目最近被重命名(重命名是最后一个修订版,我唯一设法得到的)。使用 SVN,我可以毫无问题地查看项目背后的所有历史。

最奇怪的是,当我使用 git-svn clone 时,我可以看到它经历了无数次修订,据说是导入它们,但最后我仍然只得到一个修订。与 Git 不同的是,向后工作的 Mercurial 只接受最后一次修订并完成克隆。

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

4

2 回答 2

0

对于mercurial,我看到本指南可能会有所帮助。右侧有足够多的与git-svn相关的其他问题来解决您的问题。

我假设你看到了这个,由Parrot项目完成的关于 git-svn 的教程。进一步看来,您需要在git log之后执行git rebase以确定您要使用的修订哈希码。和以前一样,如果您需要更多信息,请发表评论。

于 2012-11-30T08:30:22.967 回答
0

想法

  • 由于不可能使用 PEG 修订版克隆不存在的 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。对于同级路径,您将获得许多不相关的变更集,但是(如果重命名是公平的svn move)我希望,所有有问题的路径的 chageset 都将在 repo 中:您只有清理历史记录

  • 拆分和合并

转储 SVN-repo,使用 svndumpfilter 将其拆分为单独的转储(根据更改的目录名称转储),将转储加载到单独的 svn-repos,将每个 svn-repo 克隆到自己的 Mercurial 回购(回购不能有多个颠覆来源),将回购拉入公共,修复历史

于 2012-11-30T12:30:14.637 回答