Add support for annotation of any given revision

- Parent commits are also accessible from Annotate context menu
- The client functionality was added in `fossil v2.4`

Change-Id: Ia6096432cb1151388b5aebca30a6d25c1c6079f4
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Artur Shepilko
2018-07-16 12:25:41 -05:00
parent b1e1cdef86
commit 88e11284ea
7 changed files with 111 additions and 25 deletions

View File

@@ -124,8 +124,48 @@ QString FossilEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) const
return QString();
}
QString FossilEditorWidget::decorateVersion(const QString &revision) const
{
static const int shortChangesetIdSize(10);
static const int maxTextSize(120);
VcsBase::BaseAnnotationHighlighter *FossilEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
const QFileInfo fi(source());
const QString workingDirectory = fi.absolutePath();
FossilClient *client = FossilPlugin::instance()->client();
RevisionInfo revisionInfo =
client->synchronousRevisionQuery(workingDirectory, revision, true);
// format: 'revision (committer "comment...")'
QString output = revision.left(shortChangesetIdSize)
+ " (" + revisionInfo.committer
+ " \"" + revisionInfo.commentMsg.left(maxTextSize);
if (output.size() > maxTextSize) {
output.truncate(maxTextSize - 3);
output.append("...");
}
output.append("\")");
return output;
}
QStringList FossilEditorWidget::annotationPreviousVersions(const QString &revision) const
{
QStringList revisions;
const QFileInfo fi(source());
const QString workingDirectory = fi.absolutePath();
FossilClient *client = FossilPlugin::instance()->client();
RevisionInfo revisionInfo =
client->synchronousRevisionQuery(workingDirectory, revision);
if (revisionInfo.parentId.isEmpty())
return QStringList();
revisions.append(revisionInfo.parentId);
revisions.append(revisionInfo.mergeParentIds);
return revisions;
}
VcsBase::BaseAnnotationHighlighter *FossilEditorWidget::createAnnotationHighlighter(
const QSet<QString> &changes) const
{
return new FossilAnnotationHighlighter(changes);
}