aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-03-26 23:46:54 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-03-26 23:46:54 +0200
commitf7101de3d20753dafe8e02f4e43112e2e208b8d7 (patch)
tree1f6aaca9d77726cbb9e8cf653c1c034beb62fd52
parentbfa1501efa1a49893208c794ea262a075b13fc1d (diff)
downloadphorkie-f7101de3d20753dafe8e02f4e43112e2e208b8d7.tar.gz
phorkie-f7101de3d20753dafe8e02f4e43112e2e208b8d7.zip
forking works now
-rw-r--r--src/Phorkie/Repositories.php7
-rw-r--r--www/fork.php19
2 files changed, 25 insertions, 1 deletions
diff --git a/src/Phorkie/Repositories.php b/src/Phorkie/Repositories.php
index 6582ae8..3afe8c5 100644
--- a/src/Phorkie/Repositories.php
+++ b/src/Phorkie/Repositories.php
@@ -13,7 +13,12 @@ class Repositories
*/
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();
diff --git a/www/fork.php b/www/fork.php
new file mode 100644
index 0000000..5004945
--- /dev/null
+++ b/www/fork.php
@@ -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