diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index c644b4522b0..c99ef9a348b 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -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()) diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index ea947296f53..e7c3f2154ef 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -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(); diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h index 4f07d459f56..f5f5ca72247 100644 --- a/src/plugins/git/giteditor.h +++ b/src/plugins/git/giteditor.h @@ -51,6 +51,7 @@ public: void setPickaxeLineEdit(Utils::FancyLineEdit *lineEdit); QString grepValue() const; QString pickaxeValue() const; + QString authorValue() const; bool caseSensitive() const; void refresh();