<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Svn on 七三的小站</title>
        <link>https://www.bg7pbp.com/tags/svn/</link>
        <description>Recent content in Svn on 七三的小站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>WangYan</copyright>
        <lastBuildDate>Sat, 18 Dec 2010 00:00:00 +0800</lastBuildDate><atom:link href="https://www.bg7pbp.com/tags/svn/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>SVN实现SSL访问认证</title>
        <link>https://www.bg7pbp.com/p/svn-configure-ssl/</link>
        <pubDate>Sat, 18 Dec 2010 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/svn-configure-ssl/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#ssl%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B&#34;&gt;SSL认证流程：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C&#34;&gt;一、准备工作：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E5%AE%9E%E7%8E%B0ssl%E8%BF%87%E7%A8%8B&#34;&gt;二、实现SSL过程：&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#21pache%E4%BB%A5%E6%94%AF%E6%8C%81ssl&#34;&gt;2.1、PACHE以支持SSL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22%E7%94%9F%E6%88%90%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AF%86%E9%92%A5%E5%91%BD%E4%BB%A4&#34;&gt;2.2、生成服务器密钥命令：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#23%E7%94%9F%E6%88%90%E8%AF%81%E4%B9%A6%E8%AF%B7%E6%B1%82&#34;&gt;2.3、生成证书请求&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#24%E7%94%9F%E6%88%90%E5%86%85%E9%83%A8ca%E7%A7%81%E9%92%A5&#34;&gt;2.4、生成内部CA私钥&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#25%E4%B8%BA%E7%BD%91%E7%AB%99%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AD%BE%E7%BD%B2%E8%AF%81%E4%B9%A6&#34;&gt;2.5、为网站服务器签署证书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#26%E7%BB%93%E6%9D%9F%E6%93%8D%E4%BD%9C&#34;&gt;2.6、结束操作&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E7%89%B9%E5%88%AB%E8%AF%B4%E6%98%8E&#34;&gt;三、特别说明：&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSL：安全套接层，是netscape公司设计的主要用于web的安全传输协议。通过基于公开密钥体系的证书认证方式来确保客户端和网站服务器之间的数据安全。要实现SSL，就需要apache的SSL证书并且通过CA认证。 软件版本：Apache_2.2.10-win32-x86-openssl-0.9.8i.msi&lt;/p&gt;
