aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitgrep.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2016-12-09 13:33:12 +0100
committerEike Ziller <eike.ziller@qt.io>2017-02-28 10:48:23 +0000
commit1f8b2dc3610635f019b7fef8192171f4e085f814 (patch)
tree3611fc53841940069d7adc70a42865c781932b4a /src/plugins/git/gitgrep.cpp
parent99a6d78bba07a40a8407f1b7ba44b57f7da1983e (diff)
Advanced search: Add exclusion patterns
All files with full file path matching one of the exclusion patterns are ignored in the search. Searching with "git grep" now requires git >= 1.9 Change-Id: Ied5d11499bc1ff21247e50f8e146e8e5011dd2c1 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git/gitgrep.cpp')
-rw-r--r--src/plugins/git/gitgrep.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp
index c391fe1a4a2..3c0096921f0 100644
--- a/src/plugins/git/gitgrep.cpp
+++ b/src/plugins/git/gitgrep.cpp
@@ -35,6 +35,7 @@
#include <vcsbase/vcscommand.h>
#include <vcsbase/vcsbaseconstants.h>
+#include <utils/algorithm.h>
#include <utils/asconst.h>
#include <utils/fancylineedit.h>
#include <utils/filesearch.h>
@@ -159,7 +160,14 @@ public:
arguments << params.ref;
m_ref = params.ref + ':';
}
- arguments << "--" << m_parameters.nameFilters;
+ const QStringList filterArgs =
+ m_parameters.nameFilters.isEmpty() ? QStringList("*") // needed for exclusion filters
+ : m_parameters.nameFilters;
+ const QStringList exclusionArgs =
+ Utils::transform(m_parameters.exclusionFilters, [](const QString &filter) {
+ return QString(":!" + filter);
+ });
+ arguments << "--" << filterArgs << exclusionArgs;
QScopedPointer<VcsCommand> command(GitPlugin::client()->createCommand(m_directory));
command->addFlags(VcsCommand::SilentOutput | VcsCommand::SuppressFailMessage);
command->setProgressiveOutput(true);