??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合区图片小说区,亚洲网址在线观看你懂的,亚洲 欧洲 视频 伦小说http://m.tkk7.com/guobin/category/17098.html自家地方zh-cnThu, 08 Mar 2007 06:35:32 GMTThu, 08 Mar 2007 06:35:32 GMT60Windows下配|邮仉知http://m.tkk7.com/guobin/articles/80444.html蝈蝈蝈蝈Fri, 10 Nov 2006 09:01:00 GMThttp://m.tkk7.com/guobin/articles/80444.htmlhttp://m.tkk7.com/guobin/comments/80444.htmlhttp://m.tkk7.com/guobin/articles/80444.html#Feedback0http://m.tkk7.com/guobin/comments/commentRss/80444.htmlhttp://m.tkk7.com/guobin/services/trackbacks/80444.html在一个多人协作的环境中,每个人提交代码后Q应该能通知其他个变化,邮g是一个最常见的方法?/p>

׃windows下不像linux一样都随机配备?jin)sendmail{发送邮件的工具Q所以我们需要在windows上选择一Usmtp服务器,q里我用了(jin)JamesQ一个Java的开源的开源项目,实现?jin)完整的邮gpȝ?/p>

 (tng)本教E是 Windows下Subversion配置理员指?/font>pd教程的一部分Q各个教E采用相同的目录l构和\径,有助于大安诅R?/p>

版本库根目录: d:\svnroot Q其中有project1和project2两个版本库?br />Subversion安装目录: d:\subversion

 (tng)

1Q下载安?/h3>

a. 下蝲安装JDK

因ؓ(f)James是JavaE序Q首先你的系l必LJavaq行环境Q我们可以从Sun的官方网站下载,地址?a >http://java.sun.com/javase/downloads/index.jsp。下载直接按照默认安装即可,我选择安装的位|是D:\jdk1.5.0_09Q教E后面将?x)用这个\径?/p>

b. 下蝲安装James

James的官方网站是http://james.apache.org/Q我们可以在http://java.sun.com/javase/downloads/index.jsp下蝲James的服务器版本Q目前的最新版本是http://apache.justdn.org/james/server/binaries/james-2.3.0.zip?/p>

下蝲后直接解压羃?yu)p?jin),然后打开james-2.3.0\bin\run.batQ在@echo off后面增加下面的代码:(x)
 (tng) (tng) (tng) set JAVA_HOME=D:\jdk1.5.0_09
然后直接q行一下run.batQ就?x)提C启动了(jin)邮g服务器,其中我们使用的就是smtp服务Q这说明James安装成功?/p>

c. 下蝲安装perl

我们q个教程?x)借用subversion官方|站提供的发送邮件脚本,是用perl~写Q所以我们需要下载perl的运行环境?a >http://www.activestate.com/store/productdetail.aspx?prdGuid=81fbce82-6bd5-49bc-a915-08d58c2648ca下的http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.819-MSWin32-x86-267479.msi。perl的安装位|与后面的教E无养I可以随意安装?/p>

d. 下蝲commit-email.pl.in

官方|站?a >http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/下提供了(jin)一些有用的钩子脚本下蝲Q我们下?a >http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.pl.in?/p>


2Q配|验证James

在上一节q行?jin)run.bat后,可以看到如下的提C:(x)

Using PHOENIX_HOME:   D:\tools\james-2.3.0
Using PHOENIX_TMPDIR: D:\tools\james-2.3.0\temp
Using JAVA_HOME:      D:\jdk1.5.0_09
Phoenix 4.2
James Mail Server 2.3.0
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled

它告诉我们可以用启动正常(不要关闭H口Q,q且可以使用telnetq行理Qؓ(f)此,我们在一个新命o(h)行窗口中q行Q?/p>

telnet 127.0.0.14555

注意Q这?27.0.0.1代表?jin)我的本机地址Q如果是在局域网中,可能q里是运行James服务器的ip地址?/p>

然后出现输入用户名和密码的提C,用户名和密码都输入root卛_Q提C登陆成功后Q直接输入下面的命o(h)Q就可以d一个帐P(x)

adduser rocksun rocksun