&lt;h2 id=&#34;ssl认证流程&#34;&gt;SSL认证流程：&lt;/h2&gt;
&lt;p&gt;SSL客户端在TCP连接建立之后，发出一个消息给服务器，这个消息里面包含了自己可实现的算法列表和其它一些需要的消息，SSL的服务器端会回应 一个数据包，这里面确定了这次通信所需要的算法，然后发过去自己的证书（里面包含了身份和自己的公钥）。Client在收到这个消息后会生成一个 秘密消息，用SSL服务器的公钥加密后传过去，SSL服务器端用自己的私钥解密后，会话密钥协商成功，双方可以用同一份会话密钥来通信了。 如果对于一般的应用，管理员只需生成&amp;quot;证书请求“（后缀大多为.csr），它包含你的名字和公钥，然后把这份请求交给诸如verisign等有CA服务公 司，你的证书请求经验证后，CA用它的私钥签名，形成正式的证书发还给你。管理员再在web server上导入这个证书就行了。 如果你不想花那笔钱， 或者想了解一下原理，可以自己做CA。从ca的角度讲，你需要CA的私钥和公钥。从想要证书的服务器角度将，需要把服务器的证书请求交给CA. 如果你要自己做CA，别忘了客户端需要导入CA的证书（CA的证书是自签名的，导入它意味着你&amp;quot;信任“这个CA签署的证书）。而商业CA的一般不 用，因为它们已经内置在你的浏览器中了。&lt;/p&gt;
&lt;h2 id=&#34;一准备工作&#34;&gt;一、准备工作：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;将Apache目录下conf目录中的openssl.cnf文件复制到C:\usr\local\ssl\文件夹中&lt;/li&gt;
&lt;li&gt;在Apache到bin目录下新建文件夹demoCA；然后在demoCA文件夹中新建newcerts文件夹。&lt;/li&gt;
&lt;li&gt;在demoCA文件夹中新建文件index.txt，内容为空。新建iserial文件，内容为&amp;quot;01“。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二实现ssl过程&#34;&gt;二、实现SSL过程：&lt;/h2&gt;
&lt;h3 id=&#34;21pache以支持ssl&#34;&gt;2.1、PACHE以支持SSL&lt;/h3&gt;
&lt;p&gt;编辑httpd.conf，查找下面代码，并去掉前面的#&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;22生成服务器密钥命令&#34;&gt;2.2、生成服务器密钥命令：&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;openssl genrsa -out server.key 1024
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明：此命令将生成1024 位的RSA 私钥，得到server.key文件&lt;/p&gt;
&lt;h3 id=&#34;23生成证书请求&#34;&gt;2.3、生成证书请求&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;openssl req -new -key server.key -out server.csr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是用步骤1的密钥生成证书请求文件server.csr, 这一步提很多问题，按要求输入&lt;/p&gt;
&lt;h3 id=&#34;24生成内部ca私钥&#34;&gt;2.4、生成内部CA私钥&lt;/h3&gt;
&lt;p&gt;openssl genrsa -out ca.key 10245.利用CA私钥生成自签署CA证书&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openssl req -new -x509 -days 365 -key ca.key -out ca.crt
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;25为网站服务器签署证书&#34;&gt;2.5、为网站服务器签署证书&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;26结束操作&#34;&gt;2.6、结束操作&lt;/h3&gt;
&lt;p&gt;将&amp;quot;server.crt&amp;quot; server.key 复制到conf文件夹下，并重新启动 APACHE。 在IE中导入CA的证书到可信任区域，否则会报告证书不可信任！&lt;/p&gt;
&lt;h2 id=&#34;三特别说明&#34;&gt;三、特别说明：&lt;/h2&gt;
&lt;p&gt;这些证书制作仅仅供开发使用。真正要通过CNNIC签署，CSR文件格式是有比较严格的要求的。具体可以参考附件文档，为你的网站实现SSL。**备注：**这是一篇旧文章归档，实际发布日期为：2008-10-30&lt;/p&gt;
</description>
        </item>
        <item>
        <title>搭建SVN版本控制环境</title>
        <link>https://www.bg7pbp.com/p/svn-install-windows/</link>
        <pubDate>Fri, 17 Dec 2010 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/svn-install-windows/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80svn%E7%AE%80%E4%BB%8B&#34;&gt;一、SVN简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E5%AE%89%E8%A3%85%E5%89%8D%E5%87%86%E5%A4%87&#34;&gt;二、安装前准备&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#21apache-http-serve&#34;&gt;2.1、Apache HTTP Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22subversionsvn&#34;&gt;2.2、Subversion(SVN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#23tortoisesvn&#34;&gt;2.3、TortoiseSVN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#24languagepack&#34;&gt;2.4、LanguagePack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4&#34;&gt;三、安装步骤&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#31%E5%AE%89%E8%A3%85-apache-http-server&#34;&gt;3.1、安装 Apache HTTP Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#32%E5%AE%89%E8%A3%85-subversion&#34;&gt;3.2、安装 Subversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#33svn%E4%B8%8Eapache%E7%BB%93%E5%90%88&#34;&gt;3.3、SVN与Apache结合&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%9B%9Bsvn%E9%85%8D%E7%BD%AE&#34;&gt;四、SVN配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#41%E8%AE%BE%E5%AE%9Asvn%E6%96%87%E4%BB%B6%E5%BA%93%E8%B7%AF%E5%BE%84&#34;&gt;4.1、设定SVN文件库路径&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#42svnpath-%E8%AF%AD%E6%B3%95&#34;&gt;4.2、SVNPath 语法：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#43svnparentpath%E8%AF%AD%E6%B3%95&#34;&gt;4.3、SVNParentPath语法：&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%94%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&#34;&gt;五、使用方法&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#51%E5%BB%BA%E7%AB%8B%E7%89%88%E6%9C%AC%E5%BA%93repository&#34;&gt;5.1、建立版本库（Repository）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#52%E5%AF%BC%E5%85%A5%E9%A1%B9%E7%9B%AE&#34;&gt;5.2、导入项目&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%85%AD%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6&#34;&gt;六、权限控制&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#61basic%E5%9F%BA%E6%9C%AC%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E7%9A%84%E9%85%8D%E7%BD%AE&#34;&gt;6.1、Basic（基本）访问控制的配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#62%E7%94%A8apache%E7%9A%84htpasswd%E6%8C%87%E4%BB%A4%E7%94%9F%E6%88%90%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81&#34;&gt;6.2、用Apache的htpasswd指令生成用户名和密码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#63%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%BA%93%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E6%96%87%E4%BB%B6&#34;&gt;6.3、配置文件库访问权限文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%83%E7%BB%93%E8%AF%AD&#34;&gt;七、结语&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最近在乱做一些东西，有时会搞错了一些代码，但又无法恢复到以前某个状态，所以就有必要使用SVN进行版本控制了。Subversion 你知道是什么吗？本文将以Windows平台为例，结合自己的经历，说下版本控制环境的搭建和使用。说明：本文将使用Apache+Subversion+TortoiseSVN进行构建。&lt;/p&gt;
