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();
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();
$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;
}