完成q个操作后,我们可以用我们的邮g客户端(outlook, foxmailQ验证我们的James服务器,我想配置都不是问题,smtp和pop3服务器都输入?27.0.0.1”或q行James服务器主机的IP卛_Q用户名和密码都是rocksunQ设|smtp发送无需认证?/p>

然后可以发送一个测试邮ӞҎ(gu)上面d的用户信息,我们的邮件的目的地址? rocksun@127.0.0.1

Q发送后你在选择攉Ӟ应该能得到自己发送的邮gQ然后我们可以l进行了(jin)?h3>3Q编写钩?/h3>

剩下的工作就很简单了(jin)Q将commit-email.pl.in重命名ؓ(f)commit-email.plQ存攑֜D:\svnroot\下,然后扑ֈ下面q一行:(x)

my $svnlook = "@SVN_BINDIR@/svnlook";

修改为:(x)

my $svnlook = "D:/Subversion/bin/svnlook.exe";

然后来到D:\svnroot\project1\hooks下,创徏一个post-commit.bat文gQ内容如下:(x)

set REPOS=%1
set REV=%2
D:\svnroot\commit-email.pl "%REPOS%" "%REV%" rocksun@127.0.0.1--from daijun@gmail.com

好了(jin)Q在project1的工作拷贝里提交吧,然后看看你刚才配|的邮g客户端,有没有受到这ơ变更的邮g?/p>

蝈蝈 2006-11-10 17:01 发表评论
]]>
Subversion备䆾http://m.tkk7.com/guobin/articles/80443.html蝈蝈蝈蝈Fri, 10 Nov 2006 09:00:00 GMThttp://m.tkk7.com/guobin/articles/80443.htmlhttp://m.tkk7.com/guobin/comments/80443.htmlhttp://m.tkk7.com/guobin/articles/80443.html#Feedback0http://m.tkk7.com/guobin/comments/commentRss/80443.htmlhttp://m.tkk7.com/guobin/services/trackbacks/80443.html版本控制最关键的一件事是保证数据的安全性,不能因ؓ(f)盘损坏Q程序故障造成版本库无可挽回的错误Qؓ(f)此必d定较完备的备份策略。在Subversion中,我们有三U备份方式:(x)完全备䆾Q增量备份和同步版本库?br />

1, 完全备䆾

最常见和简单的备䆾是直接使用拯命o(h)Q将版本库目录拷贝到备䆾目录上,可以了(jin)。但是这样不是很安全的方式,因ؓ(f)如果在拷贝时版本库发生变化,会(x)造成备䆾的结果不够准,失去备䆾的作用,为此Subversion提供?jin)“svnadmin hotcopy”命令,可以防止q种问题?/p>

q记得我们的版本库目录吗Q?/p>

D:\SVNROOT
├─project1
│?├─conf
│?├─dav
│?├─db
│?│?├─revprops
│?│?├─revs
│?│?└─transactions
│?├─hooks
│?└─locks
└─project2
 (tng) (tng) (tng) ├─conf
 (tng) (tng) (tng) ├─dav
 (tng) (tng) (tng) ├─db
 (tng) (tng) (tng) │?├─revprops
 (tng) (tng) (tng) │?├─revs
 (tng) (tng) (tng) │?└─transactions
 (tng) (tng) (tng) ├─hooks
 (tng) (tng) (tng) └─locks
 (tng) (tng) (tng)

如果要把project1备䆾到d:\svnrootbak目录下,只需要运行:(x)

svnadmin hotcopy d:\svnroot\project1 d:\svnrootbak\project1

但是我们作ؓ(f)配置理员,必须惛_法优化这个过E,如果我们q个目录下有许多版本库,需要ؓ(f)每个版本库写q样一条语句备份,为此我写?jin)下面的脚本Q实现备份一个目录下的所有版本库。我们在D:\SVNROOT下创Z(jin)两个文gQsimpleBackup.batQ?/p>

@echo 正在备䆾版本?1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本?1成功备䆾C(jin)%2Q?/p>

q个文g仅仅是对“svnadmin hotcopy”的包装Q然后是backup.batQ?/p>

echo off

rem Subversion的安装目?br />set SVN_HOME="D:\Subversion"

rem 所有版本库的父目录
set SVN_ROOT=D:\svnroot

rem 备䆾的目?br />set BACKUP_SVN_ROOT=D:\svnrootbak

set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备䆾目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log

mkdir %BACKUP_DIRECTORY%

