`

SVN 服务与版本库构建

    博客分类:
  • SDE
阅读更多

 
step 1 建立版本库
主目录 E:\rick\SDE\repository
在repository下建立项目的版本库目录yogurt,采用: svnadmin create E:\rick\SDE\repository\yogurt  or 在建好的yogurt 目录右键TortiseSVN->Create repository here
完成版本库的建立

step 2 配置
修改E:\rick\SDE\repository\yogurt\conf
1)将svnserve.conf文件中的# password-db = passwd及# authz-db = authz两行前的#号及空格去掉,并保存文件;
 
2)在passwd文件中添加用户名及密码,如下例所示:
[users]
rick = rick
 
3)修改authz文件,添加用户组对资源库目录的访问权限及用户级的成员。示例如下:
 
[groups]
group = rick
[/]
@group01 = rw

step 3 创建 svn 服务
sc create svnservice binpath= "\"E:\rick\SDE\subversion\bin\svnserve.exe\" --service -r E:\rick\SDE\repository" displayname= "SVNService" depend= Tcpip start= auto
启动服务: net start svnservice

说明与注意事项:
a.c:\Subversion为SVN服务端安装目录;
b.D:\repository为各项目资源版本库的根目录;(即在此目录下可以建立多个项目的版本库,如testproject01等。)
c.start= auto表示这个服务随系统自动启动;
d.”=”前不能有空格,面后面必须有空格;
e.运行”net start svnservice”启动这个服务,”net stop svnservice”停止这个服务。
f.删除服务使用sc delete svnservice命令
 
自动更新的配置

开发中经常要在更新SVN的同时要更新WEB服务器。可以用过Subversion的钩子(Hook)来实现。
以下是Windows操作系统下的配置:
在SVN库的hooks目录下面新建post-commit.bat文件,用记事本打开,然后写入如下的代码:

@echo off
SET REPOS=%1
SET REV=%2

SET DIR=%REPOS%/hooks
SET PATH=%PATH%;

SET WORKING_COPY=D:\Websites\Latisse
svn update %WORKING_COPY% –username user –password pwd

此处的D:\Websites\Latisse即是WEB网站的目录(当然得先建好这个目录,并且从svn服务器上签出相应的项目)。
这样在用户提交完后,便会自动更新到WEB服务器上。

需要注意到问题是:
1.不要在WEB网站文件夹下作修改或其它操作,防止出现文件夹被锁。无法更新。

2.在这里我明确写明了用户名(user),密码(pwd)。在我设置时发现,如果没有设置的话会出现错误,在直接运行这个bat文件时是能正常执行的,但是,在Subversion提交后却不能正常运行。并且可以看到服务器进程中会出现cmd,svn两个进程,并且不会自己结束,而用户在提交内容到服务器后,会出现客户端无法正常返回的问题。

3.如果运行不能正常,可以通过下面的方法看到出错信息:
将刚才的post-commit.bat改名为post-commit-run.bat,然后再建一个post-commit.bat的文件,里面写入如下的代码:

call %~dp0post-commit-run.bat %* > %1/hooks/post-commit.log 2>&1
这样运行结果就会被写入到post-commit.log文件中,如果出错,也可以找到出错的原因。

step 4 checkout
SVN Checkout -> svn://localhost/yogurt


SVN
安装方式:yum install (源码安装容易产生版本兼容的问题)
本地IP: B
1 安装
采用 yum install subversion mod_dav_svn

检查已安装版本
#检查是否安装了低版本的SVN
rpm -qa subversion

#卸载旧版本SVN
yum remove subversion

确认已安装了svn模块
 cd /etc/httpd/modules
 # ls | grep svn
mod_authz_svn.so
mod_dav_svn.so

验证安装 svn --version
 
下列版本库后端(FS) 模块可用:

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。
Cyrus SASL 认证可用。
注:./configure --prefix=/usr/local/svn 
make && make install

2 配置
创建代码库
mkdir -p /opt/svn/repository  # p 代码若没有父目录则创建
svnadmin create /opt/svn/repository/mygame
执行上面的命令后,自动建立repository库,查看/opt/svn/repository/mygame 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

配置代码库
进入上面生成的文件夹conf下,进行配置
cd /opt/svn/repository/mygame/conf

用户密码passwd配置
cd /opt/svn/repository/mygame/conf
vi passwd
修改passwd为以下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
rickzheng=123456#
权限控制authz配置
# vi authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
#设置[/]代表根目录下所有的资源
[/]
rickzheng=rw
服务svnserve.conf配置 : vi svnserve.conf

追加以下内容:
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/opt/svn/repository
配置防火墙端口
vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存后重启防火墙
service iptables restart

启动SVN
svnserve -d -r /opt/svn/repository

查看SVN进程
ps -ef|grep svn|grep -v grep
root     12538     1  0 14:40 ?        00:00:00 svnserve -d -r /opt/svn/repository

检测SVN 端口
netstat -ln |grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN

停止重启SVN
 killall svnserve    #停止
 svnserve -d -r /opt/svn/repository   #启动

测试
SVN服务已经启动,使用客户端测试连接。
客户端连接地址:svn://B
用户名/密码: rickzheng/123456
测试创建文件夹等操作。

3 设置 hooks
3.1 checkout 副本
mkdir /www/mygame 
cd /www/app 执行 svn checkout svn://B/mygame or svn://B/mygame new_app{代表重命名}  #这里会提示是否保存密码,若保存则post-commit可不加用户名密码
3.2 在 /opt/svn/repository/hooks 新建 post-commit(cp post-commit.tmpl post-commit) 文件 【钩子脚本】
内容如下:
#!/bin/sh
export LANG=zh_CN.GBK # 注意这里的语言编码
web=/www/app
svn update $web –username rickzheng –password 123456 #
增加可执行权限 chmod 777 post-commit

谢谢楼主详细的配置教程。
我这里的环境是CentOS6.4,按楼主的方法配置后,本机启动svn正常,客户端无法访问。
检查后发现客户端使用:
telnet [ip] 3690
无法连接,应该是防火墙问题。
删掉之前在防火墙中的加的配置:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
重新按以下方法设置防火墙:
/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
/etc/rc.d/init.d/iptables save
配置后查看:
/etc/init.d/iptables status
客服端telnet成功,svn也可以访问了。
find . -type d -name ".svn"|xargs rm -rf

分享到:
评论

相关推荐

    一步一步教你构建SVN服务器.rar

    功能是创建SVN服务和代码库。 step5、创建并执行start.bat 功能是启动SVN服务。 step6、配置代码库权限 1、配置E:\svnhost\conf\svnserve.conf (去掉#) anon-access = read auth-access = write password-db = ...

    svn安装包与汉化.rar

    TortoiseSVN 是一个 Windows 下...并且具备许多与软件开发有关的特性 - 比如,对编程语言的支持,或者提供程序构建工具。不过 Subversion 并不是这样的系统;它是一个通用系统,可以管理任何类型的文件集,包括源代码。

    SVN中文使用手册

    第 3 章版 本库这一章解释了如何设置一个本地版本库,本地版本库对于在一台 PC 上测试 Subversion 和 TortoiseSVN 非常有用,这一章也介绍了一点版本库管理,也就是如何管理服务器上的版本库。如 果你需要一台...

    TortoiseSVN 1.5.2.13595版(Windows下的SVN客户端)

     分支与标签的代价不与工程的大小成比例,Subversion 建立分支与标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间,以及很小的版本库空间。  良好的维护能力 ...

    TortoiseSVN客户端程序

    此时 subversion 服务还没有开始,只是通过它的命令建立了版本库。继续在刚才的命令窗口输入: svnserve.exe --daemon svnserve 将会在端口 3690 等待请求,--daemon(两个短横线)选项告诉 svnserve 以守护进程方式...

    TortoiseSVN 1.5.2.13595(SVN客户端)

     分支与标签的代价不与工程的大小成比例,Subversion 建立分支与标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间,以及很小的版本库空间。  良好的维护能力 ...

    TortoiseSVN-1.6.4.16808-cn(SVN客户端1.6.4中文版)

     分支与标签的代价不与工程的大小成比例,Subversion 建立分支与标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间,以及很小的版本库空间。  良好的维护能力 ...

    Eclipse安装SVN-CC-GIT-VSS-CVS详细使用说明书

    进入导航器标签里,我们可以看到被check out出来的版本库资源,此时该资源路径已经与服务器上的路径绑定在一起,现在我们要做的就是提交和更新,方法如下: 选择你所要提交的文件或代码,点击右键,选择小组,然后...

    TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.rar

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 ...

    TortoiseSVN-1.10.3.28489-win32-svn-1.10.4.msi

    某些版本控制系统也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性 - 比如,对编程语言的支持,或者提供程序构建工具。不过 Subversion 并不是这样的...

    svn1.8 64位

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将...

    Tortoise SVN 中文操作手册

    在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到 过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和...

    Cornerstone_4.1破解版mac版SVN客户端

    Cornerstone是Mac上最佳的SVN...与Assembla SVN + SSH集成 - Cornerstone现在通过SSH连接与Assembla SVN存储库兼容 性能改进 - 众多代码优化可加快整体应用程序性能,尤其是在将代码从中央存储库更新到Cornerstone时

    TortoiseSVN基本文档

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的 文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修 改,谁做的修改。这就是为什么许多人将 ...

    TortoiseSVN1.6.17-64

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 ...

    TortoiseSVN-1.5.0.13316-win32-svn-1.5.0.part1.rar

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 ...

    TortoiseSVN-1.5.0.13316-win32-svn-1.5.0.part2.rar

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 ...

    64位的TortoiseSVN-1.6.10

    文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 ...

    WebKit-http:WebKit SVN存储库中已弃用的非官方http镜像

    WebKit WebKit是一个跨平台的Web浏览器引擎。 在iOS和macOS上,它支持Safari,Mail,iBooks和许多其他应用程序。...运行以下命令以克隆WebKit的Git SVN存储库: git clone git://git.webkit.org/WebKit

    aurpb:从 Arch 的 AUR 构建包的脚本。 根据 AUR 版本检查本地版本。 将本地存储库与远程主机同步

    限制: PKGBUILD 的内置包版本控制可以为从 git 和 svn 检索的代码自动修改版本号。 这个脚本此时只检查 AUR 报告的版本。 目录设置 首先你需要一些目录。 默认情况下,脚本使用 /srv/repo。 /srv/repo 包含脚本 /...

Global site tag (gtag.js) - Google Analytics