安装svn服务器端在linux上

svn配置

mount /dev/cdrom /media/cdrom   挂载光驱

1.安装svn服务器端

yum install subversion      从镜像下载安装svn服务器端

cd /usr/local/              //进入目录,准备创建svn目录

mkdir svn                   //创建一个svn目录

chmod -R 777 svn            //修改目录权限为777

 

 

以后如果考试或者工作需要新创建版本库,则从此步骤开始:

svnadmin create /usr/local/svn/sunny //创建一个svn版本仓库sunny(sunny可以随便起名字)

cd svn/sunny/conf               //进入sunny版本仓库下的配置文件目录

下面要修改这个目录下的三个配置文件

(1)vi svnserve.conf    //配置版本库信息和用户文件和用户密码文件的路径、版本库路径

# anon-access = read
# auth-access = write
# password-db = passwd

//这四行,前面的#号和空格去掉(注意去掉#要顶格写,不要留有多余空格),变成

anon-access = none      //改成none
auth-access = write
password-db = passwd
realm = sunny           //改成自己的版本库
保存

(2)vi authz     //文件,创建svn组和组用户的权限
[group]
users = gep,wce //创建一个users的组,并指定两个用户gep和wce

[/]             //制定根目录下的权限
@users = rw     //users组用户权限为读写
* = r           //其他用户只有读权限
保存退出

(3) vi passwd   //创建或修改用户密码
[users]
gep = 123456    //用户名为gep的用户的密码为123456
wce = 123456    //。。。
保存退出


启动svn:

svnserve -d -r /usr/local/svn/     //这里采用多版本库的方式启动  

如果是单版本库 可以是

svnserve -d -r /usr/local/svn/sunny

添加一行然后要设置自启动


vi /etc/rc.d/rc.local    打开自启动文件添加

/usr/bin/svnserve -d -r /usr/local/svn/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

到此为止可以从服务端检出文件了.

svn命令:

netstat -tnl |grep :3690   查看svn是否启动

ps aux |grep 'svn'  查找所有svn启动的进程

kill -9 2505    杀死2505这个查找到的svn进程


检出命令:

svn checkout svn://linux的ip/版本库名称 /要检出的目录路径 

常用命令:

svn up    //更新文件

svn commit -m "注释" xxx.php  //提交文件

svn add 文件名               //新建文件并添加到svn

svn add *.php               //(添加当前目录下所有的php文件)

svn delete test.php         //删除test.php

svn log test.php            //查看test文件的log信息

svn cleanup                 //清理当前目录

 

####################################设置svn自动更新,不需要在手动去做了#####################

自动更新

在vi /usr/local/svn/sunny/hooks/post-commit中加入

#!/bin/sh

#设置一些变量

SVN=/usr/bin/svn

WEB=/你要更新的目录

export LANG=en_US.UTF-8

$SVN update $WEB --username svn用户名 --password 密码


其中SVN=右边改成 svn 命令位置 一般默认为/usr/bin/svn

WEB=右边改成你实际的web目录

赋予可执行权限

chmod 777 /usr/local/svn/sunny/hooks/post-commit

安装完毕


=========================================================================
其他操作

svn up更新

svn switch --relocate svn://192.168.1.253  svn://172.19.10.250      //重新定位SVN版本库地址

// SVN版本库起动方式,现在SVN下面有 sunny、test 两个版本库

1:单版本库起动    svnserve -d -r /usr/local/svn/sunny

2:多版本库起动    svnserve -d -r /usr/local/svn

区别在于起动svn时候的命令中的启动参数-r指定的目录。

限制不同的用户对不同的版本库操作权限,修改版本库中的conf目录下的 authz文件

以配置 sunny 版本库为例
vi authz
[groups]
teacher = sunny,sunny1
[sunny:/]             //指定版本库跟目录下的权限
@teacher = rw     //teacher组用户权限为读写
* = r           //其他用户只有读权限
保存退出

vi passwd 设置组中用户的账号和密码
[users]
sunny  = 123456
sunny1 = 123456

 

 

linux下解决svn冲突:


工程师A修改了a.txt的第一行,提交了。
工程师B也修改了a.txt的第一行,然后执行svn up,这时SVN提示了:(以下,你开始扮演工程师B的角色了)
$ svn up
在 “a.txt” 中发现冲突。
选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
(mc) 我的版本, (tc) 他人的版本,
(s) 显示全部选项:

我一般选择p(推迟),即引入冲突到本地,不过不会影响到SVN服务器端,可以放心。

OK,开始解决冲突了。

这时,会生成几个文件:

a.txt  a.txt.mine  a.txt.r6328  a.txt.r6336

其中a.txt中包含了工程师A、B的所有修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程师B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程师A提交前的版本,即未导致冲突的版本。

a.txt.r6336是工程师A提交后的版本,即导致冲突的版本。

一般,查看a.txt就可以看到冲突的详情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

=======

i modify this line;

>>>>>>> .r6336

以上,<<<<<<< .mine和=======之间是工程师B(当前的“你”)修改的内容,=======与>>>>>>> .r6336之间是工程师A修改的内容。这时,最好的办法是,叫上工程师A,你们一起确定这些修改是否都需要,是否相互兼容,然后留下需要的部分,删 除<<<<<<< .mine、=======和>>>>>>> .r6336。

然后,测试,测试!确定没问题之后,就可以告诉SVN,你解决冲突了:

svn resolve --accept working a.txt(该命令会删除a.txt.mine  a.txt.r6328  a.txt.r6336)

解决完成后重新提交文件:

svn ci -m ’注释’ a.txt

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值