rem 验证目录是否为版本库Q如果是则取出名U备?br />for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simpleBackup.bat "%%~fI" %%~nI
goto end

:checkBack
echo 备䆾目录%BACKUP_DIRECTORY%已经存在Q请清空?br />goto end

:end

你在使用的时候,只需要修改backup.bat开头的三个路径Q将两个脚本拯到“SVN_ROOT”下可以了(jin)。根据以上的配置Q你只需要运行backup.batQ就可以把“SVN_ROOT”下的版本库都备份到“BACKUP_SVN_ROOT”里Qƈ且存攑֜备䆾所在日的目录里Q例如“D:\svnrootbak\2006-10-22”?/p>

虽然q部分工作很单,可是必须有h定时地去执行q个操作Q例如每周一凌晨Q,Z(jin)避免发生遗忘的情况,我们可以这个操作加入到pȝ的atd当中去,例如q是上面的环境,Z(jin)安装atdQ我们运行:(x)

at 1:00 /every:M D:\svnroot\backup.bat

q样在每周一凌晨1:00都会(x)执行q个备䆾q程。当然备份在本机也是不安全的Q你也许需要上传到别的机器Q这个就要靠你自己去实现?jin)?/p>


2, 增量备䆾

管完全备䆾非常单,但是也是有代L(fng)Q当版本库非常巨大时Q经常进行完全备份是不现实的Q也q不必要Q但是一旦版本库在备份之间发生问题,该如何呢Q这里我们就用到?jin)增量备份?/p>

增量备䆾通常要与完全备䆾l合使用Q就像oracle数据库的归档日志Q记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们q个例子中我们用的是,svnadmin dump命o(h)q行增量的备份,使用Ҏ(gu)是:(x)

svnadmin dump (tng)project1 (tng)--revision 15 --incremental > dumpfile2

上面的命令实C(jin)对修订版?5q行增量的备份,其中的输出文件dumpfile2只保存了(jin)修订版本15更改的内宏V?/p>

Z(jin)记录每次提交的结果,我们需要用一Subversion的特?-钩子QhookQ?/font>Q看看我们的project1目录Q?/p>

├─project1
│?├─conf
│?├─dav
│?├─db
│?│?├─revprops
│?│?├─revs
│?│?└─transactions
│?├─hooks
│?└─locks

其中的hooks目录里存攄是钩子脚本Q我们在此处只用post-commit钩子Q这个钩子会(x)在每ơ提交之后执行,Z(jin)实现我们的备份功能,我们在hooks下徏立一个文件post-commit.batQ内容如下:(x)

echo off
set SVN_HOME="C:\Program Files\Subversion"
set SVN_ROOT=D:\svnroot
set UNIX_SVN_ROOT=D:/svnroot
set DELTA_BACKUP_SVN_ROOT=D:\svnrootbak\delta
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if D:/svnroot/%%~nI == %1 %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end

通过q个脚本Q可以实现D:\svnroot下的版本库提交时自动增量备䆾到D:\svnrootbak\deltaQ确定这个目录存在)(j)Q其中用的deltaBackup.bat其实可以攑֜M地方Q只是对脚本的svnadmin dump的包装,内容如下Q?/p>

@echo 正在备䆾版本?2......
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本?2成功备䆾C(jin)%3Q?/p>

以上两个脚本可以直接拯到project2的hooks目录下,不需要修改就可以实现project2的自动备份?/p>

以上的操作已lOK?jin),现在需要做的是完全备份和增量备䆾l合hQ也是在完全备份后清理增量备䆾的结果,使之只保存完全备份后的结果?/p>

当果真出现版本库的故障,p求我们实现版本库的恢复操作了(jin)Q这是用要用svnadmin load命o(h)Q同时也需要上ơ的完全备䆾例如要把上次完全备䆾backuprepoQ和之后的增量备份dumpfileQ?/p>

svnadmin load (tng)backuprepo < dumpfile

最后的l果Q可以下?a >svnroot.rarQ将之解压羃到d:\下,然后修改几个bat文g的SVN_HOME可以用了(jin)?/p>

3, 版本库同?/h3>

