From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 10/45] parse_pathspec: support stripping submodule trailing slashes
Date: Sun, 9 Jun 2013 13:25:43 +0700 [thread overview]
Message-ID: <1370759178-1709-11-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1370759178-1709-1-git-send-email-pclouds@gmail.com>
This flag is equivalent to builtin/ls-files.c:strip_trailing_slashes()
and is intended to replace that function when ls-files is converted to
use parse_pathspec.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
pathspec.c | 9 +++++++++
pathspec.h | 2 ++
2 files changed, 11 insertions(+)
diff --git a/pathspec.c b/pathspec.c
index a352ef1..e3c8339 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -205,6 +205,15 @@ static unsigned prefix_pathspec(struct pathspec_item *item,
*raw = item->match = match;
item->original = elt;
item->len = strlen(item->match);
+
+ if ((flags & PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP) &&
+ (item->len >= 1 && item->match[item->len - 1] == '/') &&
+ (i = cache_name_pos(item->match, item->len - 1)) >= 0 &&
+ S_ISGITLINK(active_cache[i]->ce_mode)) {
+ item->len--;
+ match[item->len] = '\0';
+ }
+
if (limit_pathspec_to_literal())
item->nowildcard_len = item->len;
else
diff --git a/pathspec.h b/pathspec.h
index aa98597..7935b26 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -31,6 +31,8 @@ struct pathspec {
#define PATHSPEC_PREFER_CWD (1<<0) /* No args means match cwd */
#define PATHSPEC_PREFER_FULL (1<<1) /* No args means match everything */
#define PATHSPEC_MAXDEPTH_VALID (1<<2) /* max_depth field is valid */
+/* stripping the trailing slash if the given path is a gitlink */
+#define PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP (1<<3)
extern int init_pathspec(struct pathspec *, const char **);
extern void parse_pathspec(struct pathspec *pathspec,
--
1.8.2.83.gc99314b
next prev parent reply other threads:[~2013-06-09 6:26 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 6:25 [PATCH 00/45] "struct pathspec" conversion and :(glob) Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 01/45] clean: remove unused variable "seen" Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 02/45] Move struct pathspec and related functions to pathspec.[ch] Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 03/45] pathspec: i18n-ize error strings in pathspec parsing code Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 04/45] pathspec: add copy_pathspec Nguyễn Thái Ngọc Duy
2013-06-09 7:58 ` Eric Sunshine
2013-06-12 18:07 ` Junio C Hamano
2013-06-09 6:25 ` [PATCH 05/45] Add parse_pathspec() that converts cmdline args to struct pathspec Nguyễn Thái Ngọc Duy
2013-06-10 1:24 ` Eric Sunshine
2013-06-09 6:25 ` [PATCH 06/45] parse_pathspec: save original pathspec for reporting Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 07/45] parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} Nguyễn Thái Ngọc Duy
2013-06-10 1:29 ` Eric Sunshine
2013-06-09 6:25 ` [PATCH 08/45] Convert some get_pathspec() calls to parse_pathspec() Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 09/45] parse_pathspec: a special flag for max_depth feature Nguyễn Thái Ngọc Duy
2013-06-10 1:34 ` Eric Sunshine
2013-06-09 6:25 ` Nguyễn Thái Ngọc Duy [this message]
2013-06-10 1:36 ` [PATCH 10/45] parse_pathspec: support stripping submodule trailing slashes Eric Sunshine
2013-06-09 6:25 ` [PATCH 11/45] parse_pathspec: support stripping/checking submodule paths Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 12/45] parse_pathspec: support prefixing original patterns Nguyễn Thái Ngọc Duy
2013-06-10 1:41 ` Eric Sunshine
2013-06-09 6:25 ` [PATCH 13/45] Guard against new pathspec magic in pathspec matching code Nguyễn Thái Ngọc Duy
2013-06-10 1:53 ` Eric Sunshine
2013-06-09 6:25 ` [PATCH 14/45] clean: convert to use parse_pathspec Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 15/45] commit: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 16/45] status: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 17/45] rerere: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 18/45] checkout: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 19/45] rm: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 20/45] ls-files: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 21/45] archive: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 22/45] check-ignore: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 23/45] add: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 24/45] reset: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 25/45] line-log: " Nguyễn Thái Ngọc Duy
2013-06-09 6:25 ` [PATCH 26/45] Convert read_cache_preload() to take struct pathspec Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 27/45] Convert run_add_interactive to use " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 28/45] Convert unmerge_cache to take " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 29/45] checkout: convert read_tree_some " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 30/45] Convert report_path_error " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 31/45] Convert refresh_index " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 32/45] Convert {read,fill}_directory " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 33/45] Convert add_files_to_cache " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 34/45] Convert common_prefix() to use " Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 35/45] Remove diff_tree_{setup,release}_paths Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 36/45] Remove init_pathspec() in favor of parse_pathspec() Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 37/45] Remove match_pathspec() in favor of match_pathspec_depth() Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 38/45] tree-diff: remove the use of pathspec's raw[] in follow-rename codepath Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 39/45] parse_pathspec: make sure the prefix part is wildcard-free Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 40/45] parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 41/45] Kill limit_pathspec_to_literal() as it's only used by parse_pathspec() Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 42/45] pathspec: support :(literal) syntax for noglob pathspec Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 43/45] pathspec: make --literal-pathspecs disable pathspec magic Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 44/45] pathspec: support :(glob) syntax Nguyễn Thái Ngọc Duy
2013-06-09 6:26 ` [PATCH 45/45] Rename field "raw" to "_raw" in struct pathspec Nguyễn Thái Ngọc Duy
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=1370759178-1709-11-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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).