2011-05-27 46 views
4

我正在建立一個系統(基於PHP),可讓用戶即時提供SVN環境供使用。這是一個內部項目,所以用戶主要是內部用戶。如何以編程方式「實時」設置SVN存儲庫?

我還沒有最開始的模糊想法。是否有PHP的SVN綁定,或者我將不得不使用svn控制檯命令?

回答

3

以下是一種可能性。你會在這裏做幾個步驟。首先,你需要在你的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的命令。那麼你就需要在一個新的Apache在/etc/httpd/conf.d的.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)。希望這會讓你開始。

+0

而不是'sudo'使命令要求輸入密碼? – 2012-10-03 14:32:27

+0

它會,如果你的sudo條目丟失NOPASSWD。 – 2012-10-03 17:29:41

0

使其執行svnadmin create reponame來創建回購。我不認爲有這樣的庫,因爲你通常只找到客戶端SVN庫。

只是提出一個建議「供應」Git回購更簡單。由於客戶端和服務器之間沒有區別,您通過git庫(http://code.google.com/p/git-php/)等進行處理非常簡單。當然,你可能只想要SVN回購,但如果你有選擇,去爭取。

+1

+1好答案...我抵制了對這個問題發表很多諷刺評論/回答的衝動。 – Fosco 2011-05-27 18:37:55

相關問題