创建本地SVN版本库以及将SVN导入GIT

时间:2021-07-02 20:07:26

创建本地SVN

通常SVN作为一种服务,是在服务器上架设,供用户通过网络访问使用。但如果只是自己日常使用,完全可以架设在本机上,不需要启动后台程序,通过文件的方式访问即可。

建立本地SVN非常简单,一行命令即可:

TerwerdeMac-Pro:~ terwer$ cd Documents
TerwerdeMac-Pro:Documents terwer$ mkdir repos
TerwerdeMac-Pro:Documents terwer$ cd repos
TerwerdeMac-Pro:repos terwer$ pwd
/Users/terwer/Documents/repos
TerwerdeMac-Pro:repos terwer$ svnadmin create /Users/terwer/Documents/repos

导入项目到SVN库

要导入一个项目时:

svn import /Users/terwer/Documents/iOSWorkplace/YFStockiOS file:///Users/terwer/Documents/repos

或者导入到远程SVN

svn import /Users/terwer/Documents/iOSWorkplace/YFStockiOS  http://192.168.1.103:81/svn/yflcpt/YFStockiOS --username=terwer --password=123456 -m "Init commit"

注意要使用绝对路径。

如果出现vi错误,执行下面的命令即可:

export SVN_EDITOR=vi

使用GIT检出项目

checkout这个项目时:

git svn clone file:///Users/terwer/Documents/repos

或者

git svn clone http://192.168.1.103:81/svn/yflcpt/YFStockiOS

这时候,可能出现错误:

Can’t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module)

大致意思是Perl的SVN没有正确和Xcode中的SVN链接起来(升级完Yosemite之后可能出现的问题)。我的本地环境MAC OS X Yosemite 10.10.5 (14F27)。链接完后提示另一个错误:Can’t locate loadable object for module SVN::_Core in @INC。这说明其它组件没有被正确加载,执行另一条链接命令。具体命令如下:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.18/SVN

sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.18/auto/SVN

重要更新

对于OS X EI Capitan,上面方案还是不行,那么两步解决:

1、如果提示你找不到相关的原始文件,需要安装下command line tool,通过命令:xcode-select --install即可安装。

2、接下来参考我的博客:解决OS X El Capitan下git-svn无法使用的问题

添加远程GIT地址

给本地仓库添加远程地址

git remote add origin https://git.oschina.net/terwergreen/YFStock.git

设置origin master为默认分支

git push --set-upstream origin master

如果设置了上面的,以后直接git push即可,强制推送可以用git push --force

用GIT操作版本库

开始push,git push origin master

如果svnproject中有更新,git svn fetch

然后合并git-svn分支到master上,git merge master git-svn

接着,提交,git add .

在接着,提交,git commit -m"Commit message"

最后git push origin master