一、从svn导出项目
使用命令(地址可以是svn开头,也可以是http,https):
git svn clone svn://xxx/project/iOS/Common --authors-file=usres.txt(可选) --no-metadata -s commom
可选部分是svn用户名与git用户名的一个映射文件,如:
schacon = Scott Chacon <schacon@geemail.com>
我这里没有做这一步,所以不多说。
'--no-metadata ':表示去掉与svn有关的信息。
'-s'表示所有trunk,branches,tags。如果不想要所有的,需要单独指定,但不保证不会出问题。
执行上面的命令后,我这边报错了,信息如下:
Using higher level of URL: svn://xxx/project/iOS/Common => svn://xxx/project
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/iOS/Common'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
好像是说需要使用更高级别的URL,找不到/iOS/Common路径,虽然不知道具体什么原因,但还是找到了解决方法,替换成如下命令:
git svn clone svn://120.78.128.162/project/iOS/Common --no-metadata commom
添加了'--no-minimize-url '参数,意思是不缩小输入地址。
去掉了-s,这里有个问题是加入-s有时候可以,有时候却不行,不知道为什么。总之有问题两个都尝试一下。
至此,我们已经从svn将项目导出了,而且是去除svn信息的。这里你会在'common'文件夹看到项目内容。
二、将项目提交到git仓库
前提:我的仓库是公司私有的,且是直接在网站上已经创建了的(且有了初始导入)。所以这里有点绕圈子了,如果没有初始导入,那就很简单了。直接add后push就可以了。
首先,我得先将git上的项目先clone下来(虽然里面就一个readMe文件),使用如下命令:
git clone http://xxx.git(会将git项目clone到当前文件夹下)
然后将上面从svn导出的项目拖入git目录下。
之后就是添加并提交了:
cd git目录下
git add .
git commit -m "xxx"
git push
如果这种方式不成功,最便捷的方式是使用工具来操作。可以下载sourceTree工具,直接将项目拉到仓库里面,直接提交就好了。