私信  •  关注

community wiki 2 revs Ruslan M

community wiki 2 revs Ruslan M 最近创建的主题
community wiki 2 revs Ruslan M 最近回复了
6 年前
回复了 community wiki 2 revs Ruslan M 创建的主题 » 如何将具有历史记录的SVN存储库迁移到新的Git存储库?

实现这一目标有不同的方法。我已经尝试了其中的一些方法,发现真正有效的方法是在Windows操作系统上安装Git和SVN。

先决条件:

  1. Windows上的Git(我用过这个) https://git-scm.com/
  2. 安装了控制台工具的SVN(我使用了Tortoise SVN)
  3. 转储SVN存储库的文件。 svnadmin dump /path/to/repository > repo_name.svn_dump

实现最终目标的步骤(将所有具有历史记录的存储库移动到Git,首先是本地Git,然后是远程存储库)

  1. 在目录repo_name_文件夹中创建空存储库(使用控制台工具或Tortoissesvn) cd REPO_NAME_PARENT_FOLDER ,将dumpfile.dump放入repo_name_parent_文件夹

  2. svnadmin load REPO_NAME_FOLDER < dumpfile.dump 等待这个操作,可能会很长时间

  3. 这个命令是无声的,所以打开第二个命令窗口: svnserve -d -R --root REPO_NAME_FOLDER 为什么不直接使用文件:///……?因为下一个命令将失败 Unable to open ... to URL: 谢谢你的回答 https://stackoverflow.com/a/6300968/4953065

  4. 创建新文件夹源Git文件夹

  5. cd SOURCE_GIT_FOLDER
  6. git svn clone svn://localhost/wait等待此操作。

最后,我们得到了什么?

让我们检查我们的本地存储库:

git log

看到你以前的承诺了吗?如果是-好

因此,现在您已经拥有了功能齐全的本地Git存储库,其中包含了您的源代码和旧的SVN历史记录。 现在,如果要将其移动到某个服务器,请使用以下命令:

git remote add origin https://fullurlpathtoyourrepo/reponame.git
git push -u origin --all # pushes up the repo and its refs for the first time
git push -u origin --tags # pushes up any tags

在我的例子中,我不需要tags命令,因为我的repo没有tags。

祝你好运!