在Debian上设置Subversion和websvn
这个howto的目的
本文将说明一种在Debian服务器上安装和配置Subversion和websvn的方法,具有以下功能:
- 多个存储库Subversion
- 通过WebDAV(http,https)和ssh访问存储库
- Linux系统帐户访问控制和/或Apache级访问控制
- 一个安全的webvn (php web应用程序,便于代码浏览)
- 在webvn中使用gnu enscript配置语法着色
inetd
与
svnserve
。请放心,如果没有它,Subversion将完全运行。你可以复制/粘贴大部分的howto来使其工作。
假定已安装的软件包
这个方法假设安装和配置了PHP和apache2。 使用SSL配置apache2是可选的。
设置Subversion
Subversion包
作为root用户,您可以输入以下命令来安装Subversion安装所需的软件包:
# apt-get update
# apt-get install subversion
# apt-get install libapache2-svn
软件包libapache2-svn将安装subversion WebDAV apache模块。
创建和填充存储库
要使用这个方法,我们将创建两个回录:
# mkdir /var/svn-repos/
# svnadmin create --fs-type fsfs /var/svn-repos/project_zen
# svnadmin create --fs-type fsfs /var/svn-repos/project_wombat
存储库目录需要适当的apache和其他用户的权限。 我会组成一个组,并添加用户(不要只是在这里复制/粘贴) 。 apache用户不会被放在组中,因为我发现它不太安全。
# groupadd subversion
# addgroup john subversion
# addgroup bert subversion
# addgroup you subversion
...
# chown -R www-data:subversion /var/svn-repos/*
# chmod -R 770 /var/svn-repos/*
让我们设置简单的ssh连接,在用户机上输入以下命令:
$ mkdir ~/.ssh/
$ cd ~/.ssh/
$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub | ssh you@example.com "cat - >> ~/.ssh/authorized_keys"
服务器example.com是我们安装Subversion的服务器。 为了方便ssh使用,您可以选择不使用密钥或使用代理进行身份验证。 否则用户机器和Subversion之间的每个事务都将要求用户输入密码(非常不方便)。 使用代理可以这样做:
$ ssh-agent
$ ssh-add
$ ssh you@example.com
现在应该设置全部使用存储库。 您可以像这样测试,它显示导入和结帐:
$ mkdir ~/TEMP/
$ echo "testing svn" > ~/TEMP/testing.txt
$ svn import -m "importing test over ssh+svn" ~/TEMP/ svn+ssh://example.com/var/svn-repos/project_zen/trunk
$ svn co svn+ssh://example.com/var/svn-repos/project_zen/trunk testcheckout
因此,test.txt文件应该在一个名为testcheckout的目录中 。 在服务器端,您可以使用svnlook检查存储库。
# svnlook tree /var/svn-repos/project_zen/
配置Subversion WebDAV
通常apache mod将默认启用,以确保这是真的输入以下命令:
# a2enmod dav
# a2enmod dav_svn
配置在文件/etc/apache2/mods-available/dav_svn.conf中完成,但首先我们将创建一个访问文件。
# htpasswd2 -c /etc/apache2/dav_svn.passwd you
# htpasswd2 /etc/apache2/dav_svn.passwd john
# htpasswd2 /etc/apache2/dav_svn.passwd sten
...
这是我的/etc/apache2/mods-available/dav_svn.conf
文件的内容:
<Location /svn_zen>
DAV svn
SVNPath /var/svn-repos/project_zen
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>
<Location /svn_wombat>
DAV svn
SVNPath /var/svn-repos/project_wombat
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>
如果您不想使用SSL,则可以取消对SSLRequireSSL文件的注释 ,但是后续命令中需要使用http而不是https 。 Apache应该重新启动,我们可以从用户机器进行测试。 我们将在wombat项目中导入相同的测试文件。
# /etc/init.s/apache2 restart
$ svn import -m "testing over https" https://example.com/svn_wombat ~/TEMP/
使用Web浏览器,您可以访问您的URL https://example.com/svn_wombat ,并查看刚刚提交的内容。 这是存储库中的基本在线视图,但是使用像webvn这样的Web字体末端将提供更好的存储库浏览体验。
设置websvn
所需包
要使用websvn滚动,我们需要安装以下软件包,它们都将显示配置屏幕(在下一段中说明):
# apt-get install enscript
# apt-get install websvn
Enscript不是强制性的,但是我们需要它在websvn中进行语法着色。
组态
Enscript将要求纸张大小,这可能看起来很尴尬,但这是因为enscript也用于将ASCII文件转换为PostScript。 我们需要它的语法着色功能。
Websvn将首先询问要配置哪种服务器,然后按Enter键。
/etc/websvn/svn_deb_conf.inc
将被写入。您可以使用
dpkg-reconfigure
重新运行debian软件包配置屏幕。进一步的webvn配置在文件
/etc/websvn/config.inc
中完成。这是我的文件的内容与语法着色的一些扩展映射。
<?php
// --- LOOK AND FEEL ---
//
// Uncomment ONLY the display file that you want.
$config->setTemplatePath("$locwebsvnreal/templates/Standard/");
// $config->setTemplatePath("$locwebsvnreal/templates/BlueGrey/");
// $config->setTemplatePath("$locwebsvnreal/templates/Zinn/");
// $contentType[".c"] = "plain/text"; // Create a new association
// $contentType[".doc"] = "plain/text"; // Modify an existing one
unset($contentType[".sh"]); // Remove a default association -> .sh is regarded as a binary file by default, needs to be unset
// --- COLOURISATION ---
// Uncomment this line if you want to use Enscript to colourise your file listings
//
// You'll need Enscript version 1.6 or higher AND Sed installed to use this feature.
// Set the path above.
//
$config->useEnscript();
// Enscript need to be told what the contents of a file are so that it can be colourised
// correctly. WebSVN includes a predefined list of mappings from file extension to Enscript
// file type (viewable in setup.inc).
//
// Here you should add and other extensions not already listed or redefine the default ones. eg:
//
// php is default correctly colourized
$extEnscript[".java"] = "java";
$extEnscript[".pl"] = "perl";
$extEnscript[".py"] = "python";
$extEnscript[".sql"] = "sql";
$extEnscript[".java"] = "java";
$extEnscript[".html"] = "html";
$extEnscript[".xml"] = "html";
$extEnscript[".thtml"] = "html";
$extEnscript[".tpl"] = "html";
$extEnscript[".sh"] = "bash";
// --- MISCELLANOUS ---
// Uncomment this if you don't have the right to use it. Be warned that you may need it however!
set_time_limit(0);
// Comment this line to turn off caching of repo information. This will slow down your browsing.
$config->setCachingOn();
// Number of spaces to expand tabs to in diff/listing view across all repositories
$config->expandTabsBy(8);
// To change the global option for individual repositories, uncomment and replicate
// the required line below (replacing 'myrep' for the name of the repository to be changed).
// $config->findRepository("myrep")->expandTabsBy(3); // Expand Tabs by 3 for repository 'myrep'
?>
<?php
if ( file_exists("/etc/websvn/svn_deb_conf.inc") ) {
include("/etc/websvn/svn_deb_conf.inc");
}
?>
接下来是为websvn配置apache virtualhost。
使用SSL的示例:
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName svn.example.com
DocumentRoot /var/www/websvn/
<Location />
Options FollowSymLinks
order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
Require valid-user
AuthUserFile /etc/apache2/dav_svn.passwd
<IfModule mod_php4.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
</IfModule>
</Location>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>
没有SSL的示例:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName svn.example.com
DocumentRoot /var/www/websvn/
<Location />
Options FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
Require valid-user
AuthUserFile /etc/apache2/dav_svn.passwd
<IfModule mod_php4.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
</IfModule>
</Location>
</VirtualHost>
重新启动apache,并在https://svn.example.com/上查看结果。
有用的Subversion引用
获取更多信息
- 官方颠覆网站
- 版本控制与Subversion ,免费在线书
- 网站
Subversion客户端
- Subclipse
- RapidSVN
- kdesvn
- Zigversion (Mac OS X)
- Quicksilver插件 (Mac OS X)
- svnX (Mac OS X)
- TortoiseSVN (Windows)
我希望你找到这个有用的东西。 这不是一个完美的设置,但希望它可以帮助您使用Subversion。 请随意添加评论或更正。