From 618d8e02d1195c5007950f8e695c6c9985d6ffa0 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 24 Oct 2018 16:34:11 +0300 Subject: [PATCH] GitEditor: Fix resolving of working directory for non-existent source Change-Id: Ie92be6b0aa6816b5c3a2bfed4a89163f2260d12b Reviewed-by: Tobias Hunger --- src/plugins/git/giteditor.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index d4688fa85ff..fadf1b4af20 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -286,21 +286,17 @@ void GitEditorWidget::aboutToOpen(const QString &fileName, const QString &realFi QString GitEditorWidget::decorateVersion(const QString &revision) const { - const QFileInfo fi(source()); - const QString workingDirectory = fi.absolutePath(); - // Format verbose, SHA1 being first token - return GitPlugin::client()->synchronousShortDescription(workingDirectory, revision); + return GitPlugin::client()->synchronousShortDescription(sourceWorkingDirectory(), revision); } QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision) const { QStringList revisions; QString errorMessage; - const QFileInfo fi(source()); - const QString workingDirectory = fi.absolutePath(); // Get the SHA1's of the file. - if (!GitPlugin::client()->synchronousParentRevisions(workingDirectory, revision, &revisions, &errorMessage)) { + if (!GitPlugin::client()->synchronousParentRevisions(sourceWorkingDirectory(), + revision, &revisions, &errorMessage)) { VcsOutputWindow::appendSilently(errorMessage); return QStringList(); } @@ -371,8 +367,12 @@ QString GitEditorWidget::fileNameForLine(int line) const QString GitEditorWidget::sourceWorkingDirectory() const { - const QFileInfo fi(source()); - return fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); + Utils::FileName path = Utils::FileName::fromString(source()); + if (!path.isEmpty() && !path.toFileInfo().isDir()) + path = path.parentDir(); + while (!path.isEmpty() && !path.exists()) + path = path.parentDir(); + return path.toString(); } } // namespace Internal