标签:
这几天领导没有安排工作,闲着没事就想把自己这两年做iOS开发时感觉知识有欠缺的地方想好好深入地补习一下,昨天和今天就计划好好学习下SVN和git的从创建和到原理,到命令,到界面的使用。一不小心被另一领导发现我在研究这个,又看我没事就想让我帮忙帮她的组把SVN权限给改一改,我也挺乐意,能让自己所学的东西派上用场那是何等的幸运,而且她也让我更相信准备着被人宰,总比等死好,起码能卖个价钱(微笑)。
我们多数开发公司都是在windows下使用VisualSVN搭建代码版本控制服务器环境的,这一块我也已经算是比较熟悉。但今天了解到我公司的版本控制是托管在Linux下的,满满的信心稍微有一点打折,不过还好,我全能的特点虽然有时候让我不专业,但是有时侯也是能派上用场的(得意),现在在公司干iOS开发的我,其实之前干过两年的Linux系统管理员,所以相信稍微熟悉下SVN命令应该问题不大,所以一咬牙一跺脚就爽快地接下这个活了。
通过了解发现在Linux下使用SVN基本和在Mac环境下是一模一样(我又得意一次,因为做iOS肯定用过一些svn命令的嘛),而且Mac还内置SVN服务器和客户端工具(难得体会到使用Mac的优越感),不过Linux系统多数版本需要自己安装SVN服务器工具的(如果有时间有心情我会安装下Linux系统玩玩再写一篇Linux下安装svn的方法,目前您可以参考这两篇:yum安装svn方法http://www.cnblogs.com/jiqing9006/p/3370627.html或者源文件安装方法:Linux下SVN安装配置http://www.cnblogs.com/xd502djj/archive/2011/01/21/1941404.html)。既然命令一样我就懒得搭建Linux环境了,反正这个活也不需要我从头来,那直接使用的我的Mac进行实验了。唠叨的人碎碎念一圈,开始办正事吧!
搭建SVN服务器并建立代码仓库
首先我们先创建一个SVN服务器目录,作为SVN代码的总目录,以后可以在下面建立多个仓库目录。这里我创建目录/User/jackiehoo/Documents/SVNServer 。输入命令:
mkdir ~/Documents/SVNServer
然后我们就在这个目录下开始工作吧,我这里创建一个SVNTest仓库,输入命令:
svnadmin create /Users/hoojackie/Documents/SVNServer/SVNTest
指令执行成功后,我们可以发现硬盘上多了/Users/hoojackie/Documents/SVNServer/SVNTest,目录结构如图:
如果您看到上图类似的目录,说明您代码仓库创建完毕,下一步就是要配置svn。
配置svn的用户权限
注意到了上图中的conf目录吗,它里面有个三个文件authz , passwd , svnserve.conf,它们管理着我们的多数svn配置设置。下面我就介绍一下常用配置吧,具体您可以参考SVN手册。
1.配置版本库配置文件
进入conf目录,输入命令
vi svnserve.conf
打开svnserve.conf,将下面的内容前面的#和空格(一定要顶格,不要有空格,否则会出问题,切记啊,亲)去掉。
# anon-access = read # auth-access = write # password-db = passwd # authz-db = authz
其中,anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none代表禁止匿名访问,需要帐号密码才能访问;auth-access = write 使授权用户有写权限;password-db = passwd指明密码文件路径;uthz-db = authz 访问控制文件。
2.配置用户
打开passwd配置文件:进入conf目录,输入命令
vi passwd
我是这么修改的。
在[users]下面配置您需要添加的svn账户,=等号左边表示用户名,右边表示密码。
最后我们可以在authz文件中设置用户和组的权限了。
打开authz文件,进入conf目录,输入命令:
vi authz
我们可以在[groups]行下将我们之前添加的用户的添加到组里。=等号左边是组名,右边是用户名,多个用户用英文逗号(,)隔开。 比如我是这么设置组的,三个组Manager,UI,Web。
[groups] Manager = jackihoo UI = zhangsan,lisi Web = wanger,mazi
组配置完了,然后我们需要设置用户和组对仓库的访问权限了。继续编辑authz文件。比如我是这么设置的。
[/] @Manager = rw @UI = rw @Web = r
到此我们的svn基本配置完毕,现在我们只需要启动我们的svn服务器。(忙活半天,成败就在此一举了)。
启动我们的svn服务器
在终端输入下列指令:
svnserve -d -r /Users/hoojackie/Documents/SVNServer
或者输入:
svnserve -d -r /Users/hoojackie/Documents/SVNServer
哈哈,我刚敲出这个命令,没有任何提示,如果您也是,代表应该启动成功了。我们可以通过Mac的活动监视器查看一下:
进程存在,说明我们已经成功搭建了我们的svn服务器环境了。您也看点击上图的退出进程,关闭svn服务器。
使用svn客户端进行测试
测试1:测试从本地倒入代码到服务器
这里我就先继续使用命令行了,当然您也可以使用界面工具测试。我拿我做过的一个个人项目《丁丁印记》作为本地代码导入到svn服务器(这个工作在实际项目中一般由技术负责人对项目进行第一次初始化导入,我这里把自己乱入一下(微笑))。
在终端输入命令
svn import /Users/hoojackie/Documents/Development/MomentsLife\(丁丁印记\)/MomentsLife\(丁丁印记\)/ svn://localhost/SVNTest/MomentsLife --username=jackiehoo --password=jackiehoo -m “第一初始化导入代码”
前面一个路径代表本地代码的路径,右边目录代表远程svn服务器的目录路径,这里我在本地测试,所以是localhost,实际环境中您需要换成远程svn服务器的IP地址。
然后如果您看到下图类似效果,代表您正在上传代码:
其实我前两次敲这个命令出现错误提示:
svn: E170001: Authorization failed
原因是我在配置authz访问目录权限时,我们有在组名前加@这个符号。所以如果您也遇到这个错误,请注意检查用户名,组名等其他设置是否正确。
上传完成后您会看Committed revision 1.字样,代表上传成功了。在此恭喜您。。不过别放松警惕,继续让其他成员测试下他们的读写权限吧。请您参考试试吧。下面还有几个需要您测试的我就不一个一个做了。
测试2:从服务器端下载代码到客户端本地
( 待完成)
测试3:测试更改过的代码到服务器
(待完成 )
测试4:更新服务器端的代码到客户端
(待完成)
svn的其他用法
至于svn的其他用法,可以在终端输入:svn help
这里列出一大堆svn指令,后面括号中的内容的一般代表着指令的简称,比如我们可以用svn ci代替svn commit,用svn co代替svn checkout。
Mac下SVN服务器环境的搭建和配置(除展示图片外,所有命令在Linux/Unix下适用)
标签:
原文地址:http://www.cnblogs.com/JackieHoo/p/4976433.html