git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 10/46] parse_pathspec: support stripping submodule trailing slashes

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Jul 14, 2013, 08:35 UTC
Message-ID
<1373790969-13000-11-git-send-email-pclouds@gmail.com>
In-Reply-To
<1373790969-13000-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 06778fc..1c07c23 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..5144851 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 */
+/* strip 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
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 11 of 52 in “"struct pathspec" conversion and :(glob) and :(icase)”
  1. 00/46 "struct pathspec" conversion and :(glob) and :(icase)Nguyễn Thái Ngọc Duy, Jul 14, 2013
  2. 01/46 clean: remove unused variable "seen"Nguyễn Thái Ngọc Duy, Jul 14, 2013
  3. 02/46 Move struct pathspec and related functions to pathspec.[ch]Nguyễn Thái Ngọc Duy, Jul 14, 2013
  4. 03/46 pathspec: i18n-ize error strings in pathspec parsing codeNguyễn Thái Ngọc Duy, Jul 14, 2013
  5. 04/46 pathspec: add copy_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  6. 05/46 Add parse_pathspec() that converts cmdline args to struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  7. 06/46 parse_pathspec: save original pathspec for reportingNguyễn Thái Ngọc Duy, Jul 14, 2013
  8. 07/46 parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}Nguyễn Thái Ngọc Duy, Jul 14, 2013
  9. 08/46 Convert some get_pathspec() calls to parse_pathspec()Nguyễn Thái Ngọc Duy, Jul 14, 2013
  10. 09/46 parse_pathspec: add special flag for max_depth featureNguyễn Thái Ngọc Duy, Jul 14, 2013
  11. 10/46 parse_pathspec: support stripping submodule trailing slashesNguyễn Thái Ngọc Duy, Jul 14, 2013
  12. 11/46 parse_pathspec: support stripping/checking submodule pathsNguyễn Thái Ngọc Duy, Jul 14, 2013
  13. 12/46 parse_pathspec: support prefixing original patternsNguyễn Thái Ngọc Duy, Jul 14, 2013
  14. 13/46 Guard against new pathspec magic in pathspec matching codeNguyễn Thái Ngọc Duy, Jul 14, 2013
  15. 14/46 clean: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  16. 15/46 commit: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  17. 16/46 status: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  18. 17/46 rerere: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  19. 18/46 checkout: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  20. 19/46 rm: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  21. 20/46 ls-files: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  22. 21/46 archive: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  23. 22/46 check-ignore: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  24. 23/46 add: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  25. 24/46 reset: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  26. 25/46 line-log: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  27. 26/46 Convert read_cache_preload() to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  28. 27/46 Convert run_add_interactive to use struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  29. 28/46 Convert unmerge_cache to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  30. 29/46 checkout: convert read_tree_some to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  31. 30/46 Convert report_path_error to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  32. 31/46 Convert refresh_index to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  33. 32/46 Convert {read,fill}_directory to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  34. 33/46 Convert add_files_to_cache to take struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  35. 34/46 Convert common_prefix() to use struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  36. 35/46 Remove diff_tree_{setup,release}_pathsNguyễn Thái Ngọc Duy, Jul 14, 2013
  37. 36/46 Remove init_pathspec() in favor of parse_pathspec()Nguyễn Thái Ngọc Duy, Jul 14, 2013
  38. 37/46 Remove match_pathspec() in favor of match_pathspec_depth()Nguyễn Thái Ngọc Duy, Jul 14, 2013
  39. 38/46 tree-diff: remove the use of pathspec's raw[] in follow-rename codepathNguyễn Thái Ngọc Duy, Jul 14, 2013
  40. 39/46 Rename field "raw" to "_raw" in struct pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  41. 40/46 parse_pathspec: make sure the prefix part is wildcard-freeNguyễn Thái Ngọc Duy, Jul 14, 2013
  42. 41/46 parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGINNguyễn Thái Ngọc Duy, Jul 14, 2013
  43. 42/46 Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()Nguyễn Thái Ngọc Duy, Jul 14, 2013
  44. 43/46 pathspec: support :(literal) syntax for noglob pathspecNguyễn Thái Ngọc Duy, Jul 14, 2013
  45. 44/46 pathspec: make --literal-pathspecs disable pathspec magicNguyễn Thái Ngọc Duy, Jul 14, 2013
  46. 45/46 pathspec: support :(glob) syntaxNguyễn Thái Ngọc Duy, Jul 14, 2013
  47. 46/46 parse_pathspec: accept :(icase)path syntaxNguyễn Thái Ngọc Duy, Jul 14, 2013
  48. Eric SunshineJul 14, 2013
  49. Junio C HamanoJul 15, 2013
  50. Junio C HamanoJul 15, 2013
  51. "git fmt-merge-msg" usage (was [PATCH v2 00/46] "struct pathspec" conversion and :(glob) and :(icase))Michael Haggerty, Aug 16, 2013
  52. Junio C HamanoAug 18, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.