簡體   English   中英

如何以編程方式“即時”設置 SVN 存儲庫?

[英]How can I set up an SVN repository “on the fly” programmatically?

我正在設置一個系統(基於 PHP),它可以讓用戶立即配置 SVN 環境以供使用。 這是一個內部項目,因此用戶將主要是內部用戶。

我什至不知道從哪里開始。 是否有用於 PHP 的 SVN 綁定,還是我必須使用svn控制台命令?

這是一種可能性。 您將在這里執行幾個步驟。 首先,您需要在 PHP 操作腳本中創建 svn 存儲庫,可能類似於:

$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)。 希望這能讓你開始。

讓它執行svnadmin create reponame來創建 repo。 我認為沒有任何庫可以解決這個問題,因為您通常只能找到客戶端 SVN 庫。

只是提出“配置” Git 存儲庫的建議要簡單得多。 而且由於客戶端和服務器之間沒有區別,因此您通過 git 庫( http://code.google.com/p/git-php/ )等進行處理非常簡單。 當然,您可能只想要 SVN 存儲庫,但如果您有選擇,go 用於 git。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM