我阅读了Git手册、常见问题解答、Git-SVN速成课程等,他们都解释了这一点和那一点,但你找不到像这样的简单说明:
SVN存储库位于:svn://myserver/path/to/svn/repos
Git存储库位于:git://myserver/path/to/git/repos
git-do-the-magic-svn-import-with-history \
svn://myserver/path/to/svn/repos \
git://myserver/path/to/git/repos
我不希望它这么简单,也不希望它是一个命令。但我确实希望它不要试图解释任何事情——只是说在这个例子中应该采取什么步骤。
我在一台windows机器上,通过调用
传输.bathttp://svn.my.address/svn/myrepo/trunk https://git.my.address/orga/myrepo
也许任何人都可以使用它。它创建了一个TMP文件夹,用git签出SVN repo,添加新的来源并推送它……然后再次删除文件夹。
@echo off
SET FROM=%1
SET TO=%2
SET TMP=tmp_%random%
echo from: %FROM%
echo to: %TO%
echo tmp: %TMP%
pause
git svn clone --no-metadata --authors-file=users.txt %FROM% %TMP%
cd %TMP%
git remote add origin %TO%
git push --set-upstream origin master
cd ..
echo delete %TMP% ...
pause
rmdir /s /q %TMP%
您仍然需要users.txt和用户映射,如
User1 = User One <u.1@xxx.com>
我建议在尝试经常使用Git-svn之前,先熟悉Git,即保持svn作为集中存储库并在本地使用Git。
然而,对于具有所有历史记录的简单迁移,以下是几个简单步骤:
初始化本地回购:
mkdir project
cd project
git svn init http://svn.url
标记要开始导入修订的时间:
git svn fetch -r42
(或仅对所有版本使用“gitsvn-fetch”)
事实上,从那时起,获取一切:
git svn rebase
您可以使用Gitk检查导入的结果。我不确定这是否适用于Windows,但适用于OSX和Linux:
gitk
当您在本地克隆了SVN repo后,您可能希望将其推送到集中的Git repo,以便于协作。
首先创建空的远程存储库(可能在GitHub上?):
git remote add origin git@github.com:user/project-name.git
然后,可选地同步您的主分支,这样当远程主机和本地主机都包含新内容时,拉操作将自动合并远程主机:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
之后,您可能会有兴趣尝试我自己的git_remote_branch工具,它有助于处理远程分支:
第一篇解释文章:“Git远程分支”
跟进最新版本:“git与git_remote_branch协作的时间”