1
0
Fork 0

Fix git checkouts of custom branches, fixes #889

pull/893/head
Jordi Boggiano 2012-07-10 19:02:06 +02:00
parent 5325aef8fe
commit cbf27bb422
2 changed files with 7 additions and 5 deletions

View File

@ -67,7 +67,8 @@ class GitDownloader extends VcsDownloader
{
$template = 'git checkout %s && git reset --hard %1$s';
$command = sprintf($template, escapeshellarg($reference));
$gitRef = preg_match('{^[a-f0-9]{40}$}', $reference) ? $reference : 'composer/'.$reference;
$command = sprintf($template, escapeshellarg($gitRef));
if (0 === $this->process->execute($command, $output, $path)) {
return;
}
@ -104,7 +105,8 @@ class GitDownloader extends VcsDownloader
}
// checkout the new recovered ref
$command = sprintf($template, escapeshellarg($newReference));
$gitRef = preg_match('{^[a-f0-9]{40}$}', $reference) ? $reference : 'composer/'.$reference;
$command = sprintf($template, escapeshellarg($gitRef));
if (0 === $this->process->execute($command, $output, $path)) {
$this->io->write(' '.$reference.' is gone (history was rewritten?), recovered by checking out '.$newReference);

View File

@ -58,7 +58,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
$processExecutor->expects($this->at(1))
->method('execute')
->with($this->equalTo($this->getCmd("git checkout 'ref' && git reset --hard 'ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->with($this->equalTo($this->getCmd("git checkout 'composer/ref' && git reset --hard 'composer/ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->will($this->returnValue(0));
$downloader = $this->getDownloaderMock(null, $processExecutor);
@ -102,7 +102,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
$processExecutor->expects($this->at(6))
->method('execute')
->with($this->equalTo($this->getCmd("git checkout 'ref' && git reset --hard 'ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->with($this->equalTo($this->getCmd("git checkout 'composer/ref' && git reset --hard 'composer/ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->will($this->returnValue(0));
$downloader = $this->getDownloaderMock(null, $processExecutor);
@ -174,7 +174,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue(0));
$processExecutor->expects($this->at(3))
->method('execute')
->with($this->equalTo($this->getCmd("git checkout 'ref' && git reset --hard 'ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->with($this->equalTo($this->getCmd("git checkout 'composer/ref' && git reset --hard 'composer/ref'")), $this->equalTo(null), $this->equalTo('composerPath'))
->will($this->returnValue(0));
$downloader = $this->getDownloaderMock(null, $processExecutor);