move load method to top
[phorkie.git] / src / phorkie / Forker.php
index c75cb393a1dc6dea2e524d3b4758454215bf765b..157cb5e3e435a6a78da4bb087469fb3de9fa2f2f 100644 (file)
@@ -28,18 +28,29 @@ class Forker
         $rs = new Repositories();
         $new = $rs->createNew();
         $vc = $new->getVc();
-        \rmdir($new->gitDir);//VersionControl_Git wants an existing dir, git clone not
-        $vc->getCommand('clone')
+
+        //VersionControl_Git wants an existing dir, git clone not
+        \rmdir($new->gitDir);
+
+        $cmd = $vc->getCommand('clone')
             //this should be setOption, but it fails with a = between name and value
             ->addArgument('--separate-git-dir')
-            ->addArgument($GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $new->id . '.git')
+            ->addArgument(
+                $GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $new->id . '.git'
+            )
             ->addArgument($pathOrUrl)
-            ->addArgument($new->workDir)
-            ->execute();
-        foreach (\glob($new->gitDir . '/hooks/*') as $hookfile) {
-            \unlink($hookfile);
+            ->addArgument($new->workDir);
+        try {
+            $cmd->execute();
+        } catch (\Exception $e) {
+            //clean up, we've got no workdir otherwise
+            $new->delete();
+            throw $e;
         }
 
+        $rs = new Repository_Setup($new);
+        $rs->afterInit();
+
         return $new;
     }