<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java堂 &#187; subversion</title>
	<atom:link href="http://www.javatang.com/archives/tag/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javatang.com</link>
	<description>Java Tang</description>
	<lastBuildDate>Thu, 08 Dec 2011 08:29:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Subversion和Apache的安装使用指南</title>
		<link>http://www.javatang.com/archives/2009/12/31/2139330.html</link>
		<comments>http://www.javatang.com/archives/2009/12/31/2139330.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 05:21:39 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=330</guid>
		<description><![CDATA[虽然Subversion(SVN)直接可以注册为服务程序，但是最方便的还是使用SVN+Apache的方式，因为可以无防火墙限制、方便直接使用浏览器对代码进行浏览等等。下面我就将自己在Windows下安装Subversion(SVN)和Apache的方法记录一下： 1. 从Apache网站上下载Apache的安装包进行安装，这个过程比较简单。需要注意Apache的版本，本文采用2.2，当然也可以使用2.0版本。假定Apache的安装目录为D:\apache2。 2. 在http://subversion.tigris.org/官方下载Subversion的Windows下面与Apache的配合版本，这里需要注意Apache的版本，2.0和2.2的是不一样的，不要下载错了。 然后将下载下来的zip包解压缩到一个目录，比如D:\svn-win32-1.6.6。 3. 将svn安装目录的bin目录下面的mod_authz_svn.so和mod_dav_svn.so两个文件拷贝到Apache安装目录的modules目录下面，然后修改Apache的配置文件httpd.conf，将下面两行的注释去掉： LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_module modules/mod_dav.so 同时在下面增加两行： LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 4. 接下来就是对SVN进行配置了，配置文件(包含每条的含义)如下： # 表示访问SVN的地址，形式为http:///svn &#60;Location /svn&#62; # 告诉Apache哪个模块负责服务像那样的URL－－在这里就是Subversion模块 DAV svn # 在Subversion 1.3及更高版本中，这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库 SVNListParentPath on # 下面制定SVN仓库的位置，有两种选择： # (1) 单库：一个Apache下面只有一个SVN仓库，这样的话就使用SVNPath来指定唯一的仓库位置，访问仓库的方式是http:///svn # (2) 多库：一个Apache下面可以有多个SVN仓库，这样的话就使用SVNParentPath来指定所有仓库所在的主目录，访问仓库的方式是http:///svn/仓库1、http:///svn/仓库2等等 SVNPath “D:\Data\SVNData\repository” #SVNParentPath “D:\Data\SVNData\repository” # 当一个验证对话框弹出时，告诉用户这个验证是用来做什么的 AuthName “Subversion repositories” # 启用基本的验证，比如用户名/密码对，通常来做这样做就已经足够了。 [...]]]></description>
			<content:encoded><![CDATA[<p>虽然Subversion(SVN)直接可以注册为服务程序，但是最方便的还是使用SVN+Apache的方式，因为可以无防火墙限制、方便直接使用浏览器对代码进行浏览等等。下面我就将自己在Windows下安装Subversion(SVN)和Apache的方法记录一下：</p>
<p>1. 从Apache网站上下载Apache的安装包进行安装，这个过程比较简单。需要注意Apache的版本，本文采用2.2，当然也可以使用2.0版本。假定Apache的安装目录为D:\apache2。</p>
<p>2. 在<a href="http://subversion.tigris.org/getting.html#windows" target="_blank">http://subversion.tigris.org/</a>官方下载Subversion的Windows下面与Apache的配合版本，这里需要注意Apache的版本，2.0和2.2的是不一样的，不要下载错了。<br />
<img src="http://www.javatang.com/wp-content/Tigris.org_svn.png" alt="" title="Tigris.org_svn"  class="alignnone size-medium wp-image-332" /><br />
然后将下载下来的zip包解压缩到一个目录，比如D:\svn-win32-1.6.6。</p>
<p>3. 将svn安装目录的bin目录下面的mod_authz_svn.so和mod_dav_svn.so两个文件拷贝到Apache安装目录的modules目录下面，然后修改Apache的配置文件httpd.conf，将下面两行的注释去掉：</p>
<blockquote><p>
LoadModule dav_fs_module modules/mod_dav_fs.so<br />
LoadModule dav_module modules/mod_dav.so
</p></blockquote>
<p>同时在下面增加两行：</p>
<blockquote><p>
LoadModule dav_svn_module modules/mod_dav_svn.so<br />
LoadModule authz_svn_module modules/mod_authz_svn.so
</p></blockquote>
<p>4. 接下来就是对SVN进行配置了，配置文件(包含每条的含义)如下：</p>
<blockquote><p>
# 表示访问SVN的地址，形式为http://<your_domain>/svn<br />
&lt;Location /svn&gt;<br />
    # 告诉Apache哪个模块负责服务像那样的URL－－在这里就是Subversion模块<br />
    DAV svn<br />
    # 在Subversion 1.3及更高版本中，这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库<br />
    SVNListParentPath on<br />
    # 下面制定SVN仓库的位置，有两种选择：<br />
   # (1) 单库：一个Apache下面只有一个SVN仓库，这样的话就使用SVNPath来指定唯一的仓库位置，访问仓库的方式是http://<your_domain>/svn<br />
   # (2) 多库：一个Apache下面可以有多个SVN仓库，这样的话就使用SVNParentPath来指定所有仓库所在的主目录，访问仓库的方式是http://<your_domain>/svn/仓库1、http://<your_domain>/svn/仓库2等等<br />
    SVNPath “D:\Data\SVNData\repository”<br />
    #SVNParentPath “D:\Data\SVNData\repository”</p>
<p>    # 当一个验证对话框弹出时，告诉用户这个验证是用来做什么的<br />
    AuthName “Subversion repositories”<br />
    # 启用基本的验证，比如用户名/密码对，通常来做这样做就已经足够了。<br />
    AuthType Basic<br />
    # 指定密码文件的位置，密码文件中存放了用来验证用户的用户名和密码信息。这个文件的生成方式在后续步骤中会介绍<br />
    AuthUserFile “D:\Data\SVNData\config\passwd”<br />
    # 对版本库和人员进行权限分配，后面会进行详细的设置和介绍。<br />
    AuthzSVNAccessFile “D:\Data\SVNData\config\svnaccessfile”</p>
<p>    # 限定用户只有输入正确的用户名及密码后才能访问这个路径<br />
    Require valid-user<br />
    # 如果想匿名读取的话使用下面的方式<br />
    #&lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;<br />
    #Require valid-user<br />
    #&lt;/LimitExcept&gt;<br />
&lt;/Location&gt;
</p></blockquote>
<p>5. 接下来使用Apache中的htpasswd.exe命令来生成密码文件，也就是上面AuthUserFile 设置项所指向的文件，切换到Apache安装目录的bin目录下，指向下面的命令：</p>
<blockquote><p>
# 后面的参数c表示新建文件，在第一次执行的时候使用<br />
htpasswd -c D:\Data\SVNData\config\passwd &lt;username&gt;<br />
# 如果是追加新用户或修改原有用户密码，命令后面不加参数c<br />
htpasswd D:\Data\SVNData\config\passwd &lt;username&gt;
</p></blockquote>
<p>每次执行命令之后会提示输入两遍密码</p>
<p>6. 这个时候如果重启Apache的话会出现一个错误提示，这个是因为svn所使用的一些dll文件apache还无法获取，解决的方法可以将svn安装目录的bin目录下面的dll文件拷贝到系统的system32目录下面，但最好的方式是将bin目录加入到path环境变量中。</p>
<p>7. 这个时候如果访问http://<your_domain>/svn的话，应该会出现一个登录框，输入用户名/密码之后就可以看到SVN仓库的内容了。不过常见下面的几个错误：<br />
(1) 出现“403 Forbidden”错误<br />
出现这个错误的原因有很多种，比如Apache2.2相对于之前的版本来说增强了安全性，默认情况下目录是禁止访问的，将“&lt;Directory /&gt;”修改如下：</p>
<blockquote><p>
&lt;Directory /&gt;<br />
    Options FollowSymLinks<br />
    AllowOverride None<br />
    Order deny,allow<br />
    Allow from all<br />
&lt;/Directory&gt;
</p></blockquote>
<p>如果这样还不行的话那就是“多库还是单库”的问题了。上面讲过，在对SVN进行配置的时候，使用SVNParentPath设置所有库的根目录，在根目录下面存放多个SVN的库，那这样的话直接访问父目录是没有权限的，只能通过http://<your_domain>/svn/project1来访问对应的项目仓库；如果使用SVNPath设置为单库的话则不会出现这个错误了。</p>
<p>(2) 出现“&lt;m:human-readable errcode=”720003&#8243;&gt;Could not open the requested SVN filesystem&lt;/m:human-readable&gt;”错误<br />
出现这个错误是告诉你你所指定的SVN仓库的位置并不是一个合法的SVN仓库，解决的方法是首先创建一个空目录，然后使用“svnadmin create”命令来创建SVN库：</p>
<blockquote><p>
# 首先进入 D:\Data\SVNData\repository 目录下<br />
md project1<br />
svnadmin create D:\Data\SVNData\repository\project1
</p></blockquote>
<p>8. 最后安装SVN客户端就可以访问啦，Eclipse集成的客户端推荐使用<a href="http://subclipse.tigris.org/" target="_blank">Subclipse</a>，Visual Studio集成的客户端推荐使用<a href="http://ankhsvn.open.collab.net/" target="_blank">ankhsvn</a>，系统集成的客户端推荐使用<a href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a>。</p>
<p>参考资料：<br />
<a href="http://bbs.iusesvn.com/thread-158-1-1.html" target="_blank">[翻译] windows安装基于Apache的SVN服务器(包括SSL配置)</a><br />
<a href="http://www.iusesvn.com/bbs/thread-157-1-1.html" target="_blank">基于svnserve的服务器，权限文件authz配置的常见问题及解答</a><br />
<a href="http://www.svnforum.org/2017/viewtopic.php?p=876" target="_blank">Forbidden access or bad repository ?</a><br />
<a href="http://alexclark.itpub.net/post/670/5647" target="_blank">Subversion for Windows 安裝指南</a> </p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/03/30/1025157.html" rel="bookmark" class="crp_title">Windows下安装zip包版本的MySQL</a></li><li><a href="http://www.javatang.com/archives/2010/07/11/4201420.html" rel="bookmark" class="crp_title">彻底修改Google Chrome浏览器的安装目录</a></li><li><a href="http://www.javatang.com/archives/2008/02/19/0801260.html" rel="bookmark" class="crp_title">Windows NT系统下的Apache性能优化</a></li><li><a href="http://www.javatang.com/archives/2010/12/01/2805477.html" rel="bookmark" class="crp_title">Apache2.x中设置gzip</a></li><li><a href="http://www.javatang.com/archives/2010/11/23/5817513.html" rel="bookmark" class="crp_title">Spring MVC中修改校验的异常信息</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2009/12/31/2139330.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.javatang.com @ 2012-02-10 07:58:37 -->
