版本控制软件subversion的配置与使用

本文参考自版本控制软件subversion的配置与使用

查看原文: 原文地址

概述:Subversion是一个自由/开源的版本控制系统,在subversion容许数据恢复到早期版本,支持检查数据修改的历史,容许和别人协作文档并跟踪所做的的修改。

subversion的工作原理:


subversion的内部结构:


sub 如果是本地就本地访问,如果不在一台就使用apache 和svnserver访问

在主机web1安装subversion服务器

[root@web1 ~]# yum -y install subversion   -----安装软件

[root@web1 ~]# rpm -q subversion          ----显示版本信息
[root@web1 ~]# svnadmin create /var/svn/project   -------仓库目录
[root@web1 ~]# ls /var/svn   -----可以创建多个仓库
project  project2
[root@web1 svn]# du -sh project    ---查看仓库内存
100K project           ----空仓库
[root@web1 svn]# cd /usr/lib/systemd/system   -------起服务的配置文件
[root@web1 system]# svn import . file:///var/svn/project/ -m "Init Data"   ----从本机的subversion仓库下载仓库信息
正在增加       runlevel0.target
正在增加       anaconda-sshd.service

提交后的版本为 1。

[root@web1 system]# cd /var/svn/    -----跳转到相应的仓库
[root@web1 svn]# du -sh project 
608K project                 -----不是明文
[root@web1 ~]# cd /var/svn/project/conf      ----跳转到subversion的相应的配置文件目录
[root@web1 conf]# ls
authz  passwd  svnserve.conf       ------使得客户运程访问的时候需要修改的三个配置文件
[root@web1 ~]# vim /var/svn/project/conf/svnserve.conf     -----修改以下的配置信息
//修改19行,注意顶格,匿名无任何权限 
anon-access = none
//修改20行,注意顶格,有效账户可写
auth-access = write
//修改27行,注意顶格,密码文件
password-db = passwd
//修改34行,注意顶格,ACL访问控制列表文件
authz-db = authz
[root@web1 ~]# vim /var/svn/project/conf/passwd     ---在该配置文件下添加可以访问subversion的用户信息
在第6行的 [users]下添加可以访问svn的用户以及密码
harry = 123456
sally = 123456
[root@web1 ~]# vim /var/svn/project/conf/authz        -----在该配置文件下设置控制信息
[/test]
tom=rw
* =
[/]
*=r
启动服务
[root@web1 ~]# svnserve -d -r /var/svn/project  --共享给一个仓库
[root@web1 ~]# svnserve -d                      --共享所有仓库
如果要重新的启动服务的化,需要killall svnserver在启动服务

客户端访问测试
svn checkout svn://192.168.2.100 code 把svn的文件下载到文件code下,如果没有则创建了相应的文件夹,checkout可以简写成co
[root@web2 ~]# mkdir /zhu    ----创建一个新的目录用于存放从subversion服务器的相应的库中下载的信息
[root@web2 ~]# cd /zhu      ----跳转到相应的库
[root@web2 zhu]# yum -y install subversion    ----安装subversion 
[root@web2 zhu]# svn --username harry --password 123456 co  svn://192.168.2.100 code   ----从库中下载信息存在code
注意!  你的密码,对于认证域:
   <svn://192.168.2.100:3690> 3997b70e-97cf-40c3-9724-13618347e4b1
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
[root@web2 zhu]# ls
code

[root@web2 zhu]cd code

测试:修改下载到本地的一个文件并上传,可以看到 Subversion已经把整个文件的版本改成了版本2

[root@web2 code]# vim zram.service   ----更改相应的文件
[root@web2 code]# vim virtlockd.service    ----更改相应的文件
[root@web2 code]# svn ci -m "modify"
正在发送       virtlockd.service
正在发送       zram.service
传输文件数据..

提交后的版本为 2。

subversion应用举例

1.当从subversion库中下载下来的文件被误删除的时候,可以通过更新的命令恢复

