forking only possible with POST requests now
[phorkie.git] / www / fork.php
1 <?php
2 /**
3  * Fork a repository
4  */
5 namespace Phorkie;
6 require_once 'www-header.php';
7
8 if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
9     throw new Exception_Input('Forking only possible via POST');
10 }
11
12 $repo = new Repository();
13 $repo->loadFromRequest();
14
15 $rs = new Repositories();
16 $new = $rs->createNew();
17 $new->getVc()->getCommand('clone')
18     ->addArgument($repo->repoDir)
19     ->addArgument($new->repoDir)
20     ->execute();
21 \copy($repo->repoDir . '/.git/description', $new->repoDir . '/.git/description');
22 foreach (glob($new->repoDir . '/.git/hooks/*') as $hookfile) {
23     unlink($hookfile);
24 }
25
26 //FIXME: where to put fork source link?
27 redirect($new->getLink('display'));
28 ?>