From 51e3f1c7fba071a7a02b2a581c669796a0534ea8 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Fri, 6 Oct 2017 09:39:45 +0200
Subject: [PATCH] #1 Improve preparation and tracking or origin

---
 src/Handler.php |  7 +++++--
 src/Plugin.php  | 10 ++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/Handler.php b/src/Handler.php
index 7403371..9fecb7c 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -100,9 +100,11 @@ class Handler {
     foreach ($repository->getRemotes() as $remote) {
       if ($remote->getName() == 'origin') {
         if ($remote->getFetchURL() != $uri) {
-          $remote->setFetchURL($uri);
+          $repository->getCaller()->execute('remote remove origin');
+        }
+        else {
+          $originExists = TRUE;
         }
-        $originExists = TRUE;
         break;
       }
     }
@@ -113,6 +115,7 @@ class Handler {
       $fs->mkdir($path);
       $repository->init();
       $repository->addRemote('origin', $uri);
+      $repository->getCaller()->execute('branch --set-upstream-to origin/' . $version . ' ' . $version);
     }
 
     $repository->fetch();
diff --git a/src/Plugin.php b/src/Plugin.php
index e1745fd..cb64a27 100644
--- a/src/Plugin.php
+++ b/src/Plugin.php
@@ -44,4 +44,14 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
     $this->handler->prepareDevProjects($event);
   }
 
+  /**
+   * Script callback for putting in composer scripts to prepare the project.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function prepare($event) {
+    $handler = new Handler($event->getComposer(), $event->getIO());
+    $handler->prepareDevProjects($event);
+  }
+
 }
-- 
GitLab