1.Svn
1.Svn简介
SVN是C/S架构,数据存放分成服务器端和客户端。创建代码库一般指的是SVN服务器端的操作,这个库随便建在什么地方都可以;你要发布的线上代码,这是存放在SVN的客户端的。
SVN的服务器端和客户端存放文件的格式是不同的,所以不能直接访问SVN服务器端的存储路径,只能通过SVN客户端将服务器端的存储内容checkout或者export出来。
2.搭建过程
1、先建立一个SVN服务器(可以专门安装SVN服务器端安装包,建立用http/https或svn协议访问的SVN服务器;也可以简单用TortoiseSVN创建本地的用files:///方式访问的SVN服务器);
2、在服务器端建立一个空的版本库,将你原有的www-web-项目 文件夹 上传到SVN服务器新建的版本库中;
3、在你线上存放代码的地方新建一个文件夹,并将版本库中的内容checkout到这个新文件夹,设置这个文件夹是以后线上发布代码的文件夹;
4、在你开发用的工作电脑上checkout一个文件夹出来,平时在这个文件夹修改代码,修改完成后上传到SVN服务器,然后在线上代码对应的文件夹那里更新得到上传的新代码。
这样的话,你的整个工作就分成了3个存储位置:1、服务器端,2、开发端,3、线上发布端,这就井井有条、互不干扰了。
2.部署Svn
准备两台机器,一台做服务端,一台做客户端。
1.服务端搭建
[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 显示版本号
2.客户端测试
[root@client ~]# yum -y install subversion
[root@client ~]# svn checkout svn://服务端ip/home/svn/test
如果报错:
原因:svn服务未启动或者是启动的时候未指定svn仓库路径,svn默认仓库路径为/var/svn,所以我们需要手动指定为/home/svn/
解决方案:
ps -aux|grep svn #查找出来svn的pid,
kill -9 svn的pid进程号 #用kill杀掉进程
svnserver –d –r /home/svn/ #重启服务
提交代码文件:
服务器上没有的文件,在客户端需要先add预提交,再commit,如果服务器端已有的文件,直接commit
#svn add /root/davesvn/test
#svn ci /root/davesvn/test -m “创建新文件” //ci是commit的缩写, -m是添加注释
# 提交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.