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
- 浏览: 82665 次
- 性别:
- 来自: 上海
相关推荐
**SVN版本库的组成部分:** 1. **仓库(Repository)**:这是SVN存储所有版本化文件的地方。它是一个集中式的数据库,保存了文件的历史版本和元数据。开发者不直接与仓库交互,而是通过客户端进行操作。 2. **工作...
本篇文章将探讨如何利用Python来自动化地从SVN版本库生成版本号,以辅助软件的发布和维护工作。 首先,我们需要理解`MakeVersion.py`、`VersionConf.py`和`VersionFormat.txt`这三个文件的作用: 1. `MakeVersion....
SVN 服务器可以与其他开发工具集成,实现自动化构建和部署等。 SVN 服务器缺点 使用 SVN 服务器需要占用服务器资源,需要定期维护和备份版本库,否则可能导致数据丢失等问题。此外,SVN 服务器也存在安全风险,...
9. **迁移与升级**: 如果已有其他版本控制系统,管理员可能需要学习如何将数据迁移到SVN,以及随着时间推移如何进行版本升级。 10. **最佳实践**: 手册可能会包含一些最佳实践,比如代码审查流程、版本命名规范等,...
4. **SVN标签与快照**:标签(Tag)是项目特定版本的一个标记,通常用于标记里程碑或发布版本。不同于分支,标签是只读的,防止无意中修改。 5. **SVN权限管理**:服务器端可以设置权限,控制不同用户对仓库的访问...
在本教程中,我们将深入探讨如何在CentOS 6.5操作系统上搭建一个Apache服务器,并将其与Subversion(SVN)1.8.5版本集成,同时实现多版本库的权限配置。这是一个对于团队协作和代码管理至关重要的过程,特别适用于...
- **钩子脚本(Hooks)**:允许在版本库操作前后执行自定义脚本,例如自动触发构建或邮件通知。 以上步骤完成后,你就成功配置了一个基础的svn服务器,并进行了基本的版本控制操作。随着项目的推进,你可能需要...
10. **协作与版本追踪**:SVN的版本控制特性使得团队成员可以清晰地看到谁在何时做了什么修改,这对于多人协作项目非常有用,提高了开发效率和代码质量。 综上所述,"svn服务器(64位)"是一个关键工具,它支持64位...
在VS项目中获取SVN版本号,一般有两种常见方法: 1. **使用预构建事件命令**:在项目的属性页中,我们可以设置预构建事件命令行。这里可以添加一个批处理脚本,该脚本调用SVN命令行工具(如`svn info`),获取仓库...
SVN服务器是运行版本库的实体,而客户端则用于与服务器交互,进行版本控制操作。 【SVN服务器安装】 在Windows环境下,SVN服务器通常通过svn-1.4.6-setup.exe这样的安装程序进行安装。安装过程中,只需按照向导...
2. **获取SVN版本信息**:利用SVN插件提供的API或者通过执行SVN命令行工具,可以获取当前代码库的最新版本号。例如,`svn info`命令会返回包含版本号的信息。 3. **自定义MSBuild脚本**:VS使用MSBuild作为其构建...
在SVN中,Neon负责与远程SVN服务器通信,实现HTTP/1.1和WebDAV协议,使用户可以通过WebDAV协议访问和操作版本库,这对于那些不能或不想通过本地SVN客户端访问仓库的用户非常有用。 4. **subversion-1.4.5**: 这是...
Pre-Build事件是在项目构建开始之前执行的一系列自定义操作,这里我们将在其中添加获取SVN版本号的命令。 1. 打开VS2017,选择你要配置的C++项目,然后在解决方案资源管理器中右键点击该项目,选择“属性”。 2. 在...
9. **持续集成与持续部署(CI/CD)**:现代开发流程中,SVN经常与持续集成工具(如Jenkins)和持续部署系统结合,实现自动化构建和部署。 总之,Subversion 1.7版本提供了一个强大且稳定的版本控制系统,适合各种...
- 使用Lucene根据SVN仓库中的最新版本来初始化索引库。 - 索引构建过程中,需要遍历SVN仓库中的所有文件,并提取出文本内容进行索引化处理。 - 为每个文件创建一个文档对象,其中包含文件路径、内容等元数据信息...
然后,我们需要安装必要的依赖项,这些通常是构建和运行SVN所需的库。对于Ubuntu或Debian系统,你可以使用以下命令: ```bash sudo apt-get install build-essential subversion-tools libapr1-dev libaprutil1-dev...
在本压缩包中,包含了多种不同平台和体系结构的SVN版本,包括Windows下的32位和64位版本,以及Mac系统的版本。 1. SVN的基础概念: - 版本控制:SVN的核心功能是版本控制,它可以记录每次文件或目录的修改,使得...
【标题】"Hudson SVN Maven 自动构建"指的是在持续集成环境中使用Hudson(现在称为Jenkins)作为工具,结合Subversion(SVN)作为版本控制系统,Maven作为项目管理和构建工具,实现代码的自动构建过程。这个流程的...