SVN (转)

使用软件:

软件版本号                                                                                      说明
svn-1.4.4-setup.exe                                                              SVN
的服务器
TortoiseSVN-1.4.4.9706-win32-svn-1.4.4.msi (
乌龟)                   SVN的客户端

 

搭建SVN服务器:

1.1安装

安装SVN服务器(svn-1.4.4-setup.exe),建议将保存路径改为C:"Subversion;完成安装后,右击我的电脑→属性→高级→环境变量 PATH变量的值设为C:"Subversion"bin;将APR_ICONV_PATH变量的值设为C:"Subversion"iconv

SVN客户端安装,按照提示完成即可。

1.2创建版本库

方法有两种

第一种:服务器机器上创建两个文件夹,例如(D:/sourcecode/project1),右击刚才创建的文件夹(project1)选择TortoiseSVN→在此创建版本库,接着会弹出个对话框,选择Berkeley 数据库(BDB)即可,提示版本库创建成功。

第二种:服务器机器上创建一个文件夹,例如(D:/sourcecode),执行以下命令对版本库进行创建:

svnadmin create D:"sourcecode" project1   在这里只需要创建好sourcecode文件夹,project1文件夹自动创建,(版本库文件自然都放在project1下)

1.3创建Subversion 服务

执行以下命令

sc create svn binpath= """C:"Subversion"bin"svnserve.exe"" --service -r ""D:"sourcecode""" displayname= "Subversion Server" depend= Tcpip start= auto

这里需要注意的有两点: 1binpath是你Subversion安装地址,并且指向bin文件里的svnserve.exe

2--service -r ""D:"sourcecode"" 这里指的是版本库文件的父路径,而不是版本库的路径(对以后的SVN权限设置,这个很关键!)。

提示创建成功!

去管理工具→服务启动Subversion Server这个服务,以后开机将自动启动。

1.4操作版本库信息

1.2中已经创建了名为project1的版本库文件,这个文件夹里会有很多子文件夹及文件,我们先对其下的conf文件夹里的文件做个说明吧~

svn服务配置文件,该文件版本库目录的conf目录下,文件名为svnserve.conf
用户名口令文件,该文件名在文件svnserve.conf中指定,同目录下的passwd
权限配置文件,该文件名也在文件svnserve.conf中指定,同目录下的authz

接下来要对这三个文件都做一下更改:

1:首先用记事本打开passwd文件,这个文件是创建用户、设置用户密码用的;

[users] 加入 用户名 = 密码

例如: [users]

        TuXia = 11

              Test =22

这里的TuXia为用户名,11为密码,需要注意的是,添加一个用户时要从顶格开始写,否则SVN将会报错。

2:打开conf目录下的svnserve.conf文件,在[general]下面添加:

authz-db = authz

anon-access = none

password-db = passwd

realm = sourcecode

auth-access = write

上面的realm为版本库应用域,后面写你的版本库所在目录的父目录即可。

3:打开同conf目录下的authz文件(权限操作

这里先要做下说明,版本库一般有两种形式:单库式和多库式。他们的服务启动和authz配置都有所不同。

单库式直接指定到版本库):

dos下切换到C:"Subversion"bin目录执行如下操作:

svnserve -d -r D:"sourcecode"project1 这样服务就启动了,把这个控制台窗口最小化即可,不要关闭!

下面对authz文件进行配置([groups]下面注释的东西先删了吧~因为多容易混淆,另外注意顶格开始写)
   [groups]
   g_Admin = TuXia
   g_User =Test
  [/]
  @ g_Admin =rw       

*=

在上面的第1步中,已经添加了两个用户(TuXia,Test;

g_Admin组里添加TuXia这个用户,g_User组里添加Test用户,若一个组里有很多用户,则用户与用户之间用“,”分开即可,例如:g_Admin = TuXia,Test

[/]表示对整个版本库的操作权限,g_Admin这个组有rw(可读可写)权限,也就是说TuXia这个用户对这个版本库下的所有项目文件都具有操作权限,*= 的意思是除上面的组以外别的组没有对版本库的操作权限(*= r 表示其余人拥有读的权限),所以Test这个用户将不可以操作整个版本库下的所有项目文件。

如果想对版本库下的每个项目文件分配权限设置,那么我们就必须使用‘多库式’

多库式指定到版本库的上级目录)

dos下切换到C:"Subversion"bin目录执行如下操作:

svnserve -d -r D:"sourcecode 这样服务就启动了,把这个控制台窗口最小化即可,不要关闭!

下面对authz文件进行配置([groups]下面注释的东西先删了吧~因为多容易混淆,另外注意顶格开始写)

[groups]

g_Admin = TuXia

g_User =Test
[project1:/]
@ g_Admin =rw       

*= 

[project1:/ department]

@ g_Admin =rw

*=

[project1:/ employee]

@ g_Admin =rw

@ g_User =r           //赋予g_User组只读的意思

