Linux上搭建SVN服务器以及使用SVN服务

参考的文章链接:

Linux上的SVN服务器搭建:文章1文章2

Linux上使用SVN:文章1文章2


SVN服务器搭建

STEP1:通过yum命令安装svn

#yum -y install subversion

STEP2:创建版本库目录

(此仅为目录,为后面创建版本库提供存放位置)

#mkdir /var/svn/svnrepo

STEP3:创建svn版本库

#svnadmin create /var/svn/svnrepo/xxxx   (xxxx为你预期的版本库名称,可自定义)

创建成功后,进入xxxx目录下,ls一下,可以看到conf / db / format / hooks / locks /README.txt等内容。


注意:svn可以分为单个或多个版本库,假设:

单版本库

版本库目录为 /var/svn/svnrepo/repo1

启动程序如果是:svnserve -d -r /var/svn/svnrepo/repo1

这代表你当前svn只为repo1这个版本库工作,客户端访问直接svn://IP/ 就可以了,后面不跟目录


多版本库

启动程序如果是:svnserve -d -r /var/svn/svnrepo/

这代表你当前svn可以多版本库运行,客户端访问就需要加上 svn://IP/repo1 这样才能访问repo1版本库

STEP4:配置修改

进入已经创建好的版本库目录下,也就是前文说创建的xxxx

进入conf文件夹

#cd /var/svn/svnrepo/xxxx/conf

下有3个文件,分别是:

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn服务器配置文件

authz文件配置

如果是一个版本库,那应该设置成如下:

[groups]
admin = user1,user2
[/]
@admin=rw
如果是多个版本库,那就应该设置成这样:
[groups]
admin = user1,user2
[repo1:/]
@admin=rw

passwd文件配置

账号=密码

例如:user1=123456

svnserve.conf文件配置

如下图,按照红色框内的内容修改即可。


如此配置完成。

STEP5:防火墙开放svn端口

>/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
z'z'z'z/etc/init.d/iptables save
#service iptables restart

STEP6:启动SVN服务器

#svnserve -d -r /var/svn/svnrepo/repo1    单版本库启动方式
#svnserve -d -r /var/svn/svnrepo    多版本库启动方式

STEP7:配置操作系统语言(可选项)

要设置为中文,否则svn log的时候看是乱码。

当前生效

#export LANG=zh_CN.UTF-8

永久生效

#vi /etc/sysconfig/i18n

修改里面内容为

LANG="zh_CN.UTF-8"

查看语言环境命令

#locale

linux上使用SVN服务

checkout (co)

#svn checkout svn://IP/××××

import 

svn import [源路径] [目标版本库路径] -m [日志信息]

源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录

#svn import ./test file:///var/svn/svnrepo/repo1/test -m "inport src"

update (up)

#svn update

如果更新的时候,想要排除某些文件的话,也是用正则来排除。

#svn up !(config.php)     全部更新,但是排除config.php
#svn up !(config.*)       全部更新,但是排除config开头的文件

status (st)

#svn st

查看状态,未加入版本库的会显示“?”,从版本库中删除的会显示“!”,修改版本库中的文件会显示“M”

add

#svn add a.php    加入a.php
#svn add b.php c.php    加入b.php c.php

上面的方法是一个文件一个文件地添加,这样很麻烦。

#svn add add * --force     加入当前目录下的所有文件

注意上面只是针对同一目录的文件,如果目录下还有目录,这时上面的命令提交就不行了。

#svn add */* --force        如果是二级目录的话
#svn add */*/* --force      如果是三级目录的话
以此类推...

那么如果里面有很多级目录,该怎么办呢?或者说根本不清楚究竟有多少级。到svn根目录执行下面的命令。

#svn st | awk '{if ($1=="?") {print $2}}' | xargs svn add        目录几级未知的情况下,所以,一般使用这个语句

备注:上面有些的svn add命令后面都有加了--force,不然可能会报一些警告。

delete (del)

和add类似,如果不明确几级目录,那么就在svn根目录下执行如下命令。

#svn st | awk '{if ($1=="!") {print $2}}' | xargs svn del

commit (ci)

svn add或者svn del或者修改了已经在版本库中的文件后,都需要svn commit一下,让代码变动提交到版本库中。

#svn commit -m "log message"

当提交版本的时候,要排除某些文件的时候,可以使用正则表达式来排除。例如:

#svn commit !(config.php) -m "test log"     除了config.php不提交,其他文件全部都提交到版本库中
#svn ci !(config*) -m "test log"            以config开头的文件不提交,其他全部提交

实例分析

step1:建立测试目录

结构如下:


step2:先svn import


这时候版本库中就有了testSvn(window下查看),如下:


step3:svn checkout

如果没有先svn checkout,而是直接在上述测试目录下进行svn操作(如:svn up/svn add等),是不行的。所以先删除上述测试目录,然后再checkout出来。


step4:测试add

在windows上,在/testSvn目录下,增加rootAddWindows.txt文件,然后在linux下update。


在linux上,在/testSvn目录下,增加rootAddLinux.txt和rootAddLinux1.txt文件,然后add和commit,然后在windows下update。



在linux上,

在/testSvn/testSvnChild目录下增加childAddLinux.txt文件,

在/testSvn/testSvnChild/testSvnChildChild目录下增加childchildAddLinux.txt文件,

在/testSvn/testSvnChild/testSvnChildChild目录下增加testSvnChildChildChild目录,

然后add和commit,然后在windows下update。

可以先在svn根目录下查看下svn status



step5:测试del

在linux上,删除上一步骤添加的文件和目录,然后再svn del和svn commit。


然后在windows下update,看下结果:


windows上使用SVN服务

在windows客户端,输入地址:svn://ip地址:3690/xxxx(iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)
弹出输入用户名和密码,输入即可访问

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值