&lt;h2 id=&#34;一svn简介&#34;&gt;一、SVN简介&lt;/h2&gt;
&lt;p&gt;Subversion，一种功能强大的开源版本控制工具，其不仅可以管理程序源代码，也可以应用于其他协作管理数据的工作，在服务器端，如将其与Apache 的 HTTP 服务器相结合后，可实现更多的高级管理功能和安全特性，现在Subversion已基本取代 CVS，成为新一代的开源版本控制工具。举例：一个项目共花100天完成，到最后一天时，发现全错了，我想恢复到第50天某个时间的状态。怎么办？你每一天每次改动都有备份？&lt;/p&gt;
&lt;h2 id=&#34;二安装前准备&#34;&gt;二、安装前准备&lt;/h2&gt;
&lt;h3 id=&#34;21apache-http-serve&#34;&gt;2.1、Apache HTTP Serve&lt;/h3&gt;
&lt;p&gt;官方下载地址：&lt;a href=&#34;http://httpd.apache.org&#34;&gt;http://httpd.apache.org&lt;/a&gt;，目前最新版本为Apache 2.2.10，我下载的是 apache_2.2.10-win32-x86-openssl-0.9.8i.msi&lt;/p&gt;
&lt;h3 id=&#34;22subversionsvn&#34;&gt;2.2、Subversion(SVN)&lt;/h3&gt;
&lt;p&gt;官方下载地址：&amp;lt;&amp;ldquo;&lt;a href=&#34;http://subversion.tigris.org/project_packages.html%3E&#34;&gt;http://subversion.tigris.org/project_packages.html&amp;gt;&lt;/a&gt;，最新版本为 Subversion 1.5.4 下载时要注意下载和Apache2.2.x版本对应的，我下载的是 svn-win32-1.5.4.zip（二进制文件），你也可以下载Setup-Subversion-1.5.3.msi（Windows安装文件，一路“下一步”可以省去配置环境变量的麻烦）。&lt;/p&gt;
&lt;h3 id=&#34;23tortoisesvn&#34;&gt;2.3、TortoiseSVN&lt;/h3&gt;
&lt;p&gt;TortoiseSVN是Subversion的Windows客户端，可以看作Windows资源管理器的插件，安装之后Windows就可以识别Subversion的工作目录。简单的说就是Subversion可视化操作工具。官方下载地址：&lt;a href=&#34;http://tortoisesvn.tigris.org/&#34;&gt;http://tortoisesvn.tigris.org/&lt;/a&gt;，我下载的是TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.mis&lt;/p&gt;
&lt;h3 id=&#34;24languagepack&#34;&gt;2.4、LanguagePack&lt;/h3&gt;
&lt;p&gt;TortoiseSVN 中文语言包，需注意到是要和客户端程序版本相同。这里是LanguagePack_1.5.5.14361-win32-zh_CN.msi语言包&lt;/p&gt;
&lt;h2 id=&#34;三安装步骤&#34;&gt;三、安装步骤&lt;/h2&gt;
&lt;h3 id=&#34;31安装-apache-http-server&#34;&gt;3.1、安装 Apache HTTP Server&lt;/h3&gt;
&lt;p&gt;安装非常简单，不明白可以参考本站文章。要注意的是，电脑如果已经安装了IIS，要么暂停IIS服务，要么把IIS的端口改为非80端口。&lt;/p&gt;
&lt;h3 id=&#34;32安装-subversion&#34;&gt;3.2、安装 Subversion&lt;/h3&gt;
&lt;p&gt;如果你前面下载的是Windows安装文件，那么你一路下一步就好了。如果你下载的是zip压缩包，那么请将压缩包解压，比如我解压到C:\Program Files\Subversion。那么在“系统属性“-&amp;ldquo;高级“-&amp;ldquo;环境变量“-&amp;ldquo;系统变量PACH“的值后面加上;C:\Program Files\Subversion\bin就行了。&lt;/p&gt;
&lt;h3 id=&#34;33svn与apache结合&#34;&gt;3.3、SVN与Apache结合&lt;/h3&gt;
&lt;p&gt;首先将Subversion安装目录bin下面的两个文件：mod_authz_svn.so和mod_dav_svn.so复制到Apache安装目录modules目录下，然后将Subversion安装目录bin下面的libdb44.dll复制到Apache安装目录bin目录下 。&lt;/p&gt;
&lt;p&gt;在httpd.conf中查找下面2行代码，并将其前面的&amp;rdquo;#“号去掉&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;在所有LoadModule后面添加下面代码，重启Apache后状态栏变成Apache/2.2.10 SVN1.4.6 DAV/2&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;四svn配置&#34;&gt;四、SVN配置&lt;/h3&gt;
&lt;h3 id=&#34;41设定svn文件库路径&#34;&gt;4.1、设定SVN文件库路径&lt;/h3&gt;
&lt;p&gt;要设定 URL 路径与文件库实际路径的对应关系。对应的方式有两种，分别是 SVNPath(适合指定单个文件库的路径) 与SVNParentPath(多个文件库的路径)。完成后，将代码加入httpd.conf中。&lt;/p&gt;
&lt;h3 id=&#34;42svnpath-语法&#34;&gt;4.2、SVNPath 语法：&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;Location /svn/poject&amp;gt;
DAV svn
SVNPath d:/svn/poject
&amp;lt;/Location&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;其中 &amp;ldquo;/svn/poject&amp;rdquo; 就是用户端存取特定文件库的 URI，SVNPath 后面指定的路径则是文件库的绝对路径。注意 Location 标签后面的 /svn/poject的第一个斜线不可少！&lt;/p&gt;
&lt;h3 id=&#34;43svnparentpath语法&#34;&gt;4.3、SVNParentPath语法：&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;Location /svn&amp;gt;
DAV svn
SVNParentPath d:/svn
&amp;lt;/Location&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;这表示可以让任何人都可以透过 &lt;a href=&#34;http://myserver/svn/&#34;&gt;http://myserver/svn/&lt;/a&gt; &amp;lt;文件库名称&amp;gt; 的方式，存取位于 d:/svn这个目录以下的所有文件库。也就是说，这个设定动作只需要一次，如果使用 SVNPath，那么你必须为各个文件库分别指定对应的路径。&lt;/p&gt;
&lt;h2 id=&#34;五使用方法&#34;&gt;五、使用方法&lt;/h2&gt;
&lt;h3 id=&#34;51建立版本库repository&#34;&gt;5.1、建立版本库（Repository）&lt;/h3&gt;
&lt;p&gt;方法一.在提示符窗口中输入svnadmin create D:\svn\poject，路径填你喜欢的就可以了。&lt;/p&gt;
&lt;p&gt;方法二.使用TortoiseSVN图形化完成这一步，在目录D:\svn\poject下右键-&amp;gt;TortoiseSVN-&amp;gt;Create Repository here&amp;hellip;， 然后可以选择版本库模式， 这里使用默认即可， 然后就自动创建了一系列目录和文件。&lt;/p&gt;
&lt;h3 id=&#34;52导入项目&#34;&gt;5.2、导入项目&lt;/h3&gt;
&lt;p&gt;5.2.1、使用命令行操作，在命令行中CD到项目文件夹下后，执行下面命令，其中M后面的是项目信息，可以任意填写。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;svn import &amp;#34;http://localhost/svn/poject&amp;#34; -m &amp;#34;Initial repository layout&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;5.2.2、使用TortoiseSVN图形化&lt;/p&gt;
&lt;p&gt;右键-&amp;gt;TortoiseSVN-&amp;gt;Import&amp;hellip;
URL of repository输入&amp;quot;http://localhost/svn/poject&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;六权限控制&#34;&gt;六、权限控制&lt;/h2&gt;
&lt;p&gt;Sebversion 提供了多种验证使用者身份的方式。&lt;/p&gt;
&lt;h3 id=&#34;61basic基本访问控制的配置&#34;&gt;6.1、Basic（基本）访问控制的配置&lt;/h3&gt;
&lt;p&gt;修改 httpd.conf 的 &lt;Location&gt; ，设定如下：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;Location /svn&amp;gt;
DAV svn
# 指定多个版本库路径
SVNParentPath d:\svn 
# 认证的名称,显示于登录提示框
AuthName &amp;#34;欢迎登录&amp;#34;
# 策略文件，指定用户或组在版本库中目录的访问权限
AuthzSVNAccessFile &amp;#34;d:\svn\authz&amp;#34;
# 表示只有经过认证的用户才可以访问
Require valid-user
#表示允许匿名访问
Satisfy Any
# 认证的类型，即使用基本验证
AuthType Basic
# 存储用户登录信息的文件
AuthUserFile &amp;#34;d:\svn\passwd&amp;#34;
&amp;lt;/Location&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;62用apache的htpasswd指令生成用户名和密码&#34;&gt;6.2、用Apache的htpasswd指令生成用户名和密码&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;htpasswd -c d:\svn\passwd username&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;-c 的作用是创建用户文件passwordfile 下次就不用-c参数，而是用-m参数，因为文件passwordfile已经创建。
username是用户名&lt;br /&gt;htpasswd -m d:/svn/passwd username&lt;/p&gt;
&lt;h3 id=&#34;63配置文件库访问权限文件&#34;&gt;6.3、配置文件库访问权限文件&lt;/h3&gt;
&lt;p&gt;假设为projectA和projectB都建立了相应的版本库，可以在d:\svn\authz文件中&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[projectA:/]
username1 = rw
[projectA:/]
username2 = r

