Git: Support filtering log entries by author

+ quote arguments with potential spaces.

Change-Id: Ifd1bfecd7c30d145592432dff76c72024d2b1426
Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
Orgad Shaneh
2021-12-10 13:02:13 +02:00
committed by Orgad Shaneh
parent a3af941adf
commit 32d3fa755e
3 changed files with 22 additions and 3 deletions

View File

@@ -44,6 +44,7 @@
#include <utils/algorithm.h>
#include <utils/checkablemessagebox.h>
#include <utils/commandline.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
@@ -1137,15 +1138,19 @@ void GitClient::log(const FilePath &workingDirectory, const QString &fileName,
if (!arguments.contains(graphOption) && !arguments.contains(patchOption))
arguments << normalLogArguments();
const QString authorValue = editor->authorValue();
if (!authorValue.isEmpty())
arguments << "--author=" + ProcessArgs::quoteArg(authorValue);
const QString grepValue = editor->grepValue();
if (!grepValue.isEmpty())
arguments << "--grep=" + grepValue;
arguments << "--grep=" + ProcessArgs::quoteArg(grepValue);
const QString pickaxeValue = editor->pickaxeValue();
if (!pickaxeValue.isEmpty())
arguments << "-S" << pickaxeValue;
arguments << "-S" << ProcessArgs::quoteArg(pickaxeValue);
if ((!grepValue.isEmpty() || !pickaxeValue.isEmpty()) && !editor->caseSensitive())
if (!editor->caseSensitive())
arguments << "-i";
if (!fileName.isEmpty())

View File

@@ -88,12 +88,17 @@ public:
pickaxeLineEdit = addLineEdit(tr("Filter by content"),
tr("Filter log entries by added or removed string."),
editor);
authorLineEdit = addLineEdit(tr("Filter by author"),
tr("Filter log entries by author."),
editor);
addWidget(new QLabel(tr("Filter:")));
addSeparator();
addWidget(grepLineEdit);
addSeparator();
addWidget(pickaxeLineEdit);
addSeparator();
addWidget(authorLineEdit);
addSeparator();
caseAction = new QAction(tr("Case Sensitive"), this);
caseAction->setCheckable(true);
caseAction->setChecked(true);
@@ -105,6 +110,7 @@ public:
Utils::FancyLineEdit *grepLineEdit;
Utils::FancyLineEdit *pickaxeLineEdit;
Utils::FancyLineEdit *authorLineEdit;
QAction *caseAction;
};
@@ -395,6 +401,13 @@ QString GitEditorWidget::pickaxeValue() const
return m_logFilterWidget->pickaxeLineEdit->text();
}
QString GitEditorWidget::authorValue() const
{
if (!m_logFilterWidget)
return QString();
return m_logFilterWidget->authorLineEdit->text();
}
bool GitEditorWidget::caseSensitive() const
{
return m_logFilterWidget && m_logFilterWidget->caseAction->isChecked();

View File

@@ -51,6 +51,7 @@ public:
void setPickaxeLineEdit(Utils::FancyLineEdit *lineEdit);
QString grepValue() const;
QString pickaxeValue() const;
QString authorValue() const;
bool caseSensitive() const;
void refresh();