*=

应该注意的是:SVN服务器上必须先要有departmentemployee这两个文件夹,那么这样的权限配置才会生效。

1.5强制写日志

网上很多地方所说的加个钩子脚本操作确实简单,但不管用,我发现一个脚本类库,操作有点麻烦,但是使用效果很好,参考(http://bbs.iusesvn.com/thread-2480-1-1.html)页面拉下去有整个脚本的zip,下载下来,按照网站上步骤做即可。

这样SVN服务器端的搭建就完成了。 嘿嘿  ^_^

 

  下文转载自 http://bbs.iusesvn.com/thread-2480-1-1.html

使用CaptainHook实现的svn hooks功能

前几天google,发现了一个.net的svn hooks脚本的类库,主页:captainhook

下载下来,修改了其中的一些代码,暂时实现了“强制写日志,“提交发送邮件,“允许修改自己提交的日志”的三个功能

现在讲讲如何使用:

1.  把压缩包中CaptainHook.
exe,CaptainHook.exe.config,CaptainHook.Interfaces.dll,CaptainHook.SubversionWrapper.dll和plugin中所有文件
复制到某文件夹下,如:D:"CaptainHook。
把hooks_bat文件夹下的三个bat文件复制到
版本库
的hooks文件夹下。

2.  修改三个bat文件,把其中的D:"CaptainHook"CaptainHookBinaries"CaptainHook.exe修改成D:"CaptainHook"CaptainHook.exe

3.  配置CaptainHook,修改CaptainHook.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="captionhook" type="CaptainHook.Configuration.CaptionHookConfigurationHanlder, CaptainHook"/>
  </configSections>
  <captionhook>
    <plugins>
      <plugin name="Require
Log
Message" path="D:"CaptainHook"plugins"RequireLogMessage.Plugin.dll" enable="false"/>
      <plugin name="PostCommitEmail" path="D:"CaptainHook"plugins"PostCommitEmail.Plugin.dll" enable="false"/>
      <plugin name="EditLogMessage" path="D:"CaptainHook"plugins"EditLogMessage.Plugin.dll" enable="true"/>
    </plugins>
    <svncommands>
      <svncommand command="svn" path="svn.exe" />
      <svncommand command="svnlook" path="svnlook.exe" />
    </svncommands>
  </captionhook>
</configuration>

修改三个plugin的path,enable:true/false,表明是否启用该plugin。
修改二个svncommand的path值,修改成正确的值,如果配过svn的
路径环境
变量path中,则不需要改动。

4.  配置“强制写日志”功能
打开plugin文件夹下的RequireLogMessage.Plugin.cfg.xml
<?xml version="1.0" encoding="utf-8" ?>
<config>
  <le
ssl
ogsize value="10" />
  <
error
message value="A Log Message is required!" />
</config>

lesslogsize
值表明提交日志的长度最小值
errormessage 值表明提交日志为空或不大于等于最小字符数时的错误信息,请注意不能含有
中文字符,否则TortoiseSVN
会报错。

5.  配置“提交发送邮件”功能
打开plugin文件夹下的RequireLogMessage.Plugin.cfg.xml
<?xml version="1.0" encoding="utf-8" ?>
<config>
  <smtp>
    <host value="mail.svn.com" />
    <port value="25" />
    <auth value="true" />
    <user value="user" />
    <password value="password" />
  </smtp>
  <mail>
    <frommail name="
admin
" address="admin@svn.com" />
    <tomails>
      <tomail name="admin" address="
admin@svn.com" />
    </tomails>
    <ccmails>
      <ccmail name="" address="" />
    </ccmails>
    <bccmails>
      <bccmail name="" address="" />
    </bccmails>
    <subject value="svn
commit" />
    <bodytemplate value="mailtemplate.vm" />
  </mail>
</config>

配置正确的host,port值,如果邮件服务器需要密码
验证,则auth为true,并且配置正确的user和password值,否则为false。
mail中各个节点值,很明确了,就不详细说了

6.  配置“允许修改自己提交的日志”功能
打开plugin文件夹下的EditLogMessage.Plugin.cfg.xml
<?xml version="1.0" encoding="utf-8" ?>
<config>
  <editallauthors>
    <author name="admin" />
  </editallauthors>
  <lesseditlogsize value="10" />
</config>

<author name="admin" />表明除了自己外,
用户admin
可以修改任意用户提交的日志,
如果有多个这样能修改任意用户提交日志的用户,则请配置多个author节点

<lesseditlogsize value="10" />表明修改后的日志长度的最小值。

通过以上的配置,就可以使用“强制写日志”,“提交发送邮件”,“允许修改自己提交的日志”的三个功能,enjoy it!!!

 

转自(http://www.cnblogs.com/RayGu/archive/2008/07/04/1235876.html)

 

 

posted @ 2009-04-22 09:53  flat_peach  阅读(423)  评论(0编辑  收藏  举报