forked from qt-creator/qt-creator
VCS: Add 'Blame current revision' in blame context menu
Internal change: added decorateVersion() function for decorating a revision. This is called for both the current version and previous ones Change-Id: I8b23fd628c9db01b005c19d46580979c5a21c687 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
committed by
Tobias Hunger
parent
6f7ae05d69
commit
3c342a49dc
@@ -1070,29 +1070,11 @@ bool GitClient::synchronousParentRevisions(const QString &workingDirectory,
|
||||
// Short SHA1, author, subject
|
||||
static const char defaultShortLogFormatC[] = "%h (%an \"%s\")";
|
||||
|
||||
bool GitClient::synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
QString *description, QString *errorMessage)
|
||||
QString GitClient::synchronousShortDescription(const QString &workingDirectory, const QString &revision)
|
||||
{
|
||||
// Short SHA 1, author, subject
|
||||
return synchronousShortDescription(workingDirectory, revision,
|
||||
QLatin1String(defaultShortLogFormatC),
|
||||
description, errorMessage);
|
||||
}
|
||||
|
||||
// Convenience working on a list of revisions
|
||||
bool GitClient::synchronousShortDescriptions(const QString &workingDirectory, const QStringList &revisions,
|
||||
QStringList *descriptions, QString *errorMessage)
|
||||
{
|
||||
descriptions->clear();
|
||||
foreach (const QString &revision, revisions) {
|
||||
QString description;
|
||||
if (!synchronousShortDescription(workingDirectory, revision, &description, errorMessage)) {
|
||||
descriptions->clear();
|
||||
return false;
|
||||
}
|
||||
descriptions->push_back(description);
|
||||
}
|
||||
return true;
|
||||
QLatin1String(defaultShortLogFormatC));
|
||||
}
|
||||
|
||||
static inline QString msgCannotDetermineBranch(const QString &workingDirectory, const QString &why)
|
||||
@@ -1161,10 +1143,10 @@ bool GitClient::synchronousTopRevision(const QString &workingDirectory, QString
|
||||
}
|
||||
|
||||
// Format an entry in a one-liner for selection list using git log.
|
||||
bool GitClient::synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
const QString &format, QString *description,
|
||||
QString *errorMessage)
|
||||
QString GitClient::synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
const QString &format)
|
||||
{
|
||||
QString description;
|
||||
QByteArray outputTextData;
|
||||
QByteArray errorText;
|
||||
QStringList arguments;
|
||||
@@ -1173,13 +1155,15 @@ bool GitClient::synchronousShortDescription(const QString &workingDirectory, con
|
||||
<< QLatin1String("--max-count=1") << revision;
|
||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputTextData, &errorText);
|
||||
if (!rc) {
|
||||
*errorMessage = tr("Cannot describe revision \"%1\" in \"%2\": %3").arg(revision, workingDirectory, commandOutputFromLocal8Bit(errorText));
|
||||
return false;
|
||||
VcsBase::VcsBaseOutputWindow *outputWindow = VcsBase::VcsBaseOutputWindow::instance();
|
||||
outputWindow->appendSilently(tr("Cannot describe revision \"%1\" in \"%2\": %3")
|
||||
.arg(revision, workingDirectory, commandOutputFromLocal8Bit(errorText)));
|
||||
return QString();
|
||||
}
|
||||
*description = commandOutputFromLocal8Bit(outputTextData);
|
||||
if (description->endsWith(QLatin1Char('\n')))
|
||||
description->truncate(description->size() - 1);
|
||||
return true;
|
||||
description = commandOutputFromLocal8Bit(outputTextData);
|
||||
if (description.endsWith(QLatin1Char('\n')))
|
||||
description.truncate(description.size() - 1);
|
||||
return description;
|
||||
}
|
||||
|
||||
// Create a default message to be used for describing stashes
|
||||
|
||||
@@ -160,12 +160,9 @@ public:
|
||||
const QString &revision,
|
||||
QStringList *parents,
|
||||
QString *errorMessage);
|
||||
bool synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
QString *description, QString *errorMessage);
|
||||
bool synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
const QString &format, QString *description, QString *errorMessage);
|
||||
bool synchronousShortDescriptions(const QString &workingDirectory, const QStringList &revisions,
|
||||
QStringList *descriptions, QString *errorMessage);
|
||||
QString synchronousShortDescription(const QString &workingDirectory, const QString &revision);
|
||||
QString synchronousShortDescription(const QString &workingDirectory, const QString &revision,
|
||||
const QString &format);
|
||||
bool synchronousTopRevision(const QString &workingDirectory, QString *revision = 0,
|
||||
QString *branch = 0, QString *errorMessage = 0);
|
||||
|
||||
|
||||
@@ -227,6 +227,15 @@ void GitEditor::commandFinishedGotoLine(bool ok, int /* exitCode */, const QVari
|
||||
}
|
||||
}
|
||||
|
||||
QString GitEditor::decorateVersion(const QString &revision) const
|
||||
{
|
||||
const QFileInfo fi(source());
|
||||
const QString workingDirectory = fi.absolutePath();
|
||||
|
||||
// Format verbose, SHA1 being first token
|
||||
return GitPlugin::instance()->gitClient()->synchronousShortDescription(workingDirectory, revision);
|
||||
}
|
||||
|
||||
QStringList GitEditor::annotationPreviousVersions(const QString &revision) const
|
||||
{
|
||||
QStringList revisions;
|
||||
@@ -240,13 +249,7 @@ QStringList GitEditor::annotationPreviousVersions(const QString &revision) const
|
||||
VcsBase::VcsBaseOutputWindow::instance()->appendSilently(errorMessage);
|
||||
return QStringList();
|
||||
}
|
||||
// Format verbose, SHA1 being first token
|
||||
QStringList descriptions;
|
||||
if (!client->synchronousShortDescriptions(workingDirectory, revisions, &descriptions, &errorMessage)) {
|
||||
VcsBase::VcsBaseOutputWindow::instance()->appendSilently(errorMessage);
|
||||
return QStringList();
|
||||
}
|
||||
return descriptions;
|
||||
return revisions;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -63,6 +63,7 @@ private:
|
||||
virtual VcsBase::DiffHighlighter *createDiffHighlighter() const;
|
||||
virtual VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
|
||||
virtual QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
|
||||
virtual QString decorateVersion(const QString &revision) const;
|
||||
virtual QStringList annotationPreviousVersions(const QString &revision) const;
|
||||
|
||||
mutable QRegExp m_changeNumberPattern8;
|
||||
|
||||
Reference in New Issue
Block a user