Subversion 1.4增加?jin)同步机Ӟ可以实现一个版本库同另一个版本库的同步(但好像只是单向的Q,我们可以用来实现版本库的备䆾或镜像?/p>

3.1. 对目标库初始?/h5>
svnsync init svn://localhost/project2 svn://localhost/project1 
 (tng)

其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必Mؓ(f)I,而且必须允许修订版本属性的修改Q也是在目标的版本库的hooks目录里添加一个文件pre-revprop-change.batQ内容ؓ(f)I即可?/font>

3.2. 同步project2到project1
svnsync sync svn://localhost/project2 
 (tng)

q时候你update一下你的project2的一个工作拷贝,׃(x)发现有了(jin)project1的所有内宏V如果project1又有提交Q这时候project2的版本库无法看到最新的变化Q还需要再q行一遍sync操作Q这h能将最新的变化同步。需要注意的是,目标版本库只能做成只ȝQ如果目标版本库发生?jin)变_(d)则无法l同步了(jin)?/p>

3.3. 同步历史属性的修改

因ؓ(f)同步不会(x)更新对历史属性的修改Q所以svnsyncq有子命令copy-revpropsQ可以同步某个版本的属性?/p>

3.4. 钩子自动同步

希望在每ơ提交时同步Q则需要在源版本库增加post-commit脚本Q内容如下:(x)

						
								echo
						 off
set SVN_HOME="C:\Program Files\Subversion"
%SVN_HOME%\bin\svnsync sync  --non-interactive svn://localhost/project2 
 (tng)

把以上内容存放ؓ(f)post-commit.batQ然后放到版本库project1下的hooks目录下,q样project1每次提交Q都?x)引起project2的同步?br />



蝈蝈 2006-11-10 17:00 发表评论
]]>Subversion快速入门教E?http://m.tkk7.com/guobin/articles/80441.html蝈蝈蝈蝈Fri, 10 Nov 2006 08:58:00 GMThttp://m.tkk7.com/guobin/articles/80441.htmlhttp://m.tkk7.com/guobin/comments/80441.htmlhttp://m.tkk7.com/guobin/articles/80441.html#Feedback0http://m.tkk7.com/guobin/comments/commentRss/80441.htmlhttp://m.tkk7.com/guobin/services/trackbacks/80441.html如何快速徏立Subversion服务器,q且在项目中使用hQ这是大家最兛_(j)的问题,与CVS相比QSubversion有更多的选择Q也更加的容易,几个命o(h)可以徏立一套服务器环境Q可以用v来,q里配套?u>动画教程?
本文是用Subversion最快速的教程Q在最短的旉里帮助?zhn)建立起一套可用的服务器环境,只需略加调整可以应用到实际目当中?
本教E分Z下几个部门,不仅仅是快速入门,最后我们还有一些高U功能的说明Qؓ(f)?jin)说明简单,教程是在windows下用的方式Q以方便资源有限的项目用,对于UNIX环境下,区别q不大?/p>

软g下蝲

服务器和客户端安?/p>

建立版本库(RepositoryQ?

配置用户和权?/p>

q行独立服务?

初始化导?

基本客户端操?/p>

1QY件下?

下蝲Subversion服务器程序?

?a >官方|站的下载二q制安装文gQ来?a >二进制包下蝲部分Q找?Windows NT, 2000, XP and 2003部分Q然后选择" this directory "Q这h们可以看到许多下载的内容Q目前可以下?svn-1.4.0-setup.exe ?

下蝲Subversion的Windows客户端TortoiseSVN?

TortoiseSVN是扩展Windows Shell的一套工P可以看作Windows资源理器的插gQ安装之后Windows可以识别Subversion的工作目录?
官方|站?a >TortoiseSVN Q下载方式和前面的svn服务器类|?a >Download面的我们可以选择下蝲的版本,目前的最高稳定版本的安装文g?a >TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi?/p>

2Q服务器和客L(fng)安装

服务器安装,直接q行svn-1.4.0-setup.exe Q根据提C安装即可,q样我们有?jin)一套服务器可以q行的环境?

安装TortoiseSVNQ同L(fng)接运?a >TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按照提示安装卛_Q不q最后完成后?x)提C是否重启,其实重启只是使svn工作拯在windows中的Ҏ(gu)样式生效Q与所有的实际功能无关Q这里ؓ(f)?jin)立ȝ到好的效果,q是重新启动机器?br /> (tng)

