diff --git a/src/Composer/Downloader/DownloadManager.php b/src/Composer/Downloader/DownloadManager.php index 902e8beaf..2546e8c76 100644 --- a/src/Composer/Downloader/DownloadManager.php +++ b/src/Composer/Downloader/DownloadManager.php @@ -252,14 +252,19 @@ class DownloadManager $target->setInstallationSource($installationSource); try { $downloader->update($initial, $target, $targetDir); + return; - } catch (\RuntimeException $ex) { - if (!$this->io->isInteractive() || - !$this->io->askConfirmation(' Updating failed. Would you like to try reinstalling instead [yes]? ', true)) { - throw $ex; + } catch (\RuntimeException $e) { + if (!$this->io->isInteractive()) { + throw $e; + } + $this->io->writeError(' Update failed ('.$e->getMessage().')'); + if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ', true)) { + throw $e; } } } + $downloader->remove($initial, $targetDir); $this->download($target, $targetDir, 'source' === $installationSource); } diff --git a/src/Composer/Downloader/GitDownloader.php b/src/Composer/Downloader/GitDownloader.php index c1d47c794..93beee158 100644 --- a/src/Composer/Downloader/GitDownloader.php +++ b/src/Composer/Downloader/GitDownloader.php @@ -372,15 +372,12 @@ class GitDownloader extends VcsDownloader } /** - * Checks if VCS metadata repository has been initialized - * repository example: .git|.svn|.hg - * - * @param string $path - * @return bool + * {@inheritDoc} */ protected function hasMetadataRepository($path) { $path = $this->normalizePath($path); + return is_dir($path.'/.git'); } } diff --git a/src/Composer/Downloader/HgDownloader.php b/src/Composer/Downloader/HgDownloader.php index 9c379a9e5..419ce92cb 100644 --- a/src/Composer/Downloader/HgDownloader.php +++ b/src/Composer/Downloader/HgDownloader.php @@ -86,11 +86,7 @@ class HgDownloader extends VcsDownloader } /** - * Checks if VCS metadata repository has been initialized - * repository example: .git|.svn|.hg - * - * @param string $path - * @return bool + * {@inheritDoc} */ protected function hasMetadataRepository($path) { diff --git a/src/Composer/Downloader/PerforceDownloader.php b/src/Composer/Downloader/PerforceDownloader.php index 77f82ac1e..0acc60f84 100644 --- a/src/Composer/Downloader/PerforceDownloader.php +++ b/src/Composer/Downloader/PerforceDownloader.php @@ -106,11 +106,7 @@ class PerforceDownloader extends VcsDownloader } /** - * Checks if VCS metadata repository has been initialized - * repository example: .git|.svn|.hg - * - * @param string $path - * @return bool + * {@inheritDoc} */ protected function hasMetadataRepository($path) { diff --git a/src/Composer/Downloader/SvnDownloader.php b/src/Composer/Downloader/SvnDownloader.php index 42ebf758e..b71e22b31 100644 --- a/src/Composer/Downloader/SvnDownloader.php +++ b/src/Composer/Downloader/SvnDownloader.php @@ -190,11 +190,7 @@ class SvnDownloader extends VcsDownloader } /** - * Checks if VCS metadata repository has been initialized - * repository example: .git|.svn|.hg - * - * @param string $path - * @return bool + * {@inheritDoc} */ protected function hasMetadataRepository($path) { diff --git a/src/Composer/Downloader/VcsDownloader.php b/src/Composer/Downloader/VcsDownloader.php index 37aa9042f..0a48708d2 100644 --- a/src/Composer/Downloader/VcsDownloader.php +++ b/src/Composer/Downloader/VcsDownloader.php @@ -133,7 +133,7 @@ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterfa // print the commit logs if in verbose mode and VCS metadata is present // because in case of missing metadata code would trigger another exception - if ($this->io->isVerbose() && $this->hasMetadataRepository($path)) { + if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { $message = 'Pulling in changes:'; $logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path);