X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/f259471294440e9c7463c8bf506f5967b2d67ec2..2a665e0f4eeb45c9d57df7dc7f9d853465b5fea9:/src/phorkie/Forker.php diff --git a/src/phorkie/Forker.php b/src/phorkie/Forker.php index 7473f16..da545a7 100644 --- a/src/phorkie/Forker.php +++ b/src/phorkie/Forker.php @@ -6,19 +6,49 @@ class Forker public function forkLocal($repo) { $new = $this->fork($repo->gitDir); + \copy($repo->gitDir . '/description', $new->gitDir . '/description'); + $new->getVc() + ->getCommand('config') + ->addArgument('remote.origin.title') + ->addArgument(file_get_contents($repo->gitDir . '/description')) + ->execute(); + $this->index($new); + + $not = new Notificator(); + $not->create($new); + return $new; } - public function forkRemote($cloneUrl, $originalUrl) + public function forkRemote($cloneUrl, $originalUrl, $title = null) { $new = $this->fork($cloneUrl); - file_put_contents( - $new->gitDir . '/description', - 'Fork of ' . $originalUrl - ); + + $new->getVc() + ->getCommand('config') + ->addArgument('remote.origin.title') + ->addArgument($title) + ->execute(); + if ($originalUrl != $cloneUrl) { + $new->getVc() + ->getCommand('config') + ->addArgument('remote.origin.homepage') + ->addArgument($originalUrl) + ->execute(); + } + + if ($title === null) { + $title = 'Fork of ' . $originalUrl; + } + file_put_contents($new->gitDir . '/description', $title); + $this->index($new); + + $not = new Notificator(); + $not->create($new); + return $new; } @@ -48,9 +78,12 @@ class Forker throw $e; } - foreach (\glob($new->gitDir . '/hooks/*') as $hookfile) { - \unlink($hookfile); - } + $rs = new Repository_Setup($new); + $rs->afterInit(); + + //update info for dumb git HTTP transport + //the post-update hook should do that IMO, but does not somehow + $vc->getCommand('update-server-info')->execute(); return $new; }