1
0
Fork 0

Merge remote-tracking branch 'iamluc/git-diff'

pull/4345/head
Jordi Boggiano 2015-08-09 23:26:55 +01:00
commit a782dab2cd
1 changed files with 21 additions and 2 deletions

View File

@ -81,7 +81,7 @@ class GitDownloader extends VcsDownloader
$command = 'git remote set-url composer %s && git fetch composer && git fetch --tags composer'; $command = 'git remote set-url composer %s && git fetch composer && git fetch --tags composer';
$commandCallable = function ($url) use ($command) { $commandCallable = function ($url) use ($command) {
return sprintf($command, ProcessExecutor::escape ($url)); return sprintf($command, ProcessExecutor::escape($url));
}; };
$this->gitUtil->runCommand($commandCallable, $url, $path); $this->gitUtil->runCommand($commandCallable, $url, $path);
@ -149,7 +149,7 @@ class GitDownloader extends VcsDownloader
} }
while (true) { while (true) {
switch ($this->io->ask(' <info>Discard changes [y,n,v,'.($update ? 's,' : '').'?]?</info> ', '?')) { switch ($this->io->ask(' <info>Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]?</info> ', '?')) {
case 'y': case 'y':
$this->discardChanges($path); $this->discardChanges($path);
break 2; break 2;
@ -169,6 +169,10 @@ class GitDownloader extends VcsDownloader
$this->io->writeError($changes); $this->io->writeError($changes);
break; break;
case 'd':
$this->viewDiff($path);
break;
case '?': case '?':
default: default:
help: help:
@ -176,6 +180,7 @@ class GitDownloader extends VcsDownloader
' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'),
' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up',
' v - view modified files', ' v - view modified files',
' d - view local modifications (diff)',
)); ));
if ($update) { if ($update) {
$this->io->writeError(' s - stash changes and try to reapply them after the update'); $this->io->writeError(' s - stash changes and try to reapply them after the update');
@ -326,6 +331,20 @@ class GitDownloader extends VcsDownloader
$this->hasStashedChanges = true; $this->hasStashedChanges = true;
} }
/**
* @param $path
* @throws \RuntimeException
*/
protected function viewDiff($path)
{
$path = $this->normalizePath($path);
if (0 !== $this->process->execute('git diff HEAD', $output, $path)) {
throw new \RuntimeException("Could not view diff\n\n:".$this->process->getErrorOutput());
}
$this->io->writeError($output);
}
protected function normalizePath($path) protected function normalizePath($path)
{ {
if (defined('PHP_WINDOWS_VERSION_MAJOR') && strlen($path) > 0) { if (defined('PHP_WINDOWS_VERSION_MAJOR') && strlen($path) > 0) {