Browse Source

Merge remote-tracking branch 'colinodell/fix-tag-ambiguity'

Conflicts:
	src/Composer/Downloader/GitDownloader.php
	tests/Composer/Test/Downloader/GitDownloaderTest.php
Jordi Boggiano 10 years ago
parent
commit
0081964428

+ 4 - 4
src/Composer/Downloader/GitDownloader.php

@@ -220,7 +220,7 @@ class GitDownloader extends VcsDownloader
         // Otherwise git tries the branch name as well as file name.
         // Otherwise git tries the branch name as well as file name.
         // If the non-existent branch is actually the name of a file, the file
         // If the non-existent branch is actually the name of a file, the file
         // is checked out.
         // is checked out.
-        $template = 'git checkout %s -- && git reset --hard %1$s';
+        $template = 'git checkout %s -- && git reset --hard %1$s --';
         $branch = preg_replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $branch);
         $branch = preg_replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $branch);
 
 
         $branches = null;
         $branches = null;
@@ -234,7 +234,7 @@ class GitDownloader extends VcsDownloader
             && $branches
             && $branches
             && preg_match('{^\s+composer/'.preg_quote($reference).'$}m', $branches)
             && preg_match('{^\s+composer/'.preg_quote($reference).'$}m', $branches)
         ) {
         ) {
-            $command = sprintf('git checkout -B %s %s && git reset --hard %2$s', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference));
+            $command = sprintf('git checkout -B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference));
             if (0 === $this->process->execute($command, $output, $path)) {
             if (0 === $this->process->execute($command, $output, $path)) {
                 return;
                 return;
             }
             }
@@ -248,11 +248,11 @@ class GitDownloader extends VcsDownloader
             }
             }
 
 
             $command = sprintf('git checkout %s --', ProcessExecutor::escape($branch));
             $command = sprintf('git checkout %s --', ProcessExecutor::escape($branch));
-            $fallbackCommand = sprintf('git checkout -B %s %s', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch));
+            $fallbackCommand = sprintf('git checkout -B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch));
             if (0 === $this->process->execute($command, $output, $path)
             if (0 === $this->process->execute($command, $output, $path)
                 || 0 === $this->process->execute($fallbackCommand, $output, $path)
                 || 0 === $this->process->execute($fallbackCommand, $output, $path)
             ) {
             ) {
-                $command = sprintf('git reset --hard %s', ProcessExecutor::escape($reference));
+                $command = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference));
                 if (0 === $this->process->execute($command, $output, $path)) {
                 if (0 === $this->process->execute($command, $output, $path)) {
                     return;
                     return;
                 }
                 }

+ 3 - 3
tests/Composer/Test/Downloader/GitDownloaderTest.php

@@ -79,7 +79,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
 
 
         $processExecutor->expects($this->at(3))
         $processExecutor->expects($this->at(3))
             ->method('execute')
             ->method('execute')
-            ->with($this->equalTo($this->winCompat("git reset --hard '1234567890123456789012345678901234567890'")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
+            ->with($this->equalTo($this->winCompat("git reset --hard '1234567890123456789012345678901234567890' --")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
             ->will($this->returnValue(0));
             ->will($this->returnValue(0));
 
 
         $downloader = $this->getDownloaderMock(null, null, $processExecutor);
         $downloader = $this->getDownloaderMock(null, null, $processExecutor);
@@ -134,7 +134,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
 
 
         $processExecutor->expects($this->at(6))
         $processExecutor->expects($this->at(6))
             ->method('execute')
             ->method('execute')
-            ->with($this->equalTo($this->winCompat("git checkout 'ref' -- && git reset --hard 'ref'")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
+            ->with($this->equalTo($this->winCompat("git checkout 'ref' -- && git reset --hard 'ref' --")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
             ->will($this->returnValue(0));
             ->will($this->returnValue(0));
 
 
         $downloader = $this->getDownloaderMock(null, new Config(), $processExecutor);
         $downloader = $this->getDownloaderMock(null, new Config(), $processExecutor);
@@ -266,7 +266,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(0));
             ->will($this->returnValue(0));
         $processExecutor->expects($this->at(4))
         $processExecutor->expects($this->at(4))
             ->method('execute')
             ->method('execute')
-            ->with($this->equalTo($this->winCompat("git checkout 'ref' -- && git reset --hard 'ref'")), $this->equalTo(null), $this->equalTo($this->winCompat($tmpDir)))
+            ->with($this->equalTo($this->winCompat("git checkout 'ref' -- && git reset --hard 'ref' --")), $this->equalTo(null), $this->equalTo($this->winCompat($tmpDir)))
             ->will($this->returnValue(0));
             ->will($this->returnValue(0));
 
 
         $downloader = $this->getDownloaderMock(null, new Config(), $processExecutor);
         $downloader = $this->getDownloaderMock(null, new Config(), $processExecutor);