[projectA:/trunk]
username1 =

[projectB:/]
* = r
[projectB:/trunk]
username1 =&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;另外，你还可以在d:\svn\authz中定义一组用户，然后按组进行权限配置#各组成员名单&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[groups]
groups1 = username1
groups2 = username2

#所以文件库都可以匿名访问,但只有groups1组用户有读写权限
[/] 
* = r
@groups1 = rw

#在文件库projectA下groups2组的用户也有读写权限
[/projectA] 
groups2 = rw

#禁止所有用户访问/private文件库
[/private] 
* =&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;七结语&#34;&gt;七、结语&lt;/h2&gt;
&lt;p&gt;上文只是简单讲解SVN的搭建和使用，属个人技术札记。事实上，普通用户是完全可以使用现有的SVN源代码托管服务，比如国内的 &lt;a href=&#34;http://svn.w18.net&#34;&gt;http://svn.w18.net&lt;/a&gt; 和 &lt;a href=&#34;http://www.svnhost.cn/&#34;&gt;http://www.svnhost.cn/&lt;/a&gt; ，还有更专业的 &lt;a href=&#34;http://code.google.com/&#34;&gt;http://code.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;备注：&lt;/strong&gt;这是一篇旧文章归档，实际发布日期为：2008-10-25&lt;/p&gt;</description>
        </item>
        
    </channel>
</rss>
