fix description
[m6w6/replicator] / public / mirror.php
index 4203c9e1a24674b5286cc5ce434b7f25a2c729dd..57970db17d73da21aedc18e732d98717713ec00d 100644 (file)
@@ -41,29 +41,31 @@ switch ($evt) {
                $response->setResponseStatus("PONG");
                break;
        case "push":
-               if (($json = json_decode($request->getBody()))) {
-                       if (in_array($json->repository->owner->name, $owners, true)) {
-                               $repo = $json->repository->full_name;
-                               $path = $mirror . "/" . $repo;
-                               if (is_dir($path) && chdir($path)) {
-                                       passthru("git fetch -p 2>&1", $rv);
-                                       if ($rv == 0) {
-                                               $response->setResponseCode(200);
-                                       }
-                               } elseif (mkdir($path, 0755, true) && chdir($path)) {
-                                       passthru("git clone --mirror " . escapeshellarg($repo) . " . 2>&1", $rv);
-                                       if ($rv == 0) {
-                                               $response->setResponseCode(200);
-                                       }
-                               }
-                       } else {
-                               $response->setResponseCode(403);
-                               $response->getBody()->append("Invalid owner");
-                       }
-               } else {
+               if (!($json = json_decode($request->getBody()))) {
                        $response->setResponseCode(415);
                        $response->setContentType($request->getHeader("Content-Type"));
                        $response->getBody()->append($request->getBody());
+               } elseif (!in_array($json->repository->owner->name, $owners, true)) {
+                       $response->setResponseCode(403);
+                       $response->getBody()->append("Invalid owner");
+               } else {
+                       $repo = $json->repository->full_name;
+                       $path = $mirror . "/" . $repo;
+                       if (is_dir($path) && chdir($path)) {
+                               passthru("git fetch -vp 2>&1", $rv);
+                               if ($rv == 0) {
+                                       $response->setResponseCode(200);
+                               }
+                       } elseif (mkdir($path, 0755, true) && chdir($path)) {
+                               $source = escapeshellarg($json->repository->clone_url);
+                               $description = escapeshellarg($json->repository->description);
+                               passthru("git clone --mirror $source . 2>&1", $rv);
+                               passthru("git config gitweb.description $description 2>&1");
+                               unlink("description");
+                               if ($rv == 0) {
+                                       $response->setResponseCode(200);
+                               }
+                       }
                }
                break;
 }