forking works now
authorChristian Weiske <cweiske@cweiske.de>
Mon, 26 Mar 2012 21:46:54 +0000 (23:46 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Mon, 26 Mar 2012 21:46:54 +0000 (23:46 +0200)
src/Phorkie/Repositories.php
www/fork.php [new file with mode: 0644]

index 6582ae818050adf6ce15b08441eceab3cf28fcb9..3afe8c5b01c510e138ca2a0309f1fede06a8a3ab 100644 (file)
@@ -13,7 +13,12 @@ class Repositories
      */
     public function createNew()
     {
      */
     public function createNew()
     {
-        $n = basename(end(glob($this->reposDir . '/*', GLOB_ONLYDIR))) + 1;
+        chdir($this->reposDir);
+        $dirs = glob('*', GLOB_ONLYDIR);
+        sort($dirs, SORT_NUMERIC);
+        $n = end($dirs) + 1;
+        unset($dirs);
+
         $dir = $this->reposDir . '/' . $n . '/'; 
         mkdir($dir, 0777);//FIXME
         $r = new Repository();
         $dir = $this->reposDir . '/' . $n . '/'; 
         mkdir($dir, 0777);//FIXME
         $r = new Repository();
diff --git a/www/fork.php b/www/fork.php
new file mode 100644 (file)
index 0000000..5004945
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Fork a repository
+ */
+namespace Phorkie;
+require_once 'www-header.php';
+$repo = new Repository();
+$repo->loadFromRequest();
+
+$rs = new Repositories();
+$new = $rs->createNew();
+$new->getVc()->getCommand('clone')
+    ->addArgument($repo->repoDir)
+    ->addArgument($new->repoDir)
+    ->execute();
+\copy($repo->repoDir . '/.git/description', $new->repoDir . '/.git/description');
+//FIXME: where to put fork source link?
+redirect($new->getLink('display'));
+?>
\ No newline at end of file