From 79c4b8b6c12bea27e607d3050e17cff060664235 Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen@paragon-es.de> Date: Tue, 22 Aug 2017 10:21:27 +0200 Subject: [PATCH] Initial code --- src/Handler.php | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Handler.php b/src/Handler.php index a30d99e..7403371 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -7,6 +7,7 @@ use Composer\Composer; use Composer\IO\IOInterface; use Composer\Script\Event as ScriptEvent; use GitElephant\Repository; +use Symfony\Component\Filesystem\Filesystem; class Handler { @@ -88,11 +89,33 @@ class Handler { */ protected function prepareWorkingDirectory($path, $project, $version, $username) { list(, $projectname) = explode('/', $project); - $repo = $username . '@git.drupal.org:project/' . $projectname . '.git'; + $uri = $username . '@git.drupal.org:project/' . $projectname . '.git'; // Git Clone the repository into the working directory $repository = Repository::open($path); - $repository->cloneFrom($repo, '.'); + $repository->init(); + + $originExists = FALSE; + /** @var \GitElephant\Objects\Remote $remote */ + foreach ($repository->getRemotes() as $remote) { + if ($remote->getName() == 'origin') { + if ($remote->getFetchURL() != $uri) { + $remote->setFetchURL($uri); + } + $originExists = TRUE; + break; + } + } + + if (!$originExists) { + $fs = new Filesystem(); + $fs->remove($path); + $fs->mkdir($path); + $repository->init(); + $repository->addRemote('origin', $uri); + } + + $repository->fetch(); $repository->checkout($version); } -- GitLab