• R/O
  • SSH
  • HTTPS

websvn-admin: Commit


Commit MetaInfo

Revision7 (tree)
Zeit2011-01-17 23:06:51
Autorinoue-h

Log Message

既存リポジトリを選択した場合のメニュー表示追加(機能実装 未)

Ändern Zusammenfassung

Diff

--- trunc/index.php (revision 6)
+++ trunc/index.php (revision 7)
@@ -105,7 +105,7 @@
105105 if ($dir = opendir($strBaseDir)) {
106106 while (($file = readdir($dir)) !== false) {
107107 if ($file != "." && $file != ".." && is_dir($strBaseDir.$file)) {
108- print "<li class=\"repo\"><a class=\"repo\">".htmlspecialchars($file)."</a></li>\n";
108+ print "<li class=\"repo\"><a class=\"repo\" href=\"$strFilenameThis?mode=repo&reponame=".htmlspecialchars($file)."\">".htmlspecialchars($file)."</a></li>\n";
109109 }
110110 }
111111 closedir($dir);
@@ -117,9 +117,12 @@
117117
118118 <?php
119119
120-//print("<p>Subversion 新リポジトリ作成 (svnadmin create ~/var/svn/[repo])</p>\n");
121120
122-if(isset($_POST['newrepo']) && strlen($_POST['newrepo'])>0){
121+// *********************
122+// 新規リポジトリ作成
123+// *********************
124+if(isset($_GET['mode']) && $_GET['mode'] === 'makerepo' &&
125+ isset($_POST['newrepo']) && strlen($_POST['newrepo'])>0){
123126 // 新規リポジトリ作成(リポジトリ名が与えられた場合)
124127 $strNewRepo = trim($_POST['newrepo']);
125128 print("<h1>Create New Repository (リポジトリ作成)</h1>\n");
@@ -154,6 +157,9 @@
154157 }
155158
156159 }
160+// *********************
161+// ログアウト
162+// *********************
157163 elseif(isset($_GET['mode']) && $_GET['mode'] === 'logout'){
158164 LogoffAuth();
159165 ?>
@@ -161,10 +167,84 @@
161167 <p>ログアウトしました</p>
162168 <?php
163169 }
170+// *********************
171+// ユーザ名・パスワード変更
172+// *********************
164173 elseif(isset($_GET['mode']) && $_GET['mode'] === 'chgpasswd'){
165174 print("<h1>Change User and Password (ユーザ名、パスワード変更)</h1>\n");
166175 print("<p>".ChangePassword($strFilenameThis, 'svnadmin-create')."</p>\n");
167176 }
177+// *********************
178+// 既存リポジトリ指定
179+// *********************
180+elseif(isset($_GET['mode']) && $_GET['mode'] === 'repo' && isset($_GET['reponame'])){
181+ $strRepo = $_GET['reponame'];
182+ print("<h1>Existing Repository (既存リポジトリ)</h1>\n");
183+ print("<p>リポジトリ名 : ".htmlspecialchars($strRepo)."</p>\n");
184+ if(!preg_match("/^[A-Za-z0-9\-]+$/", $strRepo) || $strRepo[0] == '-' || $strRepo[strlen($strRepo)-1] == '-' || strlen($strRepo) > 20 || strlen($strRepo) <= 0){
185+ print("<p class=\"error\">不正なリポジトリ名が指定されました</p>\n");
186+ }
187+ else{
188+ exec($strSvnCmdPath."svnlook youngest ".$strBaseDir.$strRepo." 2>&1", $arrStdout, $nResult);
189+ if($nResult != 0){ print("<p class=\"error\">svnlook youngestコマンドが実行できません</p>\n"); }
190+ else{
191+ if(count($arrStdout) >= 1){ $strRevNo = $arrStdout[0]; }
192+ else{ $strRevNo = ''; }
193+ }
194+ $arrStdout = array();
195+ exec($strSvnCmdPath."svnlook author ".$strBaseDir.$strRepo." 2>&1", $arrStdout, $nResult);
196+ if($nResult != 0){ print("<p class=\"error\">svnlook authorコマンドが実行できません</p>\n"); }
197+ else{
198+ if(count($arrStdout) >= 1){ $strAuthor = $arrStdout[0]; }
199+ else{ $strAuthor = ''; }
200+ }
201+ $arrStdout = array();
202+ exec($strSvnCmdPath."svnlook date ".$strBaseDir.$strRepo." 2>&1", $arrStdout, $nResult);
203+ if($nResult != 0){ print("<p class=\"error\">svnlook dateコマンドが実行できません</p>\n"); }
204+ else{
205+ if(count($arrStdout) >= 1){ $strDate = $arrStdout[0]; }
206+ else{ $strDate = ''; }
207+ }
208+
209+ print("<p>直近にコミットしたユーザ : ".$strAuthor."</p>\n");
210+ print("<p>直近のコミット日時 : ".$strDate."</p>\n");
211+ print("<p>リビジョン no : ".$strRevNo."</p>\n");
212+
213+ print("<p><a class=\"repo\" href=\"$strFilenameThis?mode=verify&reponame=".htmlspecialchars($strRepo)."\">".htmlspecialchars($strRepo)." をベリファイする (svnadmin verify)</a></p>\n");
214+ print("<p><a class=\"repo\" href=\"$strFilenameThis?mode=recover&reponame=".htmlspecialchars($strRepo)."\">".htmlspecialchars($strRepo)." のエラー回復を行う (svnadmin recover)</a></p>\n");
215+ print("<p><a class=\"repo\" href=\"$strFilenameThis?mode=hotcopy&reponame=".htmlspecialchars($strRepo)."\">".htmlspecialchars($strRepo)." をバックアップする (svnadmin hotcopy)</a></p>\n");
216+ print("<p><a class=\"repo\" href=\"$strFilenameThis?mode=dump&reponame=".htmlspecialchars($strRepo)."\">".htmlspecialchars($strRepo)." をバックアップ(ダンプ)する (svnadmin dump)</a></p>\n");
217+ print("<p><a class=\"repo\" href=\"$strFilenameThis?mode=remove&reponame=".htmlspecialchars($strRepo)."\">".htmlspecialchars($strRepo)." を削除する</a></p>\n");
218+ }
219+}
220+// *********************
221+// 既存リポジトリのベリファイ
222+// *********************
223+elseif(isset($_GET['mode']) && $_GET['mode'] === 'verify' && isset($_GET['reponame'])){
224+ $strRepo = $_GET['reponame'];
225+ print("<h1>Verify Repository (既存リポジトリのベリファイ)</h1>\n");
226+ print("<p>リポジトリ名 : ".htmlspecialchars($strRepo)."</p>\n");
227+ if(!preg_match("/^[A-Za-z0-9\-]+$/", $strRepo) || $strRepo[0] == '-' || $strRepo[strlen($strRepo)-1] == '-' || strlen($strRepo) > 20 || strlen($strRepo) <= 0){
228+ print("<p class=\"error\">不正なリポジトリ名が指定されました</p>\n");
229+ }
230+ else{
231+ exec($strSvnCmdPath."svnadmin verify ".$strBaseDir.$strRepo." 2>&1", $arrStdout, $nResult);
232+ if($nResult != 0){ print("<p class=\"error\">svnadmin verifyコマンドが実行できません</p>\n"); }
233+ else{
234+ // コマンドのStdout出力がある場合
235+ if(count($arrStdout)>0){
236+ print("<pre>\n\n");
237+ foreach($arrStdout as $str){
238+ print($str."\n");
239+ }
240+ print("</pre>\n");
241+ }
242+ }
243+ }
244+}
245+// *********************
246+// 新規リポジトリ作成 入力画面
247+// *********************
168248 else{
169249 // 引数が何もなかった場合、新規リポジトリ名の入力画面を表示
170250 ?>
@@ -171,7 +251,7 @@
171251 <h1>Create New Repository (リポジトリ作成)</h1>
172252 <p>svnadmin create コマンドを実行して新しいリポジトリを作成します。</p>
173253 <p>&nbsp;</p>
174-<form method="post" action="./<?php echo $strFilenameThis; ?>" name="form1">
254+<form method="post" action="./<?php echo $strFilenameThis; ?>?mode=makerepo" name="form1">
175255 <p>作成するリポジトリ名&nbsp;&nbsp;&nbsp;<input name="newrepo" type="text" size="25" />&nbsp;&nbsp;<input type="submit" value="新規作成" /></p>
176256 <p>&nbsp;</p>
177257 <p style="color:gray;">リポジトリ名には半角アルファベット・数字・横線(A-Z, a-z, 0-9, -)のみ利用できます。<br />
Show on old repository browser