Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据。这些数据放置在一个*资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。
本文目录:
linux svn服务器部署
linux svn客户端命令操作
linux svn备份与恢复
一、linux svn服务器部署
1、安装svn
[root@yang~]#yum install -y subversion
[root@yang~]#svnserve--version
svnserve,version 1.6.11 (r934486)
2、创建SVN版本库
[root@yang~]# mkdir /data/svn
[root@yang~]# svnadmin create /data/svn/project
[root@yangproject]# ls /data/svn/project/
conf db format hooks locks README.txt
3、配置SVN
[root@yangproject]# cd /data/svn/project/conf/
[root@yangconf]# ls
authz passwd svnserve.conf
文件说明:
1)svnserve.conf: svn服务配置文件下。
2)passwd: 用户名密码文件。
3)authz: svn权限配置文件。
svnserve.conf文件
该文件配置项分为以下5项:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access: 控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
配置如下:
[root@yangconf]# grep -E "anon-access =|auth-access =|password-db =|authz-db =|realm=" svnserve.conf
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svn/project
passwd文件
作用是配置用户名和密码
[root@yangconf]# cat passwd
[users]
yangyun= yangyunpasswd
test = testpasswd
authz文件
配置用户访问权限
[root@yangconf]# cat authz |grep -v '#'
[aliases]
[groups]
project_w=yangyun
project_r=test
[/]
project_w=rw
project_r=r
4、启动svn服务
[root@yangconf]# svnserve -d -r /data/svn
5、初始化svn数据
[root@yangdjango]# svn import mysite file:///data/svn/project/ -m 'initial import'
将会拷贝目录mysite到版本库的project下
[root@yangdjango]# svn list file:///data/svn/project
manage.py
mysite/
static/
templates/
web02/
在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。
二、linux svn客户端命令操作
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
简写:svn co
例:
svn co svn://115.28.24.178/project --username=yangyun --password=yangyunpasswd
#指定版本的文件
svn co svn://115.28.24.178/project --username=yangyun --password=yangyunpasswd -r 5
2、往本地版本库中添加新的文件
svn add file #此命令得在checkout出来的路径里才能操作
例如:
cp /root/123.txt./
svn add 123.txt #把123.txt加入到本地库中
A 123.txt
3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保锁,就使用--no-unlock开关)
简写:svn ci
例:
svn commit 123.txt -m 'add 123.txt' #只提交123.txt
svn commit -m 'add 123.txt' #默认提交当前目录下的所以文件
svn commit *.txt -m 'add 123.txt' #也可以正则匹配文件提交
4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH
例如:
svn lock -m "lock test file" test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit
简写:svn up
6、删除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete testfile"
或者直接svn delete test.php 然后再svn ci -m 'delete testfile‘,推荐使用这种
简写:svn (del, remove, rm)
7、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
8、查看文件详细信息
svn infopath
例如:svn info test.php #可知道路径版本,时间,提交者等信息
9、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php #可知道修改了哪些内容
简写:svn di
10、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
11、SVN 帮助
svn help
svn help ci
12、版本库下的文件和目录列表
svn list path #显示path目录下的所有属于版本库的文件和目录
简写:svn ls
13、创建纳入版本控制下的新目录
svn mkdir:创建纳入版本控制下的新目录。
用法:
svn mkdirPATH #效果等同:mkdir test;svn add test;
14、恢复本地修改
svn revert:恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
三、linux svn备份与恢复
1、全量备份:
curr=`svnlook youngest /data/svn/project/` #此处是查询工程目录的最新版本
svnadmin dump /data/svn/repos/test --revision 0:$cur --incremental >0-"$curr"svn.bak
echo $curr >/tmp/svn_revision
2、增量备份
old=`cat /tmp/svn_revision`
new=`svnlook youngest /data/svn/project/`
svnadmin dump /data/svn/repos/test --revision $old:$new --incremental >$old"-"$new"svn.bak
3、svn恢复
恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份,然后恢复紧挨着这个文件的增量备份。
cd /data/svn/repos/
svnadmin create test2
svnadmin load test2 < /data/svnback/20110719/0-1112svn.bak
svnadmin load test2 < /data/svnback/20110719/1113-1120svn.bak
linux svn服务器搭建、客户端操作、备份与恢复的更多相关文章
-
linux svn 服务器搭建问题
我的svn版本 svn, version 1.7.14 (r1542130) compiled Nov 20 2015, 19:25:09 Copyright (C) 2013 The Apache ...
-
Linux svn服务器搭建
一.安装 yum -y install subversion 二.建立版本库目录 mkdir /var/svn/svnrepos 三.创建svn版本库 svnadmin create /var/svn ...
-
​Linux下的SVN服务器搭建
Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...
-
Linux下的SVN服务器搭建
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...
-
linux 中 svn 服务器搭建 重启
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...
-
Linux SVN服务器的搭建配置及分支的创建与合并
第一步:通过yum命令安装svnserve,命令如下: >yum -y install subversion 若需查看svn安装位置,可以用以下命令: >rpm -ql subversio ...
-
Linux centos7 下 svn 服务器搭建
摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...
-
Linux下的SVN服务器搭建(转)
Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此 ...
-
SVN服务器搭建及客户端配置
为什么要使用SVN? 在程序的编写过程中,每个程序员都会负责开发一个或多个模块,且开发中会生成很多不同的版本, 这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subvers ...
随机推荐
-
Entity Framework 6 Recipes 2nd Edition(11-12)译 ->; 定义内置函数
11-12. 定义内置函数 问题 想要定义一个在eSQL 和LINQ 查询里使用的内置函数. 解决方案 我们要在数据库中使用IsNull 函数,但是EF没有为eSQL 或LINQ发布这个函数. 假设我 ...
-
JMeter专题系列(六)集合点
JMeter也有像LR中的集合点: JMeter里面的集合点是通过添加定时器来完成. 注意:集合点的位置一定要在Sample之前. 集合点:虽然我们的“性能测试”理解为“多用户并发测试”,但客观上来说 ...
-
Python之几种重要的基本类型:元组,列表,字典,字符串,集合
写在前面:重点讲解元组,列表,字典相关概念和常用操作. 一.元组(tuple) 1.特性:不可更改的数据序列.[理解:一旦创建元组,则这个元组就不能被修改,即不能对元组进行更新.增加.删除操作] 2. ...
-
Linux netlink机制
netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink ...
-
琐碎-hadoop2.2.0-hbase0.96.0-hive0.13.1整合
关于hadoop和hive.hbase的整合就不说了,这里就是在hadoop2.2.0的环境下整合hbase和hive 因为hive0.12不支持hadoop2,所以还要替换一些hadoop的jar包 ...
-
css的!important规则对性能有影响吗
最近在做项目中发现很多CSS代码里面都使用!important去覆盖原有高优先级的样式.按照常理来说,越是灵活的东西,需要做的工作就会更多.所以想当然的认为像!important这样灵活.方便的规则如 ...
-
js checkbox多选值采集
var objs = document.getElementsByTagName("input"); for (var i = 0; i < objs.length; i++ ...
-
Jmeter_从jdbc请求的响应中获取参数做关联
在之前的文章-参数关联中,留个一个小尾巴,这里补充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:从sql表中将需要取的数据查出来 2:我们需要把 ...
-
一看你就懂,超详细java中的ClassLoader详解
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...
-
servlet 乱码解决方法
一. servlet 发送的html 页面中文乱码 解决方法, 1.加入如下代码 response.setCharacterEncoding("UTF-8"); 2.在html页面 ...