﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-fullqin-随笔分类-tools</title><link>http://www.blogjava.net/fullqin/category/33501.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 03 Aug 2008 07:30:12 GMT</lastBuildDate><pubDate>Sun, 03 Aug 2008 07:30:12 GMT</pubDate><ttl>60</ttl><item><title>【原】在window上使用svn管理版本</title><link>http://www.blogjava.net/fullqin/archive/2008/08/02/219629.html</link><dc:creator>fullqin</dc:creator><author>fullqin</author><pubDate>Sat, 02 Aug 2008 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/fullqin/archive/2008/08/02/219629.html</guid><wfw:comment>http://www.blogjava.net/fullqin/comments/219629.html</wfw:comment><comments>http://www.blogjava.net/fullqin/archive/2008/08/02/219629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fullqin/comments/commentRss/219629.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fullqin/services/trackbacks/219629.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体">环境：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">操作系统：</span>window xp sp2</p>
<p style="text-indent: 21pt">SVN<span style="font-family: 宋体">的版本：</span>1.5<span style="font-family: 宋体">（</span>http://www.collab.net/downloads/subversion/<span style="font-family: 宋体">）</span></p>
<p style="text-indent: 21pt">TortoiseSVN<span style="font-family: 宋体">的版本：</span>1.5<span style="font-family: 宋体">（</span>http://sourceforge.net/projects/tortoisesvn/<span style="font-family: 宋体">）</span></p>
<p>SVN<span style="font-family: 宋体">服务器端安装配置</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">1、&nbsp;<span style="font-family: 宋体">安装</span>SVN<span style="font-family: 宋体">服务器端</span></p>
<p style="text-indent: 18pt">A<span style="font-family: 宋体">、到</span>svn<span style="font-family: 宋体">的官方网下载</span>svn<span style="font-family: 宋体">服务器端软件到本地，然后安装，按提示一步一步安装完成。</span>1.5<span style="font-family: 宋体">版本默认的会将</span>svn<span style="font-family: 宋体">添加为</span>window<span style="font-family: 宋体">的服务的选项，勾选上即可随操作系统的启动而启动</span>svn<span style="font-family: 宋体">的服务。而</span>1.5<span style="font-family: 宋体">以前的版本则需要手动添加的</span>window<span style="font-family: 宋体">的服务中，用</span>window<span style="font-family: 宋体">的</span>sc<span style="font-family: 宋体">命令，至于</span>sc<span style="font-family: 宋体">命令如何用读者可以查看</span>sc<span style="font-family: 宋体">的帮助。</span></p>
<p style="text-indent: 18pt">B<span style="font-family: 宋体">、安装完后打开</span>window<span style="font-family: 宋体">的服务管理器，将</span>svn<span style="font-family: 宋体">的服务启动，全名为</span>Svnversion Server<span style="font-family: 宋体">。打开命令行运行命令</span>svnadmin --version<span style="font-family: 宋体">，可以看到</span>svn<span style="font-family: 宋体">安装的版本信息，至此</span>svn<span style="font-family: 宋体">的安装完成。</span></p>
<p style="text-indent: 18pt">C<span style="font-family: 宋体">、安装</span>svn<span style="font-family: 宋体">客户端端软件</span>TortoiseSVN<span style="font-family: 宋体">，按步骤安装下来即可。</span></p>
<p>2<span style="font-family: 宋体">、</span>SVN<span style="font-family: 宋体">服务器端的配置</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">第一点只介绍了</span>svn<span style="font-family: 宋体">的安装，要让其能够使用，我们还需要些配置，像版本库的建立，用户的访问权限等。</span></p>
<p style="text-indent: 21pt">A<span style="font-family: 宋体">、创建版本库。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">打开命令行执行</span>svnadmin create path<span style="font-family: 宋体">，其中</span>path<span style="font-family: 宋体">表示你要建立的版本库的存放路径,此路径也是svn在window的服务上注册是指向的路径，笔者的路径为</span>D:\svn_repository<span style="font-family: 宋体">，即</span>svnadmin create D:\svn_repository<span style="font-family: 宋体">。运行该命令后，可以发现在</span>D:\svn_repository<span style="font-family: 宋体">的目录下，创建了些文件和文件夹，至此创建版本库成功。</span></p>
<p style="text-indent: 21pt">B<span style="font-family: 宋体">、配置用户的访问权限。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">在刚才的目录下有个文件夹</span>conf<span style="font-family: 宋体">，</span>svn<span style="font-family: 宋体">的配置文件就在此目录中。打开该文件夹下的</span>svnserver.conf<span style="font-family: 宋体">文件，我们可以看到</span>svn<span style="font-family: 宋体">的配置信息的一些属性，这里行前凡是有</span>#<span style="font-family: 宋体">的都表示被注释掉了，你可以把</span>#<span style="font-family: 宋体">去掉让该行的属性生效，或者自己在最后添加新的行来生效</span>svn<span style="font-family: 宋体">的属性。</span></p>
<p><span style="font-family: 宋体">在这我们关心的属性说明如下：</span></p>
<p>anon-access = read&nbsp;<span style="font-family: 宋体">表示匿名的用户可以什么样的方式访问版本库，有</span>none<span style="font-family: 宋体">、</span>read<span style="font-family: 宋体">、</span>write<span style="font-family: 宋体">三个值可选，文件中为</span>read<span style="font-family: 宋体">说明匿名用户可以只读的方式访问版本库。</span></p>
<p>auth-access = write&nbsp;<span style="font-family: 宋体">表示验证通过的用户具有什么权限，有</span>none<span style="font-family: 宋体">、</span>read<span style="font-family: 宋体">、</span>write<span style="font-family: 宋体">三个值可选，文件中为</span>write<span style="font-family: 宋体">表示可写，当然也可读了。</span></p>
<p>password-db = passwd&nbsp;<span style="font-family: 宋体">表示用户的密码存放的地方。</span></p>
<p>authz-db = authz&nbsp;<span style="font-family: 宋体">表示版本库中访问路径的规则，即谁只能访问哪个目录下的文件，其他目录下的文件无法访问。</span></p>
<p><span style="font-family: 宋体">现在我们将</span>auth-access<span style="font-family: 宋体">、</span>password-db<span style="font-family: 宋体">、</span>authz-db<span style="font-family: 宋体">三个属性的前面的</span>#<span style="font-family: 宋体">去掉，使其生效，注意三个属性前不能有空格。</span></p>
<p><span style="font-family: 宋体">然后我们编辑</span>passwd<span style="font-family: 宋体">和</span>authz<span style="font-family: 宋体">这两个文件的信息。</span></p>
<p style="text-indent: 21pt">a<span style="font-family: 宋体">、在</span>passwd<span style="font-family: 宋体">文件中的</span>[users]<span style="font-family: 宋体">下添加能访问版本库的用户名和密码，如该文件中的事例。我们添加</span>admin = admin</p>
<p style="text-indent: 21.75pt">b<span style="font-family: 宋体">、在</span>authz<span style="font-family: 宋体">文件中，</span>[groups]<span style="font-family: 宋体">下可以配置组信息，即将几个人加入到一个组中。</span>[/foo/bar]<span style="font-family: 宋体">下添加人员的规则表示谁可访问</span>/foo/bar<span style="font-family: 宋体">路径下的信息。我们在</span>[/foo/bar]<span style="font-family: 宋体">下添加</span></p>
<p>[/]</p>
<p>admin = rw</p>
<p><span style="font-family: 宋体">至此，我们配置了</span>admin<span style="font-family: 宋体">的账号，该账号具有根目录下的所有文件的读写操作权限。</span></p>
<p>3<span style="font-family: 宋体">、创建我们的项目</span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">在</span>D:"test<span style="font-family: 宋体">下新建</span>project<span style="font-family: 宋体">文件夹，在</span>project<span style="font-family: 宋体">下新建</span>trunk<span style="font-family: 宋体">，</span>tags<span style="font-family: 宋体">，</span>branches<span style="font-family: 宋体">三个文件夹，打开命令行，将目录转到</span>D:\test<span style="font-family: 宋体">下，运行</span>svn import &#8211;m addproject --username admin --password admin --config-dir /project svn://localhost<span style="font-family: 宋体">回车显示如下：</span></p>
<p>Adding project</p>
<p>Adding project/trunk</p>
<p>Adding project/branches</p>
<p>Adding project/tags</p>
<p>Committed revision 1.</p>
<p><span style="font-family: 宋体">表示我们的项目</span>project<span style="font-family: 宋体">创建成功。</span></p>
<p><span style="font-family: 宋体">这里说明下</span>trunk<span style="font-family: 宋体">、</span>tags<span style="font-family: 宋体">、</span>branches<span style="font-family: 宋体">三个文件夹的作用：</span></p>
<p>trunk<span style="font-family: 宋体">：表示开发时版本存放的目录，即在开发阶段的代码都提交到该目录上。</span></p>
<p>branches<span style="font-family: 宋体">：表示发布的版本存放的目录，即项目上线时发布的稳定版本存放在该目录中。</span></p>
<p>tags<span style="font-family: 宋体">：表示标签存放的目录。</span></p>
<p><span style="font-family: 宋体">在这需要说明下分三个目录的原因，如果项目分为一期、二期、三期等，那么一期上线时的稳定版本就应该在一期完成时将代码</span>copy<span style="font-family: 宋体">到</span>branches<span style="font-family: 宋体">上，这样二期开发的代码就对一期的代码没有影响，如新增的模块就不会部署到生产环境上。而</span>branches<span style="font-family: 宋体">上的稳定的版本就是发布到生产环境上的代码，如果用户使用的过程中发现有</span>bug<span style="font-family: 宋体">，则只要在</span>branches<span style="font-family: 宋体">上修改该</span>bug<span style="font-family: 宋体">，修改完</span>bug<span style="font-family: 宋体">后再编译</span>branches<span style="font-family: 宋体">上最新的代码发布到生产环境即可。</span>tags<span style="font-family: 宋体">的作用是将在</span>branches<span style="font-family: 宋体">上修改的</span>bug<span style="font-family: 宋体">的代码合并到</span>trank<span style="font-family: 宋体">上时创建个版本标识，以后</span>branches<span style="font-family: 宋体">上修改的</span>bug<span style="font-family: 宋体">代码再合并到</span>trunk<span style="font-family: 宋体">上时就从</span>tags<span style="font-family: 宋体">的</span>version<span style="font-family: 宋体">到</span>branches<span style="font-family: 宋体">最新的</span>version<span style="font-family: 宋体">合并到</span>trunk<span style="font-family: 宋体">，以保证前期修改的</span>bug<span style="font-family: 宋体">代码不会在合并。</span></p>
<p><span style="font-family: 宋体">至此我们就可以使用</span>svn<span style="font-family: 宋体">来管理我们的代码了。</span></p>
<img src ="http://www.blogjava.net/fullqin/aggbug/219629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fullqin/" target="_blank">fullqin</a> 2008-08-02 22:16 <a href="http://www.blogjava.net/fullqin/archive/2008/08/02/219629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>