|
|
@ -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) {
|
|
|
|