From f259471294440e9c7463c8bf506f5967b2d67ec2 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Fri, 28 Sep 2012 12:59:22 +0200 Subject: delete repository after failed clone --- src/phorkie/Forker.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/phorkie/Forker.php b/src/phorkie/Forker.php index f293455..7473f16 100644 --- a/src/phorkie/Forker.php +++ b/src/phorkie/Forker.php @@ -32,15 +32,22 @@ class Forker //VersionControl_Git wants an existing dir, git clone not \rmdir($new->gitDir); - $vc->getCommand('clone') + $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($pathOrUrl) - ->addArgument($new->workDir) - ->execute(); + ->addArgument($new->workDir); + try { + $cmd->execute(); + } catch (\Exception $e) { + //clean up, we've got no workdir otherwise + $new->delete(); + throw $e; + } + foreach (\glob($new->gitDir . '/hooks/*') as $hookfile) { \unlink($hookfile); } -- cgit v1.2.3