SVN是C/S架构,数据存放分红服务器端和客户端。建立代码库通常指的是SVN服务器端的操做,这个库随便建在什么地方均可以;你要发布的线上代码,这是存放在SVN的客户端的。 SVN的服务器端和客户端存放文件的格式是不一样的,因此不能直接访问SVN服务器端的存储路径,只能经过SVN客户端将服务器端的存储内容checkout或者export出来。
一、先创建一个SVN服务器(能够专门安装SVN服务器端安装包,创建用http/https或svn协议访问的SVN服务器;也能够简单用TortoiseSVN建立本地的用files:///方式访问的SVN服务器); 二、在服务器端创建一个空的版本库,将你原有的www-web-项目 文件夹 上传到SVN服务器新建的版本库中; 三、在你线上存放代码的地方新建一个文件夹,并将版本库中的内容checkout到这个新文件夹,设置这个文件夹是之后线上发布代码的文件夹; 四、在你开发用的工做电脑上checkout一个文件夹出来,平时在这个文件夹修改代码,修改完成后上传到SVN服务器,而后在线上代码对应的文件夹那里更新获得上传的新代码。 这样的话,你的整个工做就分红了3个存储位置:一、服务器端,二、开发端,三、线上发布端,这就层次分明、互不干扰了。
准备两台机器,一台作服务端,一台作客户端。web
[root@server ~]# yum -y install subversion #安装软件 [root@server ~]# mkdir -p /home/svn/test #建立版本库目录(自定义) [root@server ~]# svnadmin create /home/svn/test #建立新的repository(版本库) [root@server ~]# cd /home/svn/test/conf [root@server conf]# ls #建立版本库后,会自动生成三个配置文件 authz passwd svnserve.conf [root@server conf]# vim svnserve.conf #进入配置文件,将下面5行注释打开 anon-access = read auth-access = write password-db = passwd authz-db = authz realm = My First Repository =================================================================================== anon-access: 控制非鉴权用户访问版本库的权限。 auth-access: 控制鉴权用户访问版本库的权限。 password-db: 指定用户名口令文件名。 authz-db:指定权限配置文件名,经过该文件能够实现以路径为基础的访问控制。 realm:指定版本库的认证域,即在登陆时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文 ===================================================================================
[root@server conf]# vim passwd #在users模块里面添加一个用户yjssjm,密码是123
[root@server conf]# vim authz [groups] harry_and_sally = harry,sally harry_sally_and_joe = harry,sally,&joe yjssjm = yjssjm #定义组yjssjm,且里面只有一个用户yjssjm,组名能够自定义,用户名能够加多个,以逗号隔开 [test:/] #定义目录,此目录是项目test的根目录 @yjssjm = rw #用户可读可写 * = rw #其它用户也可读可写 ====================================================================== [root@server conf]# #svnserve –d –r /home/svn #启动服务 [root@server conf]# lsof -i:3690 #默认端口号 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME svnserve 15464 root 3u IPv4 216724 0t0 TCP *:svn (LISTEN) [root@server conf]# svnlook tree /home/svn/test/ --full-paths --show-ids #查看版本库 --full-paths 显示路径 --show-ids 显示版本号
[root@client ~]# yum -y install subversion [root@client ~]# svn checkout svn://服务端ip/home/svn/test
若是报错:
缘由:svn服务未启动或者是启动的时候未指定svn仓库路径,svn默认仓库路径为/var/svn,因此咱们须要手动指定为/home/svn/
解决方案:shell
ps -aux|grep svn #查找出来svn的pid, kill -9 svn的pid进程号 #用kill杀掉进程 svnserver –d –r /home/svn/ #重启服务
提交代码文件:
服务器上没有的文件,在客户端须要先add预提交,再commit,若是服务器端已有的文件,直接commitvim
# 提交test.txt文件 [root@client ~]# cd /root/davesvn/test [root@client test]# vim test.txt #随意写入数据 [root@client test]# svn add test.txt A test.txt [root@client test]# svn commit test.txt -m "test-version1" Authentication realm: My First Repository Password for 'root': #输入虚拟机root密码 Authentication realm: My First Repository Username: svn #输入svn配置文件内建立的用户 Password for 'svn': #输入用户密码 ------ ATTENTION! Your password for authentication realm: \``` My First Repository \``` can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in ## '/root/.subversion/servers'. Store password unencrypted (yes/no)? yes #输入yes Adding test.txt Transmitting file data . Committed revision 1.
大家的评论和点赞是我写文章的最大动力,蟹蟹。服务器