3Q徏立版本库QRepositoryQ?/h1>

q行Subversion服务器需要首先要建立一个版本库QRepositoryQ,可以看作服务器上存放数据的数据库Q在安装?jin)Subversion服务器之后,可以直接q行Q如Q?

svnadmin create E:\svndemo\repository

׃(x)在目录E:\svndemo\repository下创Z个版本库?

我们也可以用TortoiseSVN囑Ş化的完成q一步:(x)
在目录E:\svndemo\repository?右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, q里使用默认卛_Q?然后创Z(jin)一pd目录和文件?


4Q配|用户和权限

来到E:\svndemo\repository\conf目录Q修改svnserve.confQ?
# [general]
# password-db = passwd
改ؓ(f)Q?
[general]
password-db = passwd 然后修改同目录的passwd文gQ去掉下面三行的注释Q?
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:(x)
[users]
harry = harryssecret
sally = sallyssecret

 (tng)

5Q运行独立服务器

在Q意目录下q行Q?
svnserve -d -r E:\svndemo\repository 我们的服务器E序已l启动了(jin)?span class="ontab">注意不要关闭命o(h)行窗口,关闭H口也会(x)把svnserve停止?


6Q初始化导入

来到我们惌导入的项目根目录Q在q个例子里是E:\svndemo\initprojectQ目录下有一个readme.txt文gQ?


右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/?
ok
完成之后目录没有M变化Q如果没有报错,数据已l全部导入到?jin)我们刚才定义的版本库中?

需要注意的是,q一步操作可以完全在另一台安装了(jin)TortoiseSVN的主Zq行。例如运行svnserve的主机的IP?33.96.121.22Q则URL部分输入的内容就是“svn://133.96.121.22/”?/p>


7Q基本客L(fng)操作

取出版本库到一个工作拷贝:(x)
来到LI目录下Q在本例中是E:\svndemo\wc1Q运行右?>CheckoutQ在URL of repository中输入svn://localhost/Q这h们就得到?jin)一份工作拷贝?
在工作拷贝中作出修改q提交:(x)
打开readme.txtQ作Z改,然后右键->Commit...Q这h们就把修Ҏ(gu)交到?jin)版本库Q我们可以运行?

察看所作的修改Q?
readme.txt上右?>TortoiseSVN->Show LogQ这h们就可以看到我们对这个文件所有的提交。在版本1上右?>Compare with working copyQ我们可以比较工作拷贝的文g和版?的区别?



