使用Subversion、Apache和WebSVN查看存储库

WebSVN是一个基于php的客户端吗Apache,给你一个网页浏览器的视图颠覆存储库。通过正确设置WebSVN安装,您可以看到一个易于导航的视图,其中显示了在任何给定的修订中所做的工作,检查谁对其负责,并比较一个文件的两个版本。将WebSVN与Apache DAV Subversion模块结合使用,您也可以通过HTTP签出存储库。

在设置WebSVN时,我假设您已经安装了一个功能正常的Apache2。我们将看看在Debian/Ubuntu和CentOS上的安装。您也可以在其他linux、Windows和Windows上设置WebSVNMac OS X

在查看WebSVN之前,您需要设置Apache和Subversion,以便能够通过HTTP访问Subversion存储库。使用适当的命令安装必要的软件;在CentOS

Sudo yum安装subversion mod_dav_svn

在Debian或Ubuntu上使用

Sudo apt-get安装subversion libapache2-svn

在CentOS上,你需要在Apache配置中添加以下几行来加载dav_svn模块(Debian在安装时就会这样做):

/ mod_dav_svn LoadModule dav_svn_module模块。LoadModule authz_svn_module modules/mod_authz_svn.so

在这两个发行版中,您还需要配置模块。将以下几行添加到你的Apache配置中(在Debian/Ubuntu上,检查/etc/apache2/mods-enabled/dav_svn.conf获取提示):

 DAV svn SVNPath /var/lib/web_svn  . txt

注意,当您第一次设置这个存储库时,任何人都可以对其进行读写访问。我们稍后将讨论通过身份验证提供更好的安全性。

现在,设置一个SVN存储库并赋予它正确的权限,以便Apache能够访问它:

svnadmin create /var/lib/svnrepo sudo chown -R www-data:www-data /var/lib/svnrepo sudo chmod -R 700 /var/lib/svnrepo

重新启动Apache,并在http://localhost/svnrepo上查看(当前为空的)存储库。这是一个非常基本的Subversion + Apache设置;我们希望在此基础上使用WebSVN来获得更有用的存储库视图。安装WebSVN,加上enscript,这是一个将文本输入转换为各种输出格式的包,在这里,它是对文本的美化打印。在CentOS,运行:

Sudo yum安装websvn enscript

在Debian和Ubuntu上,它是

Sudo apt-get安装websvn脚本

在Debian上,包安装应该配置Apache2支持并设置对指定存储库的访问(在我们的例子中是http://localhost/svnrepo)。要手动编辑设置和在CentOS上进行设置,请进入/etc/websvn可以直接编辑/etc/websvn/config.php,或者如果你喜欢,把你的设置放在svn_my_conf中。然后在/etc/websvn/config.php中添加这一行:

包括(“/ etc / websvn / svn_my_conf.inc”)

配置应该是这样的:

<?php $config->addRepository("my repos", "file:///var/lib/svnrepo");配置- > setEnscriptPath(“/ usr / bin”);配置- > setSedPath (/ bin);配置- > useEnscript ();?>

您还需要设置locwebsvnhttp美元locwebsvnreal美元php中的变量,并确保所提供的Apache配置被包含或复制到主Apache配置文件中。

在浏览器中启动http://localhost/websvn(默认WebSVN位置);您应该看到(仍然是空的)存储库。

通过HTTP进行Subversion检出

您可能希望能够签出并将内容提交到存储库。WebSVN允许您查看和浏览它,但不能直接访问它。你可以像往常一样通过文件:///和命令行来完成,如果你的用户对目录有正确的权限,或者,现在dav_svn Apache模型已经建立,你可以通过HTTP来完成。创建一个my_svn目录,并将存储库签入其中:

Mkdir my_svn CD my_svn SVN co http://localhost/svnrepo/ . txt文件格式

注意,存储库的地址是用Apache设置的,WebSVN快捷方式。这些命令的另一种替代方法是使用SVN co http://localhost/svnrepo/。(注意final .)将内容直接检出到当前目录。创建并添加一个文件(触摸file1;svn添加file1;svn commit),然后回到http://localhost/websvn的WebSVN视图,查看那里的新文件。

身份验证

在当前的设置下,如果您转到“blame”视图,就没有用户可以责怪,因为您还没有确定自己的身份。不仅如此,目前任何人都可以匿名地写入您的存储库,这可能不是您想要的(尽管您可能希望任何人这样做)从或匿名访问您的存储库)。为了获得一些基本的身份验证,将以下几行添加到Apache配置的部分:

AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/apache2/dav_svn.passwd  Require valid-user  . passwd 

这将设置基本身份验证(为此必须启用auth_basic、authn_file和authz_users Apache模块;它们通常是默认的)。通过这种设置,任何人都可以匿名读取存储库(因此可以签出它,这意味着WebSVN不需要身份验证),但是提交者必须身份验证。(不过请记住,除非使用HTTPS,否则基本身份验证并不安全。)添加一个测试用户来进行测试:

Sudo htpasswd -cm /etc/apache2/dav_svn.passwd svnuser

现在,您仍然可以在不进行身份验证的情况下签出存储库,但是当您尝试提交时,应该会遇到输入密码的问题。你可以在命令行中设置svnuser的用户名:

SVN——username svnuser提交

但是,请注意这一点Subversion中关于组权限的已知错误.这意味着,虽然你的提交将成功(并通过WebDAV可见),但你必须进入并手动更改存储库中的权限:

Sudo chmod g+w /var/lib/web_svn . txt文件

当然,您可以使用其他形式的身份验证(如LDAP)来验证您的用户,就像使用任何其他Apache目录一样。此页包含LDAP访问存储库的示例

细粒度访问和多个存储库

上面描述的身份验证非常广泛——给定的用户可以或不能访问存储库。如果想要更细粒度的访问控制,可以使用mod_authz_svn。要了解这是如何工作的,首先要创建多个存储库:

Mkdir /var/lib/svnparent svnadmin create /var/lib/svnparent/repo1 svnadmin create /var/lib/svnparent/repo2 . Mkdir

要通过Apache访问这些存储库,编辑dav_svn.conf,注释掉SVNPath并添加SVNParentPath:

SVNPath /var/lib/svnrepo SVNParentPath /var/lib/svnparent . #SVNPath /var/lib/svnparent . #

这样就可以访问父目录中的任何存储库。你还需要编辑/etc/websvn/svn_deb_conf.inc:

配置- > parentPath (" / var / lib / svnparent ");

重新启动Apache并查看http://localhost/websvn以查看您的两个新存储库和原始存储库。

要为不同的存储库设置不同的访问保护,需要加载并配置mod_authz_svn模块。在Debian/Ubuntu上,它应该被启用mods的/dav_svn.load自动加载。然后你可以在mods-enabled/dav_svn.conf中编辑相关部分:

AuthzSVNAccessFile /etc/apache2/dav_svn.authz

现在编辑/etc/apache2/dav_svn.Authz设置您的用户:

[repo1:/] * = r @test-group = rw [repo1:/] @test-group = rw [repo1:/] @test-group = rw

这些设置是每个存储库的,但是您也可以指定存储库中的路径,并进一步限制对这些路径的访问。要测试它,将user1到user6添加到dav_svn中。Passwd文件,并尝试作为不同的用户检出和提交,以确保所有工作正常。

Apache、Subversion和WebSVN巧妙地结合在一起,允许您查看存储库、比较文件、检查它们并对它们进行处理,然后查看谁做了什么以及为什么做了什么。您可以在浏览器中以易于理解的方式查看用户、日志消息和文件差异,然后将存储库检出,以便在本地处理它。您还可以根据自己的喜好设置粗粒度控制或细粒度控制,甚至将身份验证与现有的身份验证设置挂钩。最后一个整洁WebSVN建议是,您可以使用RSS按钮的末尾提供了每个文件显示行或顶部的存储库清单对整个存储库来生成RSS提要的变化存储库,可以方便的让你不断地了解发生了什么!

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对自己最关心的话题发表评论。

版权©2012Raybet2

工资调查:结果在