5.1 安装服务器端程序
yum install -y subversion
5.2 创建并配置版本库
创建版本库目录
mkdir -p /var/svn/repository
在版本库目录下创建具体项目目录
mkdir pro_oa
创建SVN 版本库
svnadmin create /var/svn/repository/pro_oa
版本库内容
5.3 配置SVN 对应的服务
思路
SVN
名称:svnserve
默认情况下不是开机自动启动
[root@root02 repository]# chkconfig|grep svn svnserve 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭 [root@root02 repository]# chkconfig svnserve on [root@root02 repository]# chkconfig|grep svn svnserve 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@root02 repository]#
对应可执行脚本文件路径
/etc/rc.d/init.d/svnserve
注意备份!
SVN 服务具体配置
原版 args="--daemon --pid-file=${pidfile} $OPTIONS" 修改版 args="--daemon --root 版本库根目录--listen-port 指定端口号--pid-file=${pidfile} $OPTIONS" args="--daemon --root /var/svn/repository --listen-port 2255 --pid-file=${pidfile} $OPTIONS" 使用默认端口号的配置方式 args="--daemon --root /var/svn/repository --pid-file=${pidfile} $OPTIONS"
5.4 启动SVN 服务
[root@rich init.d]# service svnserve start 正在启动svnserve:[确定] [root@rich init.d]# service svnserve status svnserve (pid 3443) 正在运行... [root@rich init.d]# netstat -anp|grep :2255 tcp 0 0 0.0.0.0:2255 0.0.0.0:* LISTEN 3443/svnserve [root@rich init.d]# ps -ef|grep svnserve|grep -v grep root 3443 1 0 11:41 ? 00:00:00 /usr/bin/svnserve --daemon --root /var/svn/repository --listen-port 2255 --pid-file=/var/run/svnserve.pid [root@rich init.d]# cat /var/run/svnserve.pid 3443
命令行客户端
创建两个工作区目录模拟两个开发人员
mkdir -p /root/workspace/harry
mkdir -p /root/workspace/sally
检出
作用:完整下载版本库中的全部内容。
命令:
svn checkout svn://192.168.40.34/pro_oa ./
附加效果
在指定目录下创建.svn 目录
保存本地目录和文件状态信息,用来和SVN 服务器进行交互
工作副本
.svn 所在的目录
版本控制相关操作都需要在工作副本目录下执行。例如:提交、更新等等这样的操作。
为了保证工作副本能够正常和服务器进行交互,请不要删除或修改.svn 目录中的内容。
添加
SVN 要求提交一个新建的文件前先把这个文件添加到版本控制体系中。
svn add 文件名
提交
要求1:附加日志信息
日志信息相当于写Java 代码时的注释,用来标记本次操作所做的修改。
svn commit -m "xxx" [文件名]
要求2:必须具备相应的权限
使用文本编辑器打开版本库根目录/conf/svnserve.conf 文件
查看服务器端文件内容
[root@root03 harry]# svn list svn://192.168.40.34/pro_oa good.log hello.txt [root@root03 harry]# ^C [root@root03 harry]#
更新操作
作用:把服务器端文件所产生的所有修改下载到本地
命令:svn update [文件名]
冲突
过时的文件
在一个相对服务器端版本来说是旧版本的基础上进行了修改的文件。
要求:所有过时的文件都必须先执行更新操作,更新后在最新版基础上修改的文件才允许提交。
冲突的产生
条件1:本地当前编辑的文件已经过时。
条件2:从服务器端更新下来的修改和本地的修改在“同文件同位置”不一致。
冲突的表现
文件内
目录内
由于发生冲突产生的冲突
xxx.mine 文件:发生冲突时本地文件内容
xxx.r[小版本号]文件:发生冲突前文件内容
xxx.r[大版本号]文件:发生冲突时服务器端文件内容
冲突的手动解决
第一步:删除冲突发生时产生的三个多余文件
rm 多余的三个文件名
第二步:删除冲突文件内多余的符号
提交
第三步:把文件编辑到满意的状态
第四步:提交
冲突的半自动解决
设置SVN_EDITOR 环境变量
编辑: vim /etc/profile 文件
在末尾添加:
SVN_EDITOR=/usr/bin/vim
export SVN_EDITOR
启动生效文件
source /etc/profile
查看是否是生效
echo $SVN_EDITOR
解决的过程
使用e 选项进入文件内容编辑界面
进入vim 编辑器编辑文件内容
编辑完成后使用r 选项标记为已解决
减少冲突的发生
尽可能在修改文件前先进行更新操作,尽量在最新版基础上修改文件内容。
尽量减少多人修改同一个文件的可能性。
加强团队成员之间的沟通。