1 安装svn
sudo apt-get install subversion(root用户可以去掉sudo)
2 创建目录
cd /srv
sudo mkdir svn
cd svn
sudo mkdir tone_src #svn的版本仓库存放目录
3 创建版本仓库
当前位置在/srv/svn/tone_src
sudo svnadmin create /srv/svn/tone_src
执行之后tone_srv下文件结构如下:
4 配置
我们需要修改conf目录下的三个文件,authz,passwd,svnserve.conf
(1)编辑svnserve.conf
[general]
#匿名用户不可读
anon-access = none
#权限用户可写
auth-access = write
#密码文件为passwd
password-db = passwd
#权限文件为authz
authz-db = authz
(2)编辑authz
[groups]
admin= tone #admin组的用户为tone
[/] #必须写/,因为这表示从仓库的目录开始设置权限
@admin =rw #admin组有rw(读写权限),所有人有r(读权限)
*=r
注释:这里组的名字不一定叫admin,组的名字可以任务,admin组有多个用户的话,可以这样制定admin=tone,tone1,tone2等。
(3)编辑passwd文件,设定用户密码
[users]
# harry = harryssecret
# sally = sallyssecret
tone=www #设定用户tone的密码是www,是的没错,密码是明文的。
5 启动SVN服务器
sudo svnserve -d -r /srv/svn #启动服务器
-d 已守护模式启动
-r 指定svn版本库根目录,这样是便于客户端不用输入全路径,就可以访问版本库了。
例如:svn://ip:port/tone_src
二 svn基本命令使用
1、svn help:可以通过该命令查看svn的所有操作命令,包括命令的缩写
2、首先需要从svn库中checkout对应的项目:
(1)svn项目路径为svn://192.168.1.1/myproject/doc,将项目路径下的文件checkout到/home/test目录下,若没有/home/test路径会自动创建,同时只将doc中的子目录和文件checkout到该路径。
svn checkout svn://192.168.1.1/myproject/doc /home/test/ --username myname --password password
(2)命令会在当前目录建doc目录,然后将项目checkout到该目录下
svn checkout svn://192.168.1.1/myproject/doc
(3)命令会建一个空的doc目录,该目录会与svn关联。该方法主要是为了只checkout对应项目下的部分文件,此时进到doc目录,然后使用svn up abc 命令则会将该项目下的abc目录checkout到doc,而不会checkout其他文件。
svn checkout --depth=empty svn://192.168.1.1/myproject/doc
(4)上面的命令可以将checkout替换为其缩写co
3、添加文件,通过2将项目checkout到本地之后,就可以对项目进行操作
(1)在svn目录下,添加了新文件,如加了 aa.xml,然后提交,需要下面两步:
svn add aa.xml
svn commit -m "add file aa.xml" aa.xml
(2)添加多个文件,全部提交
svn add *
svn commit -m "add all update file" *
(3)其中上面的commit命令可缩写为ci,另外 -m 后面引号为此次修改的注释,最后面为提交的文件
4、修改文件
当对存在的文件进行修改之后直接使用commit即可提交到svn,如修改了aa.txt,之后执行下面命令提交
svn commit -m "update file aa.txt" aa.txt
5、更新
(1)更新当前目录下的全部文件
svn update
(2)更新abc目录中的文件
svn update abc
(3)将abc目录文件更新恢复到某个版本
svn update -r 版本号 abc
(4)update可用up代替
6、删除文件
(1)删除文件aa.txt,需要如下两步操作,删除文件夹也一样
svn delete aa.txt
svn commit -m "delete file aa.txt"
7、查看文件的状态,正常状态则执行命令之后无信息,文件前面带M表示对应文件有修改,C表示对应文件冲突,A表示新加文件,?表示问在svn中的文件。如添加文件,没有进行add命令操作,则状态为?,进行了add操作但是没commit,则为A状态
(1)查看当前目录所有文件状态
svn status
(2)查看abc目录下所有文件状态
svn status abc
(3)查看文件进行过的修改,第一列显示当前版本,第二列显示修改时的版本,第三列显示修改人,第四列显示修改文件
svn status -v abc
(4)status可用st代替
8、查看svn的提交日志记录
(1)查看所有记录,一般会很多,不这么做
svn log
(2)查看最近的四条提交记录
svn log -l4
(3)查看aa.txt文件的记录
svn log aa.txt
9、查看项目信息
(1)查看项目的svn信息
svn info
(2)查看aa.txt文件的svn信息
svn info aa.txt
10、查看当前svn目录下有什么文件,方便根据需要checkout对应需要的文件
svn list svn://192.168.1.1/doc
11、拿出项目,但是拿出来的项目没有与svn进行关联,不在其控制范围,命令格式类似checkout
(1)拿项目的最新版本
svn export svn://192.168.1.1/doc /home/mytest
(2)拿项目指定版本的文件
svn export -r 需要的版本号 svn://192.168.1.1/doc /home/mytest
12、文件修改之后回退
(1)撤销对ab.txt 文件的修改
svn revert ab.txt
(2)撤销当前目录下的所有修改
svn revert --recursive .
13、文件对比
(1)查看文件与svn中的不同
svn diff ab.txt
(2)查看ab.txt 在版本为12与14之间所做的修改
svn diff -r 12:14 ab.txt