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
这里需要注意的有两点: 1、binpath是你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服务器上必须先要有department和employee这两个文件夹,那么这样的权限配置才会生效。
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="RequireLogMessage" 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>
<lesslogsize value="10" />
<errormessage 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)