From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
pawel.sikora@agmk.net, Jens.Lehmann@web.de,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 2/9] Convert some match_pathspec_depth() to dir_path_match()
Date: Fri, 24 Jan 2014 20:40:29 +0700 [thread overview]
Message-ID: <1390570836-20394-3-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1390570836-20394-1-git-send-email-pclouds@gmail.com>
This helps reduce the number of match_pathspec_depth() call sites and
show how m_p_d() is used. And it usage is:
- match against an index entry (ce_path_match or match_pathspec_depth
in ls-files)
- match against a dir_entry from read_directory (dir_path_match and
match_pathspec_depth in clean.c, which will be converted later)
- resolve-undo (rerere.c and ls-files.c)
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/add.c | 3 +--
builtin/grep.c | 4 +---
builtin/ls-files.c | 2 +-
dir.h | 7 +++++++
wt-status.c | 4 ++--
5 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/builtin/add.c b/builtin/add.c
index 2a2722f..672adc0 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -208,8 +208,7 @@ static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec,
i = dir->nr;
while (--i >= 0) {
struct dir_entry *entry = *src++;
- if (match_pathspec_depth(pathspec, entry->name, entry->len,
- prefix, seen))
+ if (dir_path_match(entry, pathspec, prefix, seen))
*dst++ = entry;
else if (flag & WARN_IMPLICIT_DOT)
/*
diff --git a/builtin/grep.c b/builtin/grep.c
index 3d924c2..69ac2d8 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -524,9 +524,7 @@ static int grep_directory(struct grep_opt *opt, const struct pathspec *pathspec,
fill_directory(&dir, pathspec);
for (i = 0; i < dir.nr; i++) {
- const char *name = dir.entries[i]->name;
- int namelen = strlen(name);
- if (!match_pathspec_depth(pathspec, name, namelen, 0, NULL))
+ if (!dir_path_match(dir.entries[i], pathspec, 0, NULL))
continue;
hit |= grep_file(opt, dir.entries[i]->name);
if (hit && opt->status_only)
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index e1cf6d8..e238608 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -64,7 +64,7 @@ static void show_dir_entry(const char *tag, struct dir_entry *ent)
if (len >= ent->len)
die("git ls-files: internal error - directory entry not superset of prefix");
- if (!match_pathspec_depth(&pathspec, ent->name, ent->len, len, ps_matched))
+ if (!dir_path_match(ent, &pathspec, len, ps_matched))
return;
fputs(tag, stdout);
diff --git a/dir.h b/dir.h
index 42793e5..65f54b6 100644
--- a/dir.h
+++ b/dir.h
@@ -212,4 +212,11 @@ static inline int ce_path_match(const struct cache_entry *ce,
return match_pathspec_depth(pathspec, ce->name, ce_namelen(ce), 0, seen);
}
+static inline int dir_path_match(const struct dir_entry *ent,
+ const struct pathspec *pathspec,
+ int prefix, char *seen)
+{
+ return match_pathspec_depth(pathspec, ent->name, ent->len, prefix, seen);
+}
+
#endif
diff --git a/wt-status.c b/wt-status.c
index 295c09e..a452407 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -552,7 +552,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
for (i = 0; i < dir.nr; i++) {
struct dir_entry *ent = dir.entries[i];
if (cache_name_is_other(ent->name, ent->len) &&
- match_pathspec_depth(&s->pathspec, ent->name, ent->len, 0, NULL))
+ dir_path_match(ent, &s->pathspec, 0, NULL))
string_list_insert(&s->untracked, ent->name);
free(ent);
}
@@ -560,7 +560,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
for (i = 0; i < dir.ignored_nr; i++) {
struct dir_entry *ent = dir.ignored[i];
if (cache_name_is_other(ent->name, ent->len) &&
- match_pathspec_depth(&s->pathspec, ent->name, ent->len, 0, NULL))
+ dir_path_match(ent, &s->pathspec, 0, NULL))
string_list_insert(&s->ignored, ent->name);
free(ent);
}
--
1.8.5.2.240.g8478abd
next prev parent reply other threads:[~2014-01-24 13:35 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-20 18:25 problematic git log submodule-dir/ Paweł Sikora
2014-01-22 20:35 ` Jens Lehmann
2014-01-22 23:56 ` Duy Nguyen
2014-01-23 13:22 ` [PATCH 1/2] tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting() Nguyễn Thái Ngọc Duy
2014-01-23 13:22 ` [PATCH 2/2] t4010: match_pathspec_depth() and trailing slash after submodule Nguyễn Thái Ngọc Duy
2014-01-23 21:09 ` Junio C Hamano
2014-01-23 21:25 ` Jens Lehmann
2014-01-23 21:38 ` Junio C Hamano
2014-01-24 5:48 ` Duy Nguyen
2014-01-24 13:40 ` [PATCH v2 0/9] About the trailing slashes Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 1/9] Convert some match_pathspec_depth() to ce_path_match() Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` Nguyễn Thái Ngọc Duy [this message]
2014-01-24 13:40 ` [PATCH v2 3/9] Rename match_pathspec_depth() to match_pathspec() Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 4/9] dir.c: prepare match_pathspec_item for taking more flags Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 5/9] match_pathspec: match pathspec "foo/" against directory "foo" Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 6/9] Pass directory indicator to match_pathspec_item() Nguyễn Thái Ngọc Duy
2014-01-24 21:22 ` Eric Sunshine
2014-01-25 4:24 ` Duy Nguyen
2014-01-24 13:40 ` [PATCH v2 7/9] clean: replace match_pathspec() with dir_path_match() Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 8/9] clean: use cache_name_is_other() Nguyễn Thái Ngọc Duy
2014-01-24 13:40 ` [PATCH v2 9/9] tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting() Nguyễn Thái Ngọc Duy
2014-01-24 19:22 ` [PATCH v2 0/9] About the trailing slashes Junio C Hamano
2014-01-25 1:14 ` Duy Nguyen
2014-01-27 22:47 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1390570836-20394-3-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pawel.sikora@agmk.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).