一、從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工具,直接將項目拉到倉庫里面,直接提交就好了。