summaryrefslogtreecommitdiff
path: root/src/plugins/git
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-08-27 22:21:15 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-08-28 10:12:01 +0200
commit9f2110f8a187a69e8aacc274e9372ce9b1cd7ce6 (patch)
treeb06ac8b574d81e9470421d86e98abc620140ab22 /src/plugins/git
parent0865e9eb277c3cb743bc944f62f0ea188103ae52 (diff)
downloadqt-creator-9f2110f8a187a69e8aacc274e9372ce9b1cd7ce6.tar.gz
Git: Extend show output on diff editor
Change-Id: I51d3d0af96b28ec56bedaac163f9ce72158d8dc2 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/git')
-rw-r--r--src/plugins/git/gitclient.cpp34
-rw-r--r--src/plugins/git/gitclient.h2
-rw-r--r--src/plugins/git/giteditor.cpp30
3 files changed, 39 insertions, 27 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index dcd85653d8..ba38cc6e61 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 6df7e3b0df..a1b4bd5408 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 392ace9e71..7018e51eb9 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;
}