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