Subversion(svn)版本控制

步骤一:安装Subversion服务器

1)yum安装subversion软件

[root@web1 ~]# yum -y install subversion

[root@web1 ~]# rpm -q subversion

2)创建版本库

[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

3)本地导入初始化数据

[root@web1 system]# cd /usr/lib/systemd/system/

[root@web1 system]# svn import . file:///var/svn/project/ -m "Init Data"

4)修改配置文件,创建账户与密码

[root@web1 system]# cd 

[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

[root@web1 ~]# vim /var/svn/project/conf/passwd 

[users]
harry = 123456

tom = 123456

[root@web1 ~]# vim /var/svn/project/conf/authz 

[/]     //定义ACL访问控制
harry = rw  //用户对项目根路径可读可写
tom = rw

* = r  //其他人只读

5)启动服务

[root@web1 ~]# svnserve -d -r /var/svn/project   //-d  把svn放入后台  -r指定仓库中的根目录,当用svnserve -d启动时要指定文件根目录svn://192.168.4.4/var/svn/project,也可以用ssh+svn  http+svn等方式访问

[root@web1 ~]# ss -nutlp | grep svnserve
tcp    LISTEN     0      7         *:3690                  *:*                   users:(("svnserve",pid=2034,fd=3))

步骤二:客户端测试

1)将服务器上的代码下载到本地

[root@web2 ~]# cd /tmp

[root@web2 tmp]# svn  --username harry  --password  123456 co  svn://192.168.4.4/ code    //co为下载,code下载的文件名自动生成

保存未加密的密码(yes/no)?yes

[root@web2 tmp]# ls

code

[root@web2 code]# ls -R | wc -l

525

[root@web2 code]# vim user.slice   //随意修改文件

[root@web2 code]# svn ci -m "modify"   //ci 为提交 -m 为提交信息
正在发送       user.slice
传输文件数据.

提交后的版本为 2。  //版本变成2版本,1版本保存了下来

[root@web2 code]# rm -rf *.service

[root@web2 code]# ls -R | wc -l
262

[root@web2 code]# svn update   //更新与仓库中不同的数据,恢复所删除的数据

[root@web2 code]# ls -R | wc -l

525

[root@web2 code]# svn info svn://192.168.4.4
路径: .
URL: svn://192.168.4.4
版本库根: svn://192.168.4.4
版本库 UUID: ed9490ed-d250-4c45-b25f-4bb3b3629869
版本: 2
节点种类: 目录
最后修改的作者: harry
最后修改的版本: 2
最后修改的时间: 2018-07-16 16:30:29 +0800 (一, 2018-07-16)



 

[root@web2 code]# 

[root@web2 code]# svn log svn://192.168.4.4
------------------------------------------------------------------------
r2 | harry | 2018-07-16 16:30:29 +0800 (一, 2018-07-16) | 1 行


modify
------------------------------------------------------------------------
r1 | root | 2018-07-16 15:15:02 +0800 (一, 2018-07-16) | 1 行


Init Data
------------------------------------------------------------------------

[root@web2 code]# 

[root@web2 code]# vim virt-guest-shutdown.target 
[root@web2 code]# svn ci -m "xx"
正在发送       virt-guest-shutdown.target
传输文件数据.
提交后的版本为 3。
[root@web2 code]# svn log svn://192.168.4.4
------------------------------------------------------------------------
r3 | harry | 2018-07-16 17:07:40 +0800 (一, 2018-07-16) | 1 行


xx
------------------------------------------------------------------------
r2 | harry | 2018-07-16 16:30:29 +0800 (一, 2018-07-16) | 1 行


modify
------------------------------------------------------------------------
r1 | root | 2018-07-16 15:15:02 +0800 (一, 2018-07-16) | 1 行


Init Data
------------------------------------------------------------------------

[root@web2 code]# 

[root@web2 code]# echo "test" > test.sh      //本地新建一个文件

[root@web2 code]# svn ci -m "new file"       //提交失败,该文件不被svn管理,因为默认系统文件不会被svn管理

[root@web2 code]# svn add test.sh      //将文件或目录加入版本控制
A         test.sh
[root@web2 code]# svn ci -m "xx"      //再次提交,成功
正在增加       test.sh
传输文件数据.
提交后的版本为 4。

