diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index dcd85653d809a05329de7b154cafa803532c2400..ba38cc6e61ee8f4993a5f30776b09467ac5de21c 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -273,8 +273,10 @@ void GitDiffHandler::slotShowDescriptionReceived(const QString &description) if (m_editor.isNull()) return; DiffEditor::DiffShowEditor *editor = qobject_cast<DiffEditor::DiffShowEditor *>(m_editor); - if (editor) - editor->setDescription(description); + if (editor) { + editor->setDescription(GitPlugin::instance()->gitClient()-> + extendedShowDescription(m_workingDirectory, description)); + } collectFilesList(QStringList() << m_requestedRevisionRange.begin.id @@ -2554,6 +2556,34 @@ void GitClient::continuePreviousGitCommand(const QString &workingDirectory, } } +QString GitClient::extendedShowDescription(const QString &workingDirectory, const QString &text) +{ + if (!text.startsWith(QLatin1String("commit "))) + return text; + QString modText = text; + QString precedes, follows; + int lastHeaderLine = modText.indexOf(QLatin1String("\n\n")) + 1; + const QString commit = modText.mid(7, 8); + synchronousTagsForCommit(workingDirectory, commit, precedes, follows); + if (!precedes.isEmpty()) + modText.insert(lastHeaderLine, QLatin1String("Precedes: ") + precedes + QLatin1Char('\n')); + if (!follows.isEmpty()) + modText.insert(lastHeaderLine, QLatin1String("Follows: ") + follows + QLatin1Char('\n')); + QString moreBranches; + QStringList branches = synchronousBranchesForCommit(workingDirectory, commit); + const int branchCount = branches.count(); + // If there are more than 20 branches, list first 10 followed by a hint + if (branchCount > 20) { + const int leave = 10; + moreBranches = tr(" and %1 more").arg(branchCount - leave); + branches.erase(branches.begin() + leave, branches.end()); + } + modText.insert(lastHeaderLine, QLatin1String("Branches: ") + + branches.join(QLatin1String(", ")) + moreBranches + + QLatin1Char('\n')); + return modText; +} + // Quietly retrieve branch list of remote repository URL // // The branch HEAD is pointing to is always returned first. diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 6df7e3b0df356ef2ff9c3b5f01d297168a807f58..a1b4bd5408303a117bc8fe0ae551e465bb81a9a0 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -302,6 +302,8 @@ public: void continuePreviousGitCommand(const QString &workingDirectory, const QString &msgBoxTitle, QString msgBoxText, const QString &buttonName, const QString &gitCommand, bool requireChanges = true); + QString extendedShowDescription(const QString &workingDirectory, const QString &text); + void launchGitK(const QString &workingDirectory, const QString &fileName); void launchGitK(const QString &workingDirectory) { launchGitK(workingDirectory, QString()); } bool launchGitGui(const QString &workingDirectory); diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index 392ace9e7198e5f40fe969b589b79d94f28a693c..7018e51eb940ae43572bb10e8ecc48c98e8ce490 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -183,32 +183,12 @@ void GitEditor::setPlainTextFiltered(const QString &text) break; } case VcsBase::DiffOutput: { - if (modText.isEmpty()) + if (modText.isEmpty()) { modText = QLatin1String("No difference to HEAD"); - const QFileInfo fi(source()); - const QString workingDirectory = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); - QString precedes, follows; - if (modText.startsWith(QLatin1String("commit "))) { // show - int lastHeaderLine = modText.indexOf(QLatin1String("\n\n")) + 1; - const QString commit = modText.mid(7, 8); - plugin->gitClient()->synchronousTagsForCommit(workingDirectory, commit, precedes, follows); - if (!precedes.isEmpty()) - modText.insert(lastHeaderLine, QLatin1String("Precedes: ") + precedes + QLatin1Char('\n')); - if (!follows.isEmpty()) - modText.insert(lastHeaderLine, QLatin1String("Follows: ") + follows + QLatin1Char('\n')); - QString moreBranches; - QStringList branches = plugin->gitClient()->synchronousBranchesForCommit( - workingDirectory, commit); - const int branchCount = branches.count(); - // If there are more than 20 branches, list first 10 followed by a hint - if (branchCount > 20) { - const int leave = 10; - moreBranches = tr(" and %1 more").arg(branchCount - leave); - branches.erase(branches.begin() + leave, branches.end()); - } - modText.insert(lastHeaderLine, QLatin1String("Branches: ") - + branches.join(QLatin1String(", ")) + moreBranches - + QLatin1Char('\n')); + } else { + const QFileInfo fi(source()); + const QString workingDirectory = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); + modText = plugin->gitClient()->extendedShowDescription(workingDirectory, modText); } break; }