蝈蝈 2006-11-10 16:58 发表评论
]]>
Windows下Subversion配置理员指南(二)(j)Subversion的权限控?/title><link>http://m.tkk7.com/guobin/articles/80440.html</link><dc:creator>蝈蝈</dc:creator><author>蝈蝈</author><pubDate>Fri, 10 Nov 2006 08:57:00 GMT</pubDate><guid>http://m.tkk7.com/guobin/articles/80440.html</guid><wfw:comment>http://m.tkk7.com/guobin/comments/80440.html</wfw:comment><comments>http://m.tkk7.com/guobin/articles/80440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/guobin/comments/commentRss/80440.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/guobin/services/trackbacks/80440.html</trackback:ping><description><![CDATA[ <p>在阅L文之前,L(fng)定你已经知道?jin)Subversion基本的服务器理Q知道了(jin)svnserve或Apache的配|,清楚如何讄用户和密码。关于svnserve的配|可以看我们的?a class="mostread" >Subversion快速入门教E?/a>》和?a class="mostread" >用Apache 和Subversion 搭徏安全的版本控制环?/a>》,对于一些细节情参?a >《用Subversionq行版本控制》?/a></p> <p>作ؓ(f)一个配|管理员Q需要管理用L(fng)权限Q本文主要介l了(jin)使用Subversion的授权文件“authz-db”,同时Z(jin)叙述的清晎ͼ我首先澄清一些概c(din)?/p> <h3>1Q认证(AuthenticationQ和授权QAuthorizationQ?/h3> <p>q两个术语经怸起出现。其中认证的意思就是鉴别用L(fng)w䆾Q最常见的方式就是用用户名和密码,授权?yu)是判断用户是否具备某种操作的权限,在Subversion里提供了(jin)“authz-db”文Ӟ实现?jin)以路径为基的授权,也就是判断用h否有操作对应路径的权限,在Subversion 1.3之后Qsvnserve和Apache一样都可以使用“authz-db”文件?/p> <h3> <br />2. svnserve下的配置文g</h3> <p>因ؓ(f)本文是以svnserveZ的,所以先介绍一下版本库目录的结构:(x)</p> <p>D:\SVNROOT\PROJECT1<br />├─conf<br />├─dav<br />├─db<br />│?├─revprops<br />│?├─revs<br />│?└─transactions<br />├─hooks<br />└─locks</p> <p>其中conf下面有三个文Ӟ(x)</p> <p> (tng) (tng) (tng) authz<br /> (tng) (tng) (tng) passwd<br /> (tng) (tng) (tng) svnserve.conf</p> <p>其中的“svnserve.conf”是q个版本库的配置文gQ当使用svnserveӞq个配置文g军_?jin)用什么认证和授权文gQ?/p> <p> (tng) (tng) (tng) password-db = passwd<br /> (tng) (tng) (tng) authz-db = authz</p> <p>上面的配|说明用“svnserve.conf”同目录的passwd和authzQ其中的password-db指定?jin)用户密码文Ӟauthz-db是我们的授权文gQ也是我们本文主要介绍的文件?/p> <p> <font color="#ff0000">注意Q用Apache作ؓ(f)服务器时Q根本就不会(x)参考“svnserve.conf”文件的内容Q而是?x)参考Apache的配|?/font> </p> <h3> <br />3Q基于svnserve的版本库文g布局</h3> <p>使用svnserveӞZ(jin)理的方便,应该使用相同的认证和授权文gQ所以应该让所有版本库的配|文件svnserve.conf指向同一个password-db和authz-db文g。下面是一个多版本库的目录Q?br />D:\SVNROOT<br />├─project1<br />│?├─conf<br />│?├─dav<br />│?├─db<br />│?│?├─revprops<br />│?│?├─revs<br />│?│?└─transactions<br />│?├─hooks<br />│?└─locks<br />└─project2<br /> (tng) (tng) (tng) ├─conf<br /> (tng) (tng) (tng) ├─dav<br /> (tng) (tng) (tng) ├─db<br /> (tng) (tng) (tng) │?├─revprops<br /> (tng) (tng) (tng) │?├─revs<br /> (tng) (tng) (tng) │?└─transactions<br /> (tng) (tng) (tng) ├─hooks<br /> (tng) (tng) (tng) └─locks<br /> (tng) (tng) (tng) <br />D:\SVNROOT下有两个目录project1和project2Q都已经创徏?jin)版本库Q所以我们修Ҏ(gu)个conf目录下的svnserve.confQ之指向同一个password-db和authz-db文g?/p> <pre>password-db = ..\..\passwd authz-db = ..\..\authz</pre> <p>q样QD:\SVNROOT\passwd和D:\SVNROOT\authz控制了(jin)所有版本库的svnserve讉K。另外在后面的操作中要关闭匿名访问,应该L“anon-access = none”前的?”号Q保证只有认证用户可以访问?/p> <p> <font color="#ff0000">注意Q还有一炚w要注意,那就是svnserve的“realm”的|在上面的讄下,应该保证所有的版本库用相同的realm|q样Q对版本库的密码~存可以在多个版本库之间׃nQ更多细节见<span id="9xp9999" class="sect2"><a ><u><font color="#0000ff">客户端凭证缓?/font></u></a></span>?/font> </p> <h3>4Q测试用户和l说?/h3> <p>版本库禁止Q何匿名用L(fng)讉KQ只对认证用h效?/p> <p>root:配置理理员,对版本库有完全的理权限?/p> <p>p1_admin1:project1的管理员Q对project1有完全权限?br />p1_d1:project1的开发者,对project1的trunk有完全的权限Q但是对其中?trunk/admin目录没有M权限?br />p1_t1:project1的测试者,对project1的trunk有完全的L限,但是对其中的/trunk/admin目录没有M权限?/p> <p>p2_admin1:project2的管理员Q对project2有完全权限?br />p2_d1:project2的开发者,对project2的trunk有完全的权限Q但是对其中?trunk/admin目录没有M权限?br />p2_t1:project2的测试者,对project2的trunk有完全的L限,但是对其中的/trunk/admin目录没有M权限?/p> <p> <br />对应的组?qing)组的用P(x)<br />p1_group_a:p1_admin1<br />p1_group_d:p1_d1<br />p1_group_t:p1_t1<br />p2_group_a:p2_admin1<br />p2_group_d:p2_d1<br />p2_group_t:p2_t1</p> <p> <br />5Q修改D:\SVNROOT\passwd文g</p> <p>前面已经说过?jin),用户和密码文件应该是在D:\SVNROOT\passwdQ所以我们ؓ(f)每一位用戯|权限,文g内容如下Q?/p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <pre> <span style="COLOR: #66cc66">[</span>users<span style="COLOR: #66cc66">]</span> p1_admin1 = p1_admin1 p1_d1 = p1_d1 p1_t1 = p1_t1 p2_admin1 = p2_admin1 p2_d1 = p2_d1 p2_t1 = p2_t1</pre> </blockquote> <p>Z(jin)便于验证Q所有密码和用户名一_(d)如果你用的是其他认证方式,q一步可能不同,但是用户名应该都是一L(fng)?/p> <p>6Q配|授权,修改D:\SVNROOT\authz</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>[groups]<br /># 定义l信?/p> <p>p1_group_a = p1_admin1<br />p1_group_d = p1_d1<br />p1_group_t = p1_t1</p> <p>p2_group_a = p2_admin1<br />p2_group_d = p2_d1<br />p2_group_t = p2_t1</p> <p> <br />[/]<br /># 指定所有的版本库默认只读,root可读?br />* = r<br />root = rw</p> <p> <br />[project1:/]<br /># 指定对版本库project1根目录的权限<br />@p1_group_a = rw<br />@p1_group_d = rw<br />@p1_group_t = r</p> <p>[project1:/trunk/admin]<br /># 指定对版本库project1?trunk/admin根目录的权限Q?br /># p1_group_adQp1_group_d和p1_group_t没有M权限?br />@p1_group_a = rw<br />@p1_group_d = <br />@p1_group_t = </p> <p> </p> <p>[project2:/]<br /># 指定对版本库project2根目录的权限<br />@p2_group_a = rw<br />@p2_group_d = rw<br />@p2_group_t = r</p> <p>[project2:/trunk/admin]<br /># 指定对版本库project1?trunk/admin根目录的权限<br />@p2_group_a = rw<br />@p2_group_d = <br />@p2_group_t = </p> </blockquote> <p> <br />l过以上讄以后Q你?x)发C些有的事情。当使用用户“p1_d1”,(g)出project1的trunkӞ目录是空的,好像admin目录Ҏ(gu)不存在一P当用p1_d1用户览版本库时Q能够看到admin目录Q但是其中的内容却无法看到?/p> <p>关于中文目录Q也是没有问题的Q只是注意要把authz文g转化为UTF-8格式Q在我的WINXP的UltraEdit里显C的文g格式为U8-DOSQ具体的做法是用UltraEdit打开authz文gQ然后选择“文?>转换->ASCII转UTF-8”,然后保存?/p> <p>再复杂的情况也不q如此,在实际的工作中要首先规划好权限,只赋l用h的权限Q保证以最的配置实现最复杂的权限控制?/p> <img src ="http://m.tkk7.com/guobin/aggbug/80440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/guobin/" target="_blank">蝈蝈</a> 2006-11-10 16:57 <a href="http://m.tkk7.com/guobin/articles/80440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下Subversion配置理员指南(一QSubversion安装成servicehttp://m.tkk7.com/guobin/articles/80438.html蝈蝈蝈蝈Fri, 10 Nov 2006 08:56:00 GMThttp://m.tkk7.com/guobin/articles/80438.htmlhttp://m.tkk7.com/guobin/comments/80438.htmlhttp://m.tkk7.com/guobin/articles/80438.html#Feedback0http://m.tkk7.com/guobin/comments/commentRss/80438.htmlhttp://m.tkk7.com/guobin/services/trackbacks/80438.html以前的svnserve要想成ؓ(f)windows服务Q必M赖于svnservice或其他工兗从Subversion1.4开始,Subversion本n集成Windows服务的工兗?br />

