我有一个SVN项目,我想克隆到Git或Mercurial。克隆到两个VCS的工作正常,除了一个主要问题-我总是只得到最后的修订,没有任何其他的历史记录。
我可以清楚地看到,问题的根源是SVN项目最近被重命名(重命名是最后的修订,也是我设法得到的唯一修订)。使用SVN,我可以查看项目背后的所有历史,没有任何问题。
最奇怪的是,当我使用git-svn clone时,我可以看到它经历了许多修订,理应导入它们,但最终我仍然只得到了一个修订。Mercurial与Git不同,它是向后工作的,它只接受最后的修订,并在克隆过程中完成。
此外,重要的是要注意,最后的SVN项目重命名/移动并不是唯一的项目。在此之前,至少还有两个其他的更名,我确实需要完整的项目历史,就像我使用SVN看到的一样。
发布于 2012-11-30 20:30:15
Ideas
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,使用父重命名目录作为根目录。对于同级路径,您会得到许多不相关的更改集,但是(如果重命名是公平的svn move),我希望所有针对相关路径的changeset都会在repo中:您只有清理历史记录。
转储SVN- repo,使用svndumpfilter将其拆分为单独的转储(根据更改的目录名进行转储),将转储加载到单独的svn-repos中,将每个svn-repo克隆到自己的Mercurial存储库中(存储库不能有多个subversion源),将存储库拉入公共位置,修复历史记录
发布于 2012-11-30 16:30:23
对于mercurial,我看到了this guide,这可能会被证明是有帮助的。右边有足够多与git-svn相关的问题来解决你的问题。
我想你已经看过this了,这是一个由Parrot项目完成的关于git-svn的教程。它进一步表明,您需要在git log之后执行git rebase,以确定您想要使用的修订散列代码。和以前一样,如果你需要更多的信息,请留下评论。
https://stackoverflow.com/questions/13641442
复制相似问题