[root@web2 code]# ls | wc -l
397
root@web2 code]# rm -rf *.socket
[root@web2 code]# ls | wc -l
377
[root@web2 code]# svn update
正在升级 '.':
已还原“virtlockd.socket”
....
已还原“lvm2-lvmpolld.socket”
版本 2。
[root@web2 code]# ls | wc -l
397


2.可以查看subversion库版本的信息
[root@web2 code]# svn info svn://192.168.2.100
路径: .
URL: svn://192.168.2.100
版本库根: svn://192.168.2.100
版本库 UUID: 3997b70e-97cf-40c3-9724-13618347e4b1
版本: 2
节点种类: 目录
最后修改的作者: harry
最后修改的版本: 2
最后修改的时间: 2018-07-14 13:25:42 +0800 (六, 2018-07-14)

2.可以查看subversion库版本的日志信息
[root@web2 code]# svn log svn://192.168.2.100
------------------------------------------------------------------------
r2 | harry | 2018-07-14 13:25:42 +0800 (六, 2018-07-14) | 1 行


modify
------------------------------------------------------------------------
r1 | root | 2018-07-14 08:54:34 +0800 (六, 2018-07-14) | 1 行


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


3.新建的文件默认不能提交,需要add添加后才可以把创建的文件信息上传到相应的文件
[root@web2 code]# echo "xxx" > test.sh
[root@web2 code]# ls test.sh
test.sh
[root@web2 code]# svn ci -m "xx"
[root@web2 code]# svn add test.sh
A         test.sh
[root@web2 code]# svn ci -m "new shell file"
正在增加       test.sh
传输文件数据.
提交后的版本为 3。

4.新建目录
[root@web2 code]# svn mkdir test
A         test
[root@web2 code]# svn ci -m "xx"
正在增加       test
提交后的版本为 4。

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
提交后的版本为 5。
6.[root@web2 code]# svn --help  查看帮助
7.[root@web2 code]# svn diff     -----查看本地的文件和服务器上的文件的区别
Index: umount.target
===================================================================
--- umount.target (版本 2)
+++ umount.target (工作副本)
@@ -1,5 +1,5 @@
 #  This file is part of systemd.
-#
+ksljdkshfjkdshfj#
 #  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]# svn cat svn://192.168.2.100:/umount.target 查看服务器文件的内容
#  This file is part of systemd.
#
#  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
#  (at your option) any later version.
[Unit]
Description=Unmount All Filesystems
Documentation=man:systemd.special(7)
DefaultDependencies=no
RefuseManualStart=yes


8.本地删除文件与svn恢复
[root@web2 code]# sed -i 'd' tmp.mount    
[root@web2 code]# cat tmp.mount
[root@web2 code]# svn revert tmp.mount
已恢复“tmp.mount”
[root@web2 code]# wc -l tmp.mount
26 tmp.mount

9.还原到相关的版本
[root@web2 code]# sed -i '1a #test#' tuned.service
[root@web2 code]# head -3 tuned.service
[Unit]
#test#
Description=Dynamic System Tuning Daemon
[root@web2 code]# svn ci -m "xx"
正在发送       tuned.service
正在发送       umount.target
传输文件数据..
提交后的版本为 6。
[root@web2 code]# svn merge -r5
svn: E205001: 请使用 “svn help” 以得到更多信息
svn: E205001: 需要合并源
[root@web2 code]# svn merge -r6:2 tuned.service
--- 正在反向合并 r6,经由 r3,到 “tuned.service”:
U    tuned.service
--- 记录反向合并 r6,经由 r3,到“tuned.service”的信息:
 U   tuned.service
--- 正在从 'tuned.s
 
10.恢复到原来的版本-r可以指定到相应的版本
[root@web2 zhu]# svn -r1 co svn://192.168.2.100 abc
A    abc/system.slice
A    abc/local-fs.target.wants/rhel-import-state.service
取出版本 1。
[root@web2 zhu]# ls
abc  code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值