我正在建立一個系統(基於PHP),可讓用戶即時提供SVN環境供使用。這是一個內部項目,所以用戶主要是內部用戶。如何以編程方式「實時」設置SVN存儲庫?
我還沒有最開始的模糊想法。是否有PHP的SVN綁定,或者我將不得不使用svn
控制檯命令?
我正在建立一個系統(基於PHP),可讓用戶即時提供SVN環境供使用。這是一個內部項目,所以用戶主要是內部用戶。如何以編程方式「實時」設置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的命令。那麼你就需要在一個新的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)。希望這會讓你開始。
使其執行svnadmin create reponame
來創建回購。我不認爲有這樣的庫,因爲你通常只找到客戶端SVN庫。
只是提出一個建議「供應」Git回購更簡單。由於客戶端和服務器之間沒有區別,您通過git庫(http://code.google.com/p/git-php/)等進行處理非常簡單。當然,你可能只想要SVN回購,但如果你有選擇,去爭取。
+1好答案...我抵制了對這個問題發表很多諷刺評論/回答的衝動。 – Fosco 2011-05-27 18:37:55
而不是'sudo'使命令要求輸入密碼? – 2012-10-03 14:32:27
它會,如果你的sudo條目丟失NOPASSWD。 – 2012-10-03 17:29:41