diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index d93b66f4f70..a6bdfbf32e3 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -1055,8 +1055,12 @@ void GitPluginPrivate::blameFile() } } } - VcsBaseEditorWidget *editor = m_gitClient.annotate(state.currentFileTopLevel(), - state.relativeCurrentFile(), {}, lineNumber, extraOptions); + const FilePath fileName = FilePath::fromString(state.currentFile()).canonicalPath(); + FilePath topLevel; + VcsManager::findVersionControlForDirectory(fileName.parentDir(), &topLevel); + VcsBaseEditorWidget *editor = m_gitClient.annotate( + topLevel, fileName.relativeChildPath(topLevel).toString(), + {}, lineNumber, extraOptions); if (firstLine > 0) editor->setFirstLineNumber(firstLine); } diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 861b77da366..cdba88327e2 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -1450,9 +1450,9 @@ void VcsBaseEditorWidget::addDiffActions(QMenu *, const DiffChunk &) void VcsBaseEditorWidget::slotAnnotateRevision(const QString &change) { const int currentLine = textCursor().blockNumber() + 1; - const FilePath fileName = FilePath::fromString(fileNameForLine(currentLine)); + const FilePath fileName = FilePath::fromString(fileNameForLine(currentLine)).canonicalPath(); const FilePath workingDirectory = d->m_workingDirectory.isEmpty() - ? fileName.absolutePath() + ? VcsManager::findTopLevelForDirectory(fileName.parentDir()) : d->m_workingDirectory; emit annotateRevisionRequested(workingDirectory, fileName.relativeChildPath(workingDirectory).toString(),