[root@web2 code]# svn ci -m "xx"
正在增加       test.sh
传输文件数据.
提交后的版本为 4。
[root@web2 code]# svn mkdir test
A         test
[root@web2 code]# svn ci -m "xx"
正在增加       test

提交后的版本为 5。

[root@web2 code]# svn rm test.sh
D         test.sh
[root@web2 code]# ls test.sh
ls: 无法访问test.sh: 没有那个文件或目录
[root@web2 code]# svn ci -m "yy"
正在删除       test.sh

提交后的版本为 6。
[root@web2 code]# 

[root@web2 code]# svn --help
用法: svn <subcommand> [options] [args]
Subversion 命令行客户端,版本 1.7.14。
使用“svn help <subcommand>” 显示子命令的帮助信息。
使用“svn --version”查看程序的版本号和版本库访问模块,或者
使用“svn --version --quiet”只查看程序的版本号。

大多数的子命令可接受文件或目录参数,对目录进行递归处理。
如果没有指定参数,默认对当前目录(包含当前目录)递归处理。

可用的子命令: 
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   patch
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   relocate
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)
   upgrade

Subversion 是版本控制工具。
欲取得详细资料,请参阅 http://subversion.apache.org/
 

[root@web2 code]# vim umount.target 
[root@web2 code]# svn diff

[root@web2 code]# svn diff umount.target

Index: umount.target
===================================================================
--- umount.target    (版本 2)
+++ umount.target    (工作副本)
@@ -1,5 +1,5 @@
 #  This file is part of systemd.
-#
+#   test
 #  systemd is free software; you can redistribute it and/or modify it
 #  under the terms of the GNU Lesser General Public License as published by
 #  the Free Software Foundation; either version 2.1 of the License, or
[root@web2 code]# 
[root@web2 code]# svn cat svn://192.168.4.4/umount.target    //diff可以找到不同的文件,此时可以打开另一个终端打开此文件来查看不同点

[root@web2 code]# svn ci -m "xxx"
正在发送       umount.target
传输文件数据.
提交后的版本为 7。
[root@web2 code]# svn diff

//sed -i  'd'  tmp.mount      p(打印)   d(删除)   s(替换)   a  i  

插入   c是替换当前行

//删除文件内容,但未提交

[root@web2 code]# sed -i 'd' tmp.mount
[root@web2 code]# cat tmp.mount

//还原tmp.mount文件

[root@web2 code]# svn revert tmp.mount
已恢复“tmp.mount”
[root@web2 code]# wc -l tmp.mount
26 tmp.mount
[root@web2 code]# 

//修改

[root@web2 code]# sed -i '1a #test#' tuned.service       //在第一行后面加1a #test#'

[root@web2 code]# cat tuned.service
[Unit]
#test#

[root@web2 code]# svn ci -m "xx"    //svn只是做增量的操作不作覆盖
正在发送       tuned.service
传输文件数据.
提交后的版本为 8。

[root@web2 code]# svn info     //查看版本
路径: .
工作副本根目录: /tmp/code
URL: svn://192.168.4.4
版本库根: svn://192.168.4.4
版本库 UUID: ed9490ed-d250-4c45-b25f-4bb3b3629869
版本: 2
节点种类: 目录
调度: 正常
最后修改的作者: harry
最后修改的版本: 2
最后修改的时间: 2018-07-16 16:30:29 +0800 (一, 2018-07-16)
[root@web2 code]# svn update
正在升级 '.':
版本 8。

[root@web2 code]# svn merge -r8:2 tuned.service   //从第8个版本还原到第2个版本,merge后面必须加文件名
--- 正在反向合并 r8,经由 r3,到 “tuned.service”:
U    tuned.service
--- 记录反向合并 r8,经由 r3,到“tuned.service”的信息:
 U   tuned.service
--- 正在从 'tuned.service' 删除合并信息:
 U   tuned.service
[root@web2 code]# head -3 tuned.service 
[Unit]
Description=Dynamic System Tuning Daemon
After=syslog.target systemd-sysctl.service network.target

[root@web2 tmp]# svn -r2 co svn://192.168.4.4  qq     //指定版本co下载到当前目录下的qq目录下与update不同的是update只下载不同的文件,co是所有的都下载一次
 

猜你喜欢

转载自blog.csdn.net/weixin_40018205/article/details/81068612
今日推荐