Sfoglia il codice sorgente

Always set the push url after git updates

Jordi Boggiano 13 anni fa
parent
commit
66be50ce71
1 ha cambiato i file con 12 aggiunte e 7 eliminazioni
  1. 12 7
      src/Composer/Downloader/GitDownloader.php

+ 12 - 7
src/Composer/Downloader/GitDownloader.php

@@ -34,13 +34,7 @@ class GitDownloader extends VcsDownloader
         };
 
         $this->runCommand($commandCallable, $package->getSourceUrl(), $path);
-
-        // set push url for github projects
-        if (preg_match('{^(?:https?|git)://github.com/([^/]+)/([^/]+?)(?:\.git)?$}', $package->getSourceUrl(), $match)) {
-            $pushUrl = 'git@github.com:'.$match[1].'/'.$match[2].'.git';
-            $cmd = sprintf('cd %s && git remote set-url --push origin %s', escapeshellarg($path), escapeshellarg($pushUrl));
-            $this->process->execute($cmd, $ignoredOutput);
-        }
+        $this->setPushUrl($package, $path);
     }
 
     /**
@@ -58,6 +52,7 @@ class GitDownloader extends VcsDownloader
         };
 
         $this->runCommand($commandCallable, $target->getSourceUrl());
+        $this->setPushUrl($target, $path);
     }
 
     /**
@@ -106,4 +101,14 @@ class GitDownloader extends VcsDownloader
             throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
         }
     }
+
+    protected function setPushUrl(PackageInterface $package, $path)
+    {
+        // set push url for github projects
+        if (preg_match('{^(?:https?|git)://github.com/([^/]+)/([^/]+?)(?:\.git)?$}', $package->getSourceUrl(), $match)) {
+            $pushUrl = 'git@github.com:'.$match[1].'/'.$match[2].'.git';
+            $cmd = sprintf('git remote set-url --push origin %s', escapeshellarg($pushUrl));
+            $this->process->execute($cmd, $ignoredOutput, $path);
+        }
+    }
 }