一、Subversion基本操做
是一个自由/开源的版本控制系统(SVN)
多人协做文档并跟踪所作的修改
1.1基本概念:
版本库:是版本控制的核心;任意数量客户端;客户端经过写数据库分享代码
Subversion特色:记录每一次改变
1.2版本模型
版本控制系统的核心任务是协做编辑和数据共享nginx
1.3搭建subversion服务
[root@Web1 ~]# yum -y install subversion #装包
[root@Web1 ~]# mkdir /var/svn
[root@Web1 ~]# svnadmin create /var/svn/project #建立共享目录
[root@Web1 ~]# ls /var/svn/project
conf db format hooks locks README.txt
[root@Web1 system]# cd /usr/lib/systemd/system
#导入数据(实验以此路径做为数据导入)
[root@Web1 system]# svn import . file:///var/svn/project/ -m "First Code"
#-m “注释”
[root@Web1 ~]# svn list file:///var/svn/project #查看共享目录内的内容
[root@Web1 ~]# cd /var/svn/project/ #这样是看不到的
1.4修改配置文件
[root@Web1 ~]# vim /var/svn/project/conf/svnserve.conf
19 anon-access = none #匿名无任何权限
20 auth-access = write #输入密码的帐户(有效帐户)可读写
27 password-db = passwd #密码文件
34 authz-db = authz #ACL访问控制列表文件
[root@Web1 ~]# vim /var/svn/project/conf/passwd #用户名,密码文件
[root@Web1 ~]# vim /var/svn/project/conf/authz #针对每一个文件作权限
[/] #定义ACL访问控制 = rw #全部人能够对共享目录rw
[/test] #对/test定义 tom = rw #tom 可rw harry = r #harry可r
[/abc] = #全部人不能够
对于本案例:[/] tom = rw harry = rw
1.5启动服务(2种方法)
[root@web1 ~]# svnserve -d -r /var/svn/project/ #指定一个目录共享出去 -d放后台
[root@web1 ~]# systemctl start svnserve #全部目录都共享出去
1.6客户端测试
[root@web2 ~]# cd /tmp
[root@web2 tmp]# svn co --username tom --password 123456 svn://192.168.2.100/
code #co : checkout(检查下载) 用户名 密码 从哪下载 存的目录(自动建立本地副本)
[root@web2 code]# vim user.slice #在目录code下随便修改一个文件
[root@web2 code]# svn ci -m "code2" #改完以后上传 ci (comit)
此时服务器端所保存的文件有2个版本
1.7其余命令
[root@web2 code]#svn update #更新数据
[root@web2 ~]# svn info svn://192.168.2.100 #查看版本仓库信息
[root@web2 ~]# svn log svn://192.168.2.100 #查看版本修改历史
add命令
写两个脚本test.sh test1.sh
[root@web2 ~]# cd /tmp/code #须要在本地副本内操做
[root@web2 code]#svn add +文件名 #本地版本库添加新文件
当前位置必须是下载文件的位置操做,新加的文件也须要放在该目录下
[root@web2 code]# svn list svn://192.168.2.100 | grep test #添加的test.sh并无找到
[root@web2 code]# svn ci -m "add test"
[root@web2 code]# svn list svn://192.168.2.100 | grep test
test.sh
test1.sh
mkdir命令
[root@web2 ~]#svn mkdir +目录
[root@web2 code]# svn mkdir test
[root@Web2 code]# cd test
[root@web2 test]# echo "add test file" > abc.txt
[root@Web2 test]# svn add abc.txt
[root@web2 test]# svn ci -m "mkdir and add file"
del命令
[root@web2 ~]#svn del +文件
#不会自动提交到版本库,本地已删除,服务器上还存在,须要svn ci -m
[root@web2 code]# svn ci -m "del test.sh" #真正在库内删除
list命令
[root@web2 ~]#svn list svn://192.168.2.100 #文件列表
[root@web2 ~]#svn mv/cp/rm
[root@web2 code]#svn diff #本地副本库和服务器中文件对比web
两种修改副本状况
一、本地修改,未提交
[root@web2 code]# vim zram.service #本地删除里面数据
[root@web2 code]# svn revert zram.service #数据恢复
已恢复“zram.service”
revert 本地副本修改后,但未ci提交,能够数据恢复
二、本地修改,提交
[root@web2 code]# svn merge -r7:5 zram.service #将7版本还原为5版本
[root@web2 tmp]# svn -r1 co svn://192.168.2.100 code2
取出第一个版本放在code2中数据库
1.8多人协同:
环境:在不一样客户端不一样用户登陆的操做
一、修改不一样文件
[root@Web1 code]# svn update
[root@Web2 code]# svn update
#两台保持相同内容
Web1修改一个文件,并上传 版本更新+1
Web2修改另外一个文件,上传,版本更新+2
此时web1修改的web2没有修改,web2修改的web1没有修改
分别svn update 两边版本相同,相对原来+2
二、修改相同文件的不一样内容
Web1修改一个文件,并上传 版本更新+1
Web2修改同一个文件,上传,提示过时,svn update 版本更新+1(修改的地方没有被覆盖!!),并上传 版本更新+1 (共+2)
Web1 svn update 版本更新+1
三、修改相同文件的相同内容(冲突,认为解决)
Web1修改一个文件,并上传 版本更新+1
Web2修改同一个文件,上传,提示过时,svn update,提示:在 “/tmp/code/user.slice”中发现冲突。
选择: (p) 推迟,(df) 显示所有差别,(e) 编辑,
(mc) 个人版本, (tc) 他人的版本,
(s) 显示所有选项:
选p后会在目录下多出好几个版本,删除不要的,而后再上传vim
[root@Web1 code]# svnadmin dump /var/svn/project/ > my.bak #全部版本都进行了备份
[root@Web1 code]# svnadmin load /var/svn/project2/ < my.bak #还原服务器
二、RPM包
1).rpm 是压缩包(源码安装后的目录)
2).rpm包含一些描述信息
2.1实现步骤:
1)安装rpm-build软件包
[root@web1 ~]# yum -y install rpm-build
2)生成rpmbuild目录结构
[root@web1 ~]# rpmbuild -ba xx.spec #生成rpmbuild目录以及子目录
[root@web1 ~]# ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
SOURCES:存放源码包的目录
SPECS:配置文件(基本信息,源码安装)
BUILDROOT:假根(对于rpmbuild这个软件,装包装在这个根下,不影响真实根)
RPMS:成品的位置,RPM包
3)准备工做,将源码软件复制到SOURCES目录
以nginx的源码包为例:
[root@web1 ~]# cp lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/
4)建立并修改SPEC配置文件
[root@web1 ~]# vim rpmbuild/SPECS/nginx.spec
填写软件信息
License:GPL #此软件定义为开源
%prep #源码包解包,并cd进去
%setup -q ide
%build #配置编译
%configure #模块化配置,可替换为./configure --with-http_ssl_module
make %{?_smp_mflags}模块化
%files
%doc
/usr/local/nginx/* #将该路径下全部打包
5)安装依赖关系以及打包
[root@Web1 ~]# yum -y install gcc pcre-devel zlib-devel
openssl-devel(http_ssl_module)须要装这个
[root@web01 ~]# cd rpmbuild/
[root@web01 rpmbuild]# rpmbuild -ba SPECS/nginx.spec
[root@web01 ~]# ls rpmbuild/RPMS/x86_64/
nginx-1.8.0-40.x86_64.rpm nginx-debuginfo-1.8.0-40.x86_64.rpm
6)可使用自定义yum仓库安装svn