svn 推荐Linux系统下通过 yum install svn 的方法进行安装;
yum install -y subversion
注意:这样安装的前提条件是虚拟机可以连接网络。
验证安装结果:svn --version
[root@localhost 桌面]# svn --version
svn,版本 1.6.11 (r934486)
编译于 Aug 17 2015,08:37:43
版权所有 (C) 2000-2009 CollabNet。
Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。
可使用以下的版本库访问模块:
* ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。
- 处理“http”方案
- 处理“https”方案
* ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证
- 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
- 处理“file”方案
创建仓库位置。
mkdir -p /var/svn/repository
这个位置将会是一个总的仓库位置,它下属可以创建多个子仓库用于不同项目的版本控制仓库。
[root@localhost repository]# mkdir pro-oa
[root@localhost repository]# mkdir pro-erp
创建仓库:
[root@localhost pro-erp]# svnadmin create /var/svn/repository/pro-erp/
[root@localhost pro-erp]# ll
总用量 24
drwxr-xr-x. 2 root root 4096 7月 14 12:21 conf
drwxr-sr-x. 6 root root 4096 7月 14 12:21 db
-r--r--r--. 1 root root 2 7月 14 12:21 format
drwxr-xr-x. 2 root root 4096 7月 14 12:21 hooks
drwxr-xr-x. 2 root root 4096 7月 14 12:21 locks
-rw-r--r--. 1 root root 229 7月 14 12:21 README.txt
查看SVN服务器状态:
[root@localhost pro-oa]# chkconfig|grep svn
svnserve 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@localhost pro-oa]# chkconfig svnserve on ## 用于开启服务器自动启动
[root@localhost pro-oa]# chkconfig|grep svn
svnserve 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@localhost pro-oa]# service svnserve status
svnserve 已停
设置配置文件:(通过vim 中的 set nu 显示行数)
32 #args="--daemon --pid-file=${pidfile} $OPTIONS"
33 args="--daemon --root /var/svn/repository --listen-port 2255 --pid-file=${pidfile} $OPTIONS"
--listen-port 2255 这个是用于指定端口号的,如果不写默认端口号为 3690
查看SVNserver 的运行状态:
[root@localhost init.d]# service svnserve start
正在启动 svnserve: [确定]
[root@localhost init.d]# service svnserve status
svnserve (pid 27329) 正在运行...
[root@localhost init.d]# netstat -anp|grep :2255
tcp 0 0 0.0.0.0:2255 0.0.0.0:* LISTEN 27277/svnserve
[root@localhost init.d]# ps -ef|grep svnserve|grep -v grep
root 27277 1 0 14:10 ? 00:00:00 /usr/bin/svnserve --daemon --root /var/svn/repository --listen-port 2255 --pid-file=/var/run/svnserve.pid
至此服务器已经搭建完成。
对项目进行检出、提交、更新
检出:如果是默认端口可以直接通过IP地址检出,如果是自定义的端口号需要通过注明端口号检出
如果检出时候发生了主机拒接连接,需要关闭掉Linux的防火墙:service iptables stop
[root@localhost tom]# svn checkout svn://192.168.80.129:2255/pro-oa ./
取出版本 0。
查看:隐藏文件需要通过 ls -lA 命令进行查看
[root@localhost tom]# ll
总用量 0
[root@localhost tom]# ls -lA
总用量 4
drwxr-xr-x. 6 root root 4096 7月 14 15:56 .svn
.svn 文件是工作副本的一个标识文件,后续的所有操作都需要在这个文件下进行。
提交:
[root@localhost tom]# svn add hello.txt
A hello.txt
[root@localhost tom]# svn commit hello.txt 未添加日志信息
svn: 提交失败(细节如下):
svn: 无法使用外部编辑器获得日志信息;考虑设置环境变量 $SVN_EDITOR,或者使用 --message (-m) 或 --file (-F) 选项
svn: 没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有 “editor-cmd” 选项
[root@localhost tom]# svn commit -m "hahah" hello.txt 未添加用户认证
svn: 提交失败(细节如下):
svn: 认证失败
添加用户认证:
[root@localhost repository]# cd pro-oa/
[root@localhost pro-oa]# ll
总用量 24
drwxr-xr-x. 2 root root 4096 7月 14 12:20 conf
drwxr-sr-x. 6 root root 4096 7月 14 12:20 db
-r--r--r--. 1 root root 2 7月 14 12:20 format
drwxr-xr-x. 2 root root 4096 7月 14 12:20 hooks
drwxr-xr-x. 2 root root 4096 7月 14 12:20 locks
-rw-r--r--. 1 root root 229 7月 14 12:20 README.txt
[root@localhost pro-oa]# cd conf
[root@localhost conf]# ll
总用量 12
-rw-r--r--. 1 root root 1080 7月 14 12:20 authz
-rw-r--r--. 1 root root 309 7月 14 12:20 passwd
-rw-r--r--. 1 root root 2279 7月 14 12:20 svnserve.conf
[root@localhost conf]# cp svnserve.conf svnserve.conf.bak
[root@localhost conf]# ll
总用量 16
-rw-r--r--. 1 root root 1080 7月 14 12:20 authz
-rw-r--r--. 1 root root 309 7月 14 12:20 passwd
-rw-r--r--. 1 root root 2279 7月 14 12:20 svnserve.conf
-rw-r--r--. 1 root root 2279 7月 14 16:14 svnserve.conf.bak
[root@localhost conf]# vi svnserve.conf
11 ### and "none". The sample settings below are the defaults.
12 anon-access = write 匿名访问 注意这个设置前面顶格
13 # auth-access = write 授权访问
查看版本库:
[root@localhost pro-oa]# svn list svn://192.168.80.129:2255/pro-oa
hello.txt
更新:
[root@localhost tom]# svn update
A cat.txt
更新到版本 2。
[root@localhost tom]# ll
总用量 12
-rw-r--r--. 1 root root 26 7月 14 16:33 cat.txt
-rw-r--r--. 1 root root 7879 7月 14 16:06 hello.txt
文件冲突:
如果版本出现冲突,需要先更新,再执行提交。
冲突发生的时候需要去解决问题,可以手动修改,即:自己打开文件进行修改,直至满意。删除多余的文件。
可以半自动:通过svn 提供的编辑功能,不过这个需要对svn的环境变量进行配置。保存时选择已解决冲突。