1Q安装svnservice

在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 ServerQ本w包含了(jin)一个安装服务的工具Q叫?Service Control"Q也是sc.exe?/p>

例如我的Subversion安装?D:\Subversion"Q版本库?D:\svnroot"Q而我希望对应的Subversion服务名ؓ(f)svnserviceQ安装这个svn服务的命令就可以q样写:(x)

 (tng) (tng) (tng) (tng) (tng) sc create svnservice
 (tng) (tng) (tng) (tng) (tng) binpath= "D:\Subversion\bin\svnserve.exe --service -r D:\svnroot"
 (tng) (tng) (tng) (tng) (tng) displayname= "SVNService"
 (tng) (tng) (tng) (tng) (tng) depend= Tcpip
 (tng) (tng) (tng) (tng) (tng)
h意,因ؓ(f)便于察看Q上面的命o(h)分ؓ(f)多行Q但在实际执行时应该在一行里。另外,在以前启动svnserve时会(x)使用"-d"选项Q也是守护q程模式Q在q里不能使用Q会(x)D服务无法启动。同P"-i"?-t"选项也不能用?/p>

在命令行H口执行完这个命令之后,服务q没有启动,你可以l运?net start svnservice"启动q个服务Q然后?net stop svnservice"停止服务?/p>

另外q有两点需要小?j)处理。首先,如果路径中包括空|一定要用“\”处理?”号Q例如上面的例子中如果svnserve.exe在“c:\program files\subversion\”中Q则命o(h)应该写ؓ(f)“binpath= "\"c:\program files\subversion\bin\svnserve.exe\"”(“”中的内容)(j)Q整个命令如下,U色部分是改变部分:(x)

 (tng) (tng) (tng) (tng) (tng) sc create svnservice
 (tng) (tng) (tng) (tng) (tng) binpath= "\"D:\program files\Subversion\bin\svnserve.exe\" --service -r D:\svnroot"
 (tng) (tng) (tng) (tng) (tng) displayname= "SVNService"
 (tng) (tng) (tng) (tng) (tng) depend= Tcpip
 (tng) (tng) (tng) (tng) (tng)
其次Qsc寚w项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是?”前不能有空各,而后面必LI格?/p>


2Q删除服?/h3>

如果服务安装的有问题Q你可能需要删除服务。要删除前面d的服务,只需要运?net start svnservice"Q?svnservice"是我们创徏服务时用的名字?/p>


3Q配|服务是自动启动

默认情况下安装的服务不会(x)随Windows的启动而启动,Z(jin)使svn服务能够随Windows启动而启动,需要修改一?sc create"命o(h)Q首先要删除Q,增加"start= auto"选项Q?/p>

 (tng) (tng) (tng) (tng) (tng) sc create svnservice
 (tng) (tng) (tng) (tng) (tng) binpath= "D:\Subversion\bin\svnserve.exe --service -r D:\svnroot"
 (tng) (tng) (tng) (tng) (tng) displayname= "SVNService"
 (tng) (tng) (tng) (tng) (tng) depend= Tcpip
 (tng) (tng) (tng) (tng) (tng) start= auto
 (tng) (tng) (tng) (tng) (tng)
当然你也可以使用囑Ş化的工具修改服务的属性,你可以在“开?>q行...”中执行"services.msc"Q然后在界面中修攏V?/p>

蝈蝈 2006-11-10 16:56 发表评论
]]>
վ֩ģ壺 ַѹۿ| ձһ߹ۿ| ձһһѿ | ëƬһ| ëƬѹۿ| ۺɫ߹ۿ| ѿaɫƬ| ݺady޾Ʒ| ޾ƷӰ| 弦վ߲ѹۿ| һ߹ۿƷ | һһһƵѿ| ޱרwww| ֻƬþù| ؼavëƬѹۿ| ŮƵ| Ļձ޾þþ | ޾Ʒ˳߲ӰԺ| ֻˬ޵Ƶ| ˵վ| һAvëƬþþƷ | ҵС身߿Ѹ| AVۺɫAV| պȫƵۿѹۿ| Ʒާѡ벥Ų | þĻƷһ| 99պƷ| ˳վձƬ| պaëƬƵ| þþþþëƬѿ| ޹ƷþѾ| ڵƵ| ɫwww| һ234 | Ѵվ߿| þþþùƷѲ| ɫWW47| ޾Ʒ| ƷѵĻվ| ձ߿Ƭ| ɫַѹۿ|