首页 > 代码库 > 【SVN版本管理】
【SVN版本管理】
第1章 SVN
希望大家可以一起学习,可以加笔者QQ86416192
1.1 SVN简介
SVN是Subversion的简称,是一个开放源代码的版本控制系统。
Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库
(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文
件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。
SVN是一个通用的软件系统,他不但可以用来管理程序源码,也可以管理任何类型
的文件,如文本、视频、图片等等。
1.2常见版本管理工具
SVN
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。
Git
分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库。
1.3SVN的运行及访问模式
独立服务访问 ===>svn://svn.etiantian.org/sadoc 简单,高效
借助Apache等http服务===>http://svn.etiantian.org/sadoc
a、单独安装Apache+SVN(不要用,麻烦)
b、csvn(apache+svn)是一个单独的整合的软件,带web界面管理
本地直接访问 file:///application/svndata/sadoc
1.4SVN数据格式
SVN存储数据有2种方式:BDB(BerkleyDB,事务安全型)和FSFS(不需要数据库的存
储系统,一系列二进制文件)。一方面解决了许多问题 (例如,并行读写共享文件)
以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此
变得不透明。
由于BDB格式会出现锁住数据库的情况,所以现在使用FSFS方式更安全一点。在SVN
1.2版本以前用BDB,以后默认使用FSFS。
1.5SVN安装
环境要求
CentOS7.2
Selinux和防火墙关闭
安装SVN
rpm -qasubversion
yum -yinstall subversion
1. 环境检查
[root@oldboyedu ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@oldboyedu ~]# getenforce
Disabled
[root@oldboyedu ~]# systemctl statusfirewalld.service
● firewalld.service - firewalld - dynamic firewalldaemon
Loaded:loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset:enabled)
Active:inactive (dead)
2.安装svn
[root@oldboyedu ~]# rpm -qa subversion
subversion-1.7.14-10.el7.x86_64
3.初始化工作目录
# 建立SVN版本库根目录(svndata)及密码权限目录(svnpasswd)
mkdir -p /application/{svndata,svnpasswd}
# 初始化工作目录
svnadmin create/application/svndata/oldboyedu
4.配置文件
# 账号权限密码集中管理,就复制一次,以后创建的版本库只需要在已有配置文件修改即可,否则覆盖丢失以前的密码与权限。
cp/application/{svndata/oldboyedu/conf/{authz,passwd},svnpasswd}
chmod 600 /application/svnpasswd/*
ll -h /application/svnpasswd/*
cd /application/svndata/oldboyedu/conf/
sed -i.ori ‘8a anon-access =none\nauth-access = write\npassword-db = /application/svnpasswd/passwd\nauthz-db= /application/svnpasswd/authz‘ svnserve.conf
diff svnserve.conf{,.ori}
[root@python ~]# cp/application/{svndata/oldboyedu/conf/{authz,passwd},svnpasswd}
vnpasswd/passwd\nauthz-db =/application/svnpasswd/authz‘ svnserve.conf
diff svnserve.conf{,.ori}
[root@python ~]# chmod 600 /application/svnpasswd/*
[root@python ~]# ll -h /application/svnpasswd/*
-rw------- 1 root root 1.1K Jul 18 06:21/application/svnpasswd/authz
-rw------- 1 root root 309 Jul 18 06:21 /application/svnpasswd/passwd
[root@python ~]# cd/application/svndata/oldboyedu/conf/
[root@python conf]# sed -i.ori ‘8a anon-access =none\nauth-access = write\npassword-db =/application/svnpasswd/passwd\nauthz-db = /application/svnpasswd/authz‘svnserve.conf
[root@python conf]# diff svnserve.conf{,.ori}
9,12d8
< anon-access = none
< auth-access = write
< password-db = /application/svnpasswd/passwd
< authz-db = /application/svnpasswd/authz
5.添加账号密码
vim /application/svnpasswd/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
root = 123456
oldboy = 654321
vim /application/svnpasswd/authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe =harry,sally,&joe
35team = root,oldboy
[oldboyedu:/]
root = rw
[oldboyedu:/oldboy]
oldboy = rw
6. 启动SVN
[root@oldboyedu conf]# svnserve -r /application/svndata/ -d
[root@oldboyedu conf]# ps -ef|grep svn
root 3128 1 0 09:16 ? 00:00:00 svnserve -r/application/svndata/ -d
root 3130 1413 0 09:16 pts/0 00:00:00 grep --color=auto svn
[root@oldboyedu conf]# netstat -tunlp|grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 3128/svnserve
7.SVNwindows客户端
安装TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi
在安装LanguagePack_1.9.4.27285-x64-zh_CN.msi
在桌面新建一个文件夹svn_data,单击右键,点SVN更新,输入地址为你自己机器的IP
svn://10.0.0.201/oldboyedu
点确定,账号就是你设置的root密码是123456
在F盘或者随便哪里在建立一个新的文件夹test,单击右键,点击提交或者更新,输入的地址为
svn://10.0.0.201/oldboyedu/oldboy 输入的用户为 oldboy 密码是654321,然后在文件夹里面新建文本文档,写完保存,点击提交或者更新。
在桌面点svn_data文件夹,单击右键,点SVN更新,然后在输入root账号密码,就会发现test文件夹和他里面的文本文档也顺利的更新成功,说明的你windowsSVN成功运行。
新添加账号步骤
1. 添加账号密码到passwd
oldgirl = 111111
2. 添加目录权限到authz
[oldboyedu:/oldgirl]
oldgirl = rw
3. 使用最高权限用户(本例为root)在根目录创建一个oldgirl目录并提交到SVN服务器
发给员工的账号:
svn://10.0.0.201/oldboyedu/oldgirl
账号:oldgirl
密码:111111
8.Linux客户端
导入新建的文件夹
[root@oldboyedu ~]# mkdir test
[root@oldboyedu ~]# cd test/
[root@oldboyedu test]# mkdir pc ios
[root@oldboyedu test]# ls
ios pc
[root@oldboyedu test]# svn import svn://10.0.0.201/oldboyedu/ -m "initdir" --username root --password123456 --no-auth-cache
正在增加 ios
正在增加 pc
提交后的版本为 3。
SVNcheckout 检出目录
[root@oldboyedu test]# cd
[root@oldboyedu ~]# mkdir oldboy_data
[root@oldboyedu ~]# svn checkoutsvn://10.0.0.201/oldboyedu/oldboy /root/oldboy_data --username oldboy--password 654321 --no-auth-cache
A oldboy_data/新建文本文档.txt
取出版本 3。
[root@oldboyedu ~]# ls oldboy_data/
新建文本文档.txt
SVN 更新
[root@oldboyedu ~]# svn update /root/oldboy_data--username oldboy --password 654321 --no-auth-cache
正在升级 ‘oldboy_data‘:
A oldboy_data/111111111.txt
更新到版本 4。
SVN提交(记得-m 添加注释信息)
[root@oldboyedu ~]# cd oldboy_data/
[root@oldboyedu oldboy_data]# touch linux.txt
[root@oldboyedu oldboy_data]# svn add linux.txt
A linux.txt
[root@oldboyedu oldboy_data]# svn commit /root/oldboy_data --username oldboy--password 654321 --no-auth-cache -m "haha"
正在增加 linux.txt
传输文件数据.
提交后的版本为 5。
SVN查看数据
[root@oldboyedu oldboy_data]# svn listsvn://10.0.0.201/oldboyedu/oldboy --username oldboy --password 654321 --no-auth-cache
111111111.txt
linux.txt
新建文本文档.txt
查看帮助
[root@oldboyedu oldboy_data]# svn help
用法: svn<subcommand> [options] [args]
Subversion 命令行客户端,版本 1.7.14。
[root@oldboyedu oldboy_data]# svn help co
checkout(co): 从版本库签出工作副本。
使用: checkoutURL[@REV]... [PATH]
如果指定 REV,那么它确定了从 URL 首先查找的版本。
如果省略路径参数,则 URL 最末尾的目录名作为目标目录名。如果指定多个 URL,
则依次将其签出到 PATH 的子目录中,子目录名就是 URL 最末尾的目录名。
如果使用了 “--force” 选项,在工作副本中未版本控制的障碍路径,不会自动导
致签出失败。 如果障碍路径与版本库中的对应路径类型相同(文件或目录),它将成
为受版本控制的路径,但是内容不改变。它意味着障碍路径的孩子,如果也是障碍路
径,那么也会受版本控制。对于障碍路径中的文件,如果与版本库内的不同,将视为工
作副本发生本地修改。版本库中的所有属性都应用于障碍路径。
参见 “svn help update” 以获取报告执行动作的字符列表。
有效选项:
本文出自 “李松阳” 博客,请务必保留此出处http://lsy666.blog.51cto.com/11729318/1948997
【SVN版本管理】