SVN 全名是 Subversion,它是一个开源的版本控制软件,与它类似的软件有CVS,VSS,ClearCase。而 SVN 作为一个跨平台的开源软件,具有很强的活力,目前也已经相当成熟,很多开源项目都用它来管理文档或是代码,以及项目文件的版本控制。
更为重要的是,不仅仅是团队开发,作为个人独立开发的项目(或者个人想维护的文档)也可以用 SVN 进行管理,而不需要另外一台服务器。以下为在windows环境下架设subversion服务器,实例在windows xp sp2/sp1 以及windows server 2003等win版本的系统架设成功。
一、安装SVN:
1、下载:目前最新的稳定定版,win32 1.6.0版,在官方下载地址下载,注意区分各版本适用环境,尤其是apache版本。
天空青年本次架设的SVN选择版本,1.6.0版(apache 2.2.x),安装包下载地址为
SVN架设环境:Nginx 1.0.0+Apache 2.2.13+PHP 5.2.8(稳定版)+MySQL 5.05+ZendOptimizer 3.3.0+SVN 1.6.0
2、安装:下载完后,将安装包解压到 D:\deploy\Subversion
3、建立Repository:如在D:\svnsrc目录下新建sky54.net程序代码仓库,CMD打开命令控制台,输入以下命令,即可完成代码仓库sky54.net的创建
4、配置Repository:进入Repository目录,在本文实例是 D:\svnsrc\sky54.net,进入后看到sky54.net下有conf目录,进入该目录,将可发现svnserve.conf和passwd两个文件,对此分别修改和配置如下:
1)、打开svnserve.conf,配置svn用户权限
- ### This file controls the configuration of the svnserve daemon, if you
- ### use it to allow access to this repository. (If you only allow
- ### access through http: and/or file: URLs, then this file is
- ### irrelevant.)
- ### Visit http://subversion.tigris.org/ for more information.
- [general]
- ### These options control access to the repository for unauthenticated
- ### and authenticated users. Valid values are "write", "read",
- ### and "none". The sample settings below are the defaults.
- ###去掉前面#号,配置用户权限
- ###配置参数none:无任何权限; read: 只读; write:读和写
- ###anon-access 配置匿名用户的权限为只读
- anon-access = read
- ###auth-access 配置授权用户的权限为可读写
- auth-access = write
- ### The password-db option controls the location of the password
- ### database file. Unless you specify a path starting with a /,
- ### the file's location is relative to the directory containing
- ### this configuration file.
- ### If SASL is enabled (see below), this file will NOT be used.
- ### Uncomment the line below to use the default password file.
- ### 去掉前面的#号,在password文件中增加相关的用户名和密码
- password-db = passwd
- ### The authz-db option controls the location of the authorization
- ### rules for path-based access control. Unless you specify a path
- ### starting with a /, the file's location is relative to the the
- ### directory containing this file. If you don't specify an
- ### authz-db, no path-based access control is done.
- ### Uncomment the line below to use the default authorization file.
- # authz-db = authz
- ### This option specifies the authentication realm of the repository.
- ### If two repositories have the same authentication realm, they should
- ### have the same password database, and vice versa. The default realm
- ### is repository's uuid.
- # realm = My First Repository
- [sasl]
- ### This option specifies whether you want to use the Cyrus SASL
- ### library for authentication. Default is false.
- ### This section will be ignored if svnserve is not built with Cyrus
- ### SASL support; to check, run 'svnserve --version' and look for a line
- ### reading 'Cyrus SASL authentication is available.'
- # use-sasl = true
- ### These options specify the desired strength of the security layer
- ### that you want SASL to provide. 0 means no encryption, 1 means
- ### integrity-checking only, values larger than 1 are correlated
- ### to the effective key length for encryption (e.g. 128 means 128-bit
- ### encryption). The values below are the defaults.
- # min-encryption = 0
- # max-encryption = 256
2)、打开passwd文件,配置授权用户,实例配置用户名www.sky54.net 密码123456
注意: svnserve.conf中的[general] 和 passwd 中的 [users]配置项前不能有空格, “=” 后面只能有一个空格
- ### This file is an example password file for svnserve.
- ### Its format is similar to that of svnserve.conf. As shown in the
- ### example below it contains one section labelled [users].
- ### The name and password for each user follow, one account per line.
- [users]
- # harry = harryssecret
- # sally = sallyssecret
- www.sky54.net=123456
5、启动SVN:打开命令窗口,键入下面启动命令,如果你安装路径与本文实例不同的话,注意修改svn安装路径和Repository路径,运行命令后,发现进程管理器中有svnserve.exe,说明配置成功。
SVN默认端口是3690,如果不幸这个端口被别的程序暂用,可以通过选项 –listen-port=绑定端口
SVN配置测试:
url格式为 svn://ip地址//Repository 名,在本文实例url是svn://127.0.0.1/sky54.net
至此,SVN的配置基本上可以使用,如果需要SVN跟随windows系统一起启动话,下面将进一步介绍将SVN注册到windows系统服务中。
二、配置SVN启动服务:
将SVN加入win系统启动服务项中,让subversion在windows自动启动,不用每次开机都要键入启动命令,尤其是生产环境中加入系统服务就显得很有必要。
以前的svnserve要想成为windows服务,必须依赖于svnservice或其他工具。从Subversion1.4开始,Subversion本身就集成Windows服务的工具。
1,注册svn系统服务:
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做”Service Control”,也就是sc.exe。
例如我的Subversion安装在”D:\deploy\Subversion”,版本库在”D:\svnsrc”,而我希望对应的Subversion服务名为svn,安装这个svn服务的命令就可以这样写:
- sc create svn
- binpath= "D:\deploy\Subversion\bin\svnserve.exe --service -r D:\svnsrc"
- displayname= "Subversion Server"
- depend= Tcpip
- start= auto
请注意,因为便于察看,上面的命令分为多行,但在实际执行时应该在一行里。另外,在以前启动svnserve时会使用”-d”选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,”-i”和”-t”选项也不能使用。
实际配置中,在windows命令窗口运行下面这一行的注册系统服务命令的即可,注意修改SVN安装路径和库路径
- sc create svn binpath= "\"D:\deploy\Subversion\bin\svnserve.exe\" --service -r D:\svnsrc" displayname="Subversion Server" depend= Tcpip start= auto
然后即可通过命令行窗口执行net启动/停止svn服务命令,对SVN服务启动、停止管理。
2、删除服务
如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行删除Subversion Server服务命令即可,”Subversion Server”就是我们创建服务时使用的名字。
删除Subversion Server服务命令
- sc delete svn binpath= "\"D:\deploy\Subversion\bin\svnserve.exe\" --service -r D:\svnsrc" displayname="Subversion Server" depend= Tcpip start= auto
当然你也可以使用图形化的工具修改服务的属性,你可以在“开始->运行”中执行”services.msc”,然后在界面中修改。
3、启动/停止svn服务
启动svn服务命令
- net start svn
停止svn服务命令
- net stop svn
4、SVN访问:在SVN安装部分提到过,最后再次重复一下
url格式为 svn://ip地址//Repository名,在本文实例url是svn://127.0.0.1/sky54.net
三、SVN应用实例:
1、代码库同步生产环境:利用SVN的钩子Hook,实现Repository代码库与生产环境目录同步。
方法其实很简单,有过在服务器上架设SVN服务端的朋友都能大概摸到这样一个流程,无非就是启用一个POST-COMMIT钩子脚本,commit后自动部署脚本,并将代码库更新到生产环境目录中。
本文实例中生产环境目录为D:\WWWROOT\sky54.net,我们打开windows命令窗口,键入如下命令,svn命令将空库checkout到生产环境目录中。
带SVN授权用户和密码命令:
- D:\deploy\Subversion\bin\svn.exe checkout svn://127.0.0.1/sky54.net "D:\WWWROOT\sky54.net" --username www.sky54.net --password 123456
简化命令:
- D:\deploy\Subversion\bin\svn.exe co svn://127.0.0.1/sky54.net "D:\WWWROOT\sky54.net"
命令键入运行后,系统会提示,”Checked out revision 23“或者”取出版本 23“,说明check out成功!
注意,以上名只用键入任一条即可,完成代码库的Checkout,天空青年反复测试的结果,告诉我必须先checkout一次,否则后面post-commit.bat与生产环境代码无法同步。
在实例仓库D:\svnsrc\sky54.net\hooks目录下,复制post-commit.tmpl,并改名成post-commit.bat,将文件内容替换成以下命令:
- @ECHO ON
- REM POST-COMMIT HOOK
- set repo=%1
- set rev=%2
- rem post-commit日志记录目录
- set log="D:\svnsrc\sky54.net\post-commit_log.txt"
- rem post-commit错误日志记录目录
- set err="D:\svnsrc\sky54.net\post-commit_err-log.txt"
- rem svn.exe文件的目录
- set svn="D:\deploy\Subversion\bin\svn.exe"
- rem svn安装目录
- set svnpath="D:\deploy\Subversion\bin"
- rem 生产环境目录
- set wwwroot="D:\WWWROOT\sky54.net"
- ( echo ==================================================
- echo Start commit %repo% r%rev%
- date /t time /t ) >> %log%
- rem 带授权用户名和密码命令update命令
- rem set cmd=%svn% update %wwwroot% --quiet --username www.sky54.net --password 123456
- rem 简化update命令(测试post-commit中无法同步到生产环境,请带上用户名和密码)
- set cmd=%svn% update %wwwroot%
- (start "start-title" /D%svnpath% /BELOWNORMAL /B %cmd% >> %log%)
提示:你也可以下载本文的post-commit.bat,然后将文件中目录路径改成自己的,上传到项目代码库hooks目录(实例D:\svnsrc\sky54.net\hooks)下即可。
2、其它配置:commit强制写日志记录,以及用户只能修改自己提交文件的日志
SVN的每次commit是不需要日志log信息,为了便于管理,项目组通常会要求增加填写log习惯,可通过配置SVN的hook实现功能管理,通常的Windows下的强制log的hook脚本如下:
- @ECHO ON
- rem pre-commit HOOK
- setlocal
- set REPOS=%1
- set TXN=%2
- rem svnlook.exe目录路径
- set svnlook="D:\deploy\Subversion\bin\svnlook.exe"
- rem 日志保证输入10个字符
- rem check that logmessage contains at least 5 characters
- %svnlook% log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
- if %errorlevel% gtr 0 goto err
- rem 过滤空格字符
- %svnlook% log "%REPOS%" -t "%TXN%" | findstr /ic:" " > nul
- if %errorlevel% gtr 0 goto success
- goto err_empty
- :err
- echo 本次版本提交,必须写日志说明信息!>&2
- echo 请补充日志说明信息后,再提交代码,例如:功能说明等!>&2
- echo 输入的日志信息不少于10个字符说明(或5个汉字),谢谢!>&2
- :err_empty
- echo 本次版本提交,必须写日志说明信息!>&2
- echo ***********禁止空格数据***********!>&2
- exit 1
- :success
- exit 0
使用说明:svn强制性写日志,字符不得小于10,汉字不少于4个,以及实现了空格过滤功能,pre-commit.bat文件目录与post-commit.bat均在项目代码库hooks目录下,实际应用时,注意修改实例中svnlook.exe路径。
pre-revprop-change.bat
便于代码库管理,防止项目组成员修改他人日志,实现SVN用户只能修改自己提交的文件日志,脚本如下:
- @ECHO ON
- rem pre-revprop-change HOOK
- set repos=%1
- set rev=%2
- set user=%3
- set propname=%4
- set action=%5
- rem svnlook.exe目录路径
- set svnlook="D:\deploy\Subversion\bin\svnlook.exe"
- for /f "usebackq" %%k in (`%svnlook% author %repos% -r %rev%`) do @set var=%%k
- set rightUser=0
- if "%3" == "%superUser%" set rightUser=1
- if "%3" == "%var%" set rightUser=1
- if %rightUser% == 0 goto ERROR_USER
- goto :SUCCESS_EXIT
- :ERROR_USER
- echo 只允许用户修改自己的日志 >&2
- goto ERROR_EXIT
- :ERROR_EXIT
- exit 1
- :SUCCESS_EXIT
- exit 0
实际应用提示:pre-revprop-change.bat文件上传目录,与pre-commit.bat、post-commit.bat等文件均在项目代码库hooks目录下。
相关推荐
本文将详细介绍在Solaris操作系统环境下,如何安装适用于SPARC架构的SVN服务器。 首先,Subversion(简称SVN)是一个用于版本控制的系统,它允许开发者跟踪并管理代码库中的变更,以便于多人协同工作。SVN的核心...
在Web环境下,PHP作为服务器端脚本语言,可以为Subversion提供友好的交互界面,使得非技术背景的用户也能轻松操作。 该管理系统主要包含以下模块: 1. 用户管理:系统支持用户注册、登录、权限分配等功能。权限...
在Windows环境下搭建SVN服务器,不仅可以为软件开发团队提供高效、稳定的版本控制服务,还能促进代码质量的提升和项目管理的规范化。通过遵循上述步骤,即使是在复杂的开发环境中,也能轻松实现SVN的部署与使用,...
### 在Windows环境下安装Hadoop #### 一、概述 随着大数据技术的发展,Hadoop作为一款分布式处理框架,已经成为处理大规模数据集的重要工具之一。对于在Windows操作系统上进行开发的人员来说,想要搭建一个完整的...
- **免费开源**:Subversion完全免费,无需担心成本问题。 - **行业认可**:根据Forrester研究报告,Subversion被认为是版本控制领域的领先者。 - **与JDeveloper集成**:Oracle JDeveloper 11g内置了对Subversion的...
然后,通过实例化`SvnClient`对象,我们便能开始与Subversion服务器通信。例如,以下代码展示了如何使用SharpSvn创建一个新的版本库: ```csharp using SharpSvn; using SharpSvn.Remote; SvnClient client = new ...
### Subclipse完全使用手册 #### 一、简介 本文档旨在详细介绍如何安装、使用以及编译Subclipse,它是Eclipse平台上的一个Subversion插件。Subclipse为用户提供了一个集成的开发环境来管理版本控制任务,使得开发...
4. 为了版本控制和团队协作,你需要在服务器上下载并安装`SVN`(Subversion)。这是一个开源的版本控制系统,用于跟踪文件和目录的更改。 5. 使用SVN克隆项目库。在D盘创建一个名为“mirror”的目录,并通过SVN的...
4. 分布式版本控制系统(DVCS):如Git和Mercurial,每个开发者都有代码库的完整副本,可以在离线状态下进行版本控制操作,提高了系统的可靠性和效率。DVCS适合分布式开发环境,支持多分支并行开发。 DVCS相较于...
综合上述信息,这个离线安装包包含了一套完整的Web开发和测试环境:Postman用于接口测试,Tomcat8作为Java Web应用服务器,Eclipse提供开发环境,并通过Eclipse的SVN和Maven插件实现版本控制和自动化构建。...
第2章 Subversion中的增量编辑器:像本体一样的接口 2.1 版本控制与目录树的转换 2.2 表达目录树的差异 2.3 增量编辑器接口 2.4 但这是不是艺术? 2.5 像体育比赛一样的抽象 2.6 结论 第3章 我编写过的最漂亮代码 ...
【标题】"isvnadmin" 是一款针对Subversion(简称SVN)的远程管理软件,专为方便用户在不直接接触服务器的情况下,进行版本控制系统中的各种操作。SVN是一种广泛应用于软件开发领域的版本控制系统,它能够跟踪文件和...
ReviewBoard是一款流行的开源在线代码审查工具,支持的版本控制系统包括Subversion、CVS、Git和Mercurial。其核心是基于Django框架和Python编程语言构建,并采用MIT许可协议,适合于需要团队协作审查源代码的开发者...
项目定版由项目实施负责人组织实施,实施过程在源代码库上面体现为:working文件夹下最新版本的源码和文档被一次性完整的提交到locked文件夹。项目定版操作建议:将locked文件夹下的源码和文档复制到working...
### IDEA教程中文版知识点详解 #### 一、安装与配置 **1.1 安装完成后的初始配置** - **是否导入旧版本设置** - 在安装完成后,系统会询问是否导入旧版本的设置文件。这些文件通常保存在用户的隐藏目录下(例如...
SVN的部署涉及服务器设置、客户端配置以及权限管理等多个环节,确保代码的安全性和完整性。 综上所述,Confluence、Jira、FishEye、Crucible、Bamboo与SVN构成了Atlassian生态中的核心组件,它们各自在知识管理、...
- **禁用 SELinux**:完全禁用SELinux的功能。 - **只记录警告信息**:允许SELinux运行但仅记录警告信息而不执行任何阻止操作。 - **目标化策略**:这是一种有限的策略,只对特定的服务如dhcpd、httpd、mysqld等生效...
这种架构的主要优点在于能够提高测试效率,减少单点故障的风险,并且可以更好地模拟真实环境下的负载情况。 #### 二、关键技术组件 ##### 1. Jenkins - **简介**:Jenkins是一款开源持续集成/持续部署(CI/CD)...
在描述中提到的"最新版汉化SVN版本控制器",意味着这是一个已经翻译成中文的SVN客户端或服务器,旨在为中文用户提供友好的界面和文档,使得操作和理解命令更加直观。汉化的版本通常包括菜单、提示信息以及帮助文档等...