From 63575a005e8e2386abb24e97791e18d61e6350fe Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Tue, 18 Sep 2012 21:31:49 +0200 Subject: first work on remote forking --- src/phorkie/ForkRemote.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/phorkie/ForkRemote.php (limited to 'src') diff --git a/src/phorkie/ForkRemote.php b/src/phorkie/ForkRemote.php new file mode 100644 index 0000000..f3639b2 --- /dev/null +++ b/src/phorkie/ForkRemote.php @@ -0,0 +1,42 @@ +url = $url; + } + + public function parse() + { + $scheme = parse_url($this->url, PHP_URL_SCHEME); + switch ($scheme) { + case 'git': + //clearly a git url + $this->gitUrl = $this->url; + return true; + + case 'ssh': + //FIXME: maybe loosen this when we know how to skip the + //"do you trust this server" question of ssh + $this->error = 'ssh:// URLs are not supported'; + return false; + + case 'http': + case 'https': + return $this->extractUrlsFromHtml($this->url); + } + + $this->error = 'Unknown URLs scheme: ' . $scheme; + return false; + } + + protected function extractUrlsFromHtml($url) + { + } +} + +?> -- cgit v1.2.3 From 13889267c83c2f7a747120a91352bae4d605aa3e Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Wed, 19 Sep 2012 19:11:59 +0200 Subject: use replace html entity with numeric xml entity --- src/phorkie/Renderer/Geshi.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/phorkie/Renderer/Geshi.php b/src/phorkie/Renderer/Geshi.php index 2010ead..21d36c2 100644 --- a/src/phorkie/Renderer/Geshi.php +++ b/src/phorkie/Renderer/Geshi.php @@ -28,7 +28,7 @@ class Renderer_Geshi } return '
' - . $geshi->parse_code() + . str_replace(' ', ' ', $geshi->parse_code()) . '
'; } -- cgit v1.2.3 From 8701af280fa5a9c83827cdd0e2ae335d2512a3a7 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Wed, 19 Sep 2012 23:52:07 +0200 Subject: move forking code to separate class --- src/phorkie/Forker.php | 44 ++++++++++++++++++++++++++++++++++++++++++++ www/fork.php | 17 ++--------------- 2 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 src/phorkie/Forker.php (limited to 'src') diff --git a/src/phorkie/Forker.php b/src/phorkie/Forker.php new file mode 100644 index 0000000..3425a72 --- /dev/null +++ b/src/phorkie/Forker.php @@ -0,0 +1,44 @@ +fork($repo->gitDir); + \copy($repo->gitDir . '/description', $new->gitDir . '/description'); + return $new; + } + + public function forkRemote($url) + { + $new = $this->fork($url); + file_put_contents( + $new->gitDir . '/description', + 'Fork of ' . $url + ); + return $new; + } + + + protected function fork($pathOrUrl) + { + $rs = new Repositories(); + $new = $rs->createNew(); + $vc = $new->getVc(); + \rmdir($new->gitDir);//VersionControl_Git wants an existing dir, git clone not + $vc->getCommand('clone') + //this should be setOption, but it fails with a = between name and value + ->addArgument('--separate-git-dir') + ->addArgument($GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $new->id . '.git') + ->addArgument($pathOrUrl) + ->addArgument($new->workDir) + ->execute(); + foreach (\glob($new->gitDir . '/hooks/*') as $hookfile) { + \unlink($hookfile); + } + return $new; + } +} + +?> diff --git a/www/fork.php b/www/fork.php index 6c96a6a..d8a24a2 100644 --- a/www/fork.php +++ b/www/fork.php @@ -13,21 +13,8 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $repo = new Repository(); $repo->loadFromRequest(); -$rs = new Repositories(); -$new = $rs->createNew(); -$vc = $new->getVc(); -\rmdir($new->gitDir);//VersionControl_Git wants an existing dir, git clone not -$vc->getCommand('clone') - //this should be setOption, but it fails with a = between name and value - ->addArgument('--separate-git-dir') - ->addArgument($GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $new->id . '.git') - ->addArgument($repo->gitDir) - ->addArgument($new->workDir) - ->execute(); -\copy($repo->gitDir . '/description', $new->gitDir . '/description'); -foreach (\glob($new->gitDir . '/hooks/*') as $hookfile) { - \unlink($hookfile); -} +$forker = new Forker(); +$new = $forker->forkLocal($repo); //FIXME: where to put fork source link? redirect($new->getLink('display')); -- cgit v1.2.3 From c85fb1700ce938f28da420af9636e246912a996b Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Wed, 19 Sep 2012 23:55:07 +0200 Subject: implement request #13: simple remote forking works now --- data/templates/fork-remote-multiple.htm | 27 ++++++++++++ data/templates/fork-remote-new.htm | 12 ++++++ data/templates/fork-remote.htm | 13 +++++- data/templates/new-fork-remote.htm | 12 ------ data/templates/new.htm | 2 +- src/phorkie/ForkRemote.php | 76 ++++++++++++++++++++++++++++++++- www/fork-remote.php | 31 +++++++++++--- 7 files changed, 152 insertions(+), 21 deletions(-) create mode 100644 data/templates/fork-remote-multiple.htm create mode 100644 data/templates/fork-remote-new.htm delete mode 100644 data/templates/new-fork-remote.htm (limited to 'src') diff --git a/data/templates/fork-remote-multiple.htm b/data/templates/fork-remote-multiple.htm new file mode 100644 index 0000000..f5a95b2 --- /dev/null +++ b/data/templates/fork-remote-multiple.htm @@ -0,0 +1,27 @@ +
+
+

+ The URL you provided contains links to several Git repositories. + Select one of them. +

+ +
+
+ +
+ +
\ No newline at end of file diff --git a/data/templates/fork-remote-new.htm b/data/templates/fork-remote-new.htm new file mode 100644 index 0000000..6b48ffe --- /dev/null +++ b/data/templates/fork-remote-new.htm @@ -0,0 +1,12 @@ +
+

+ Copy a paste from a remote server: + Just paste the website or git clone URL. +

+ + + + +
diff --git a/data/templates/fork-remote.htm b/data/templates/fork-remote.htm index f599ec6..f651661 100644 --- a/data/templates/fork-remote.htm +++ b/data/templates/fork-remote.htm @@ -2,5 +2,16 @@ {% block title %}Fork remote paste{% endblock %} {% block content %} - {% include 'new-fork-remote.htm' %} + {% include 'fork-remote-new.htm' %} + + {% if error %} +
+ {{error}} +
+ {% endif %} + + {% if urls %} + {% include 'fork-remote-multiple.htm' %} + {% endif %} + {% endblock %} diff --git a/data/templates/new-fork-remote.htm b/data/templates/new-fork-remote.htm deleted file mode 100644 index 02a94e2..0000000 --- a/data/templates/new-fork-remote.htm +++ /dev/null @@ -1,12 +0,0 @@ -
-

- Copy a paste from a remote server: - Just paste the website or git clone URL. -

- - - - -
diff --git a/data/templates/new.htm b/data/templates/new.htm index f846fe5..8029b8c 100644 --- a/data/templates/new.htm +++ b/data/templates/new.htm @@ -21,7 +21,7 @@ -{% include 'new-fork-remote.htm' %} +{% include 'fork-remote-new.htm' %}