如何以编程方式“动态”设置SVN存储库?

时间:2011-05-27 18:28:45

标签: php svn

我正在建立一个系统(基于PHP),允许用户立即配置SVN环境以供使用。这是一个内部项目,因此用户主要是内部用户。

我没有最模糊的想法,甚至从哪里开始。是否有PHP的SVN绑定,或者我将不得不使用svn控制台命令?

2 个答案:

答案 0 :(得分:3)

这是一种可能性。你在这里有几个步骤。首先,您需要在PHP动作脚本中创建svn repo,可能类似于:

$name = $_REQUEST['name'];
// gonna need some sanity checking on $name here. no '..', no '/'s, etc
$cmd = 'svnadmin create ' . escapeshellarg('/var/svn/' . $name) . ' --fs-type fsfs';
exec('sudo ' . $cmd, $output, $exitValue);
if ($exitValue != 0) {
    // put the error message on the session, redirect out
}
$cmd = 'chown -R apache:apache ' . escapeshellarg('/var/svn/' . $name);
exec('sudo ' . $cmd, $output, $exitValue);
// error handling again

您需要设置sudo以允许您的Web服务器运行该svnadmin命令。然后你需要在/etc/httpd/conf.d中输入一个新的apache .conf片段:

<Location /$name>
   DAV svn
   SVNPath /var/svn/newproj
   #AuthType Basic
   #AuthName "SVN Repository"
   #AuthUserFile /var/svn/${name}.passwd
   #Require valid-user
</Location>

并重启Apache。也许为安全性创建newproj htpasswd文件。请务必检查并清理所有传递的表单值($ _REQUEST)。希望这能让你开始。

答案 1 :(得分:0)

让它执行svnadmin create reponame来创建回购。我认为没有任何库可用,因为您通常只能找到客户端SVN库。

只是提出建议“配置”Git repos要简单得多。由于客户端和服务器之间没有区别,因此通过git库(http://code.google.com/p/git-php/)等进行处理非常简单。当然你可能只想要SVN回购,但是如果你有选择,那就去找git。