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

[PATCH 00/45] "struct pathspec" conversion and :(glob)

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Jun 9, 2013, 06:25 UTC
Message-ID
<1370759178-1709-1-git-send-email-pclouds@gmail.com>

This series finishes off "struct pathspec" conversion that was started 2 years ago when this struct was added. In the end we can pass more information down the callchain than simply a series of strings. This makes it possible to add more pathspec "magic", the :(glob) in the end of this series is an example. This also changes --literal-pathspecs slightly, to not just make the pathspec literal, but to disable all magic.

Next step: introduction of :(icase) magic for case-insensitive matching (definitely won't take another 2 years as the groundwork is pretty much done).

Nguyễn Thái Ngọc Duy (45):
  clean: remove unused variable "seen"
  Move struct pathspec and related functions to pathspec.[ch]
  pathspec: i18n-ize error strings in pathspec parsing code
  pathspec: add copy_pathspec
  Add parse_pathspec() that converts cmdline args to struct pathspec
  parse_pathspec: save original pathspec for reporting
  parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}
  Convert some get_pathspec() calls to parse_pathspec()
  parse_pathspec: a special flag for max_depth feature
  parse_pathspec: support stripping submodule trailing slashes
  parse_pathspec: support stripping/checking submodule paths
  parse_pathspec: support prefixing original patterns
  Guard against new pathspec magic in pathspec matching code
  clean: convert to use parse_pathspec
  commit: convert to use parse_pathspec
  status: convert to use parse_pathspec
  rerere: convert to use parse_pathspec
  checkout: convert to use parse_pathspec
  rm: convert to use parse_pathspec
  ls-files: convert to use parse_pathspec
  archive: convert to use parse_pathspec
  check-ignore: convert to use parse_pathspec
  add: convert to use parse_pathspec
  reset: convert to use parse_pathspec
  line-log: convert to use parse_pathspec
  Convert read_cache_preload() to take struct pathspec
  Convert run_add_interactive to use struct pathspec
  Convert unmerge_cache to take struct pathspec
  checkout: convert read_tree_some to take struct pathspec
  Convert report_path_error to take struct pathspec
  Convert refresh_index to take struct pathspec
  Convert {read,fill}_directory to take struct pathspec
  Convert add_files_to_cache to take struct pathspec
  Convert common_prefix() to use struct pathspec
  Remove diff_tree_{setup,release}_paths
  Remove init_pathspec() in favor of parse_pathspec()
  Remove match_pathspec() in favor of match_pathspec_depth()
  tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
  parse_pathspec: make sure the prefix part is wildcard-free
  parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
  Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
  pathspec: support :(literal) syntax for noglob pathspec
  pathspec: make --literal-pathspecs disable pathspec magic
  pathspec: support :(glob) syntax
  Rename field "raw" to "_raw" in struct pathspec
 Documentation/git.txt                 |  23 +-
 Documentation/glossary-content.txt    |  49 +++-
 Documentation/technical/api-setup.txt |  38 ++-
 archive.c                             |  18 +-
 archive.h                             |   4 +-
 builtin/add.c                         | 164 ++++++-------
 builtin/blame.c                       |  14 +-
 builtin/check-ignore.c                |  35 ++-
 builtin/checkout.c                    |  40 +--
 builtin/clean.c                       |  24 +-
 builtin/commit.c                      |  37 ++-
 builtin/diff-files.c                  |   2 +-
 builtin/diff-index.c                  |   2 +-
 builtin/diff.c                        |   6 +-
 builtin/grep.c                        |  10 +-
 builtin/log.c                         |   2 +-
 builtin/ls-files.c                    |  75 +++---
 builtin/ls-tree.c                     |  13 +-
 builtin/mv.c                          |  13 +-
 builtin/rerere.c                      |   8 +-
 builtin/reset.c                       |  33 ++-
 builtin/rm.c                          |  24 +-
 builtin/update-index.c                |   6 +-
 cache.h                               |  34 +--
 commit.h                              |   2 +-
 diff-lib.c                            |   3 +-
 diff.h                                |   3 +-
 dir.c                                 | 261 +++++---------------
 dir.h                                 |  18 +-
 git.c                                 |   8 +
 line-log.c                            |   2 +-
 merge-recursive.c                     |   2 +-
 notes-merge.c                         |   4 +-
 path.c                                |  15 +-
 pathspec.c                            | 442 +++++++++++++++++++++++++++++++---
 pathspec.h                            |  68 +++++-
 preload-index.c                       |  21 +-
 read-cache.c                          |   5 +-
 rerere.c                              |   7 +-
 rerere.h                              |   4 +-
 resolve-undo.c                        |   4 +-
 resolve-undo.h                        |   2 +-
 revision.c                            |  11 +-
 setup.c                               | 173 ++-----------
 t/t0008-ignores.sh                    |   8 +-
 t/t6130-pathspec-noglob.sh            |  87 +++++++
 tree-diff.c                           |  48 ++--
 tree-walk.c                           |  21 +-
 tree.c                                |   4 +-
 tree.h                                |   2 +-
 wt-status.c                           |  16 +-
 wt-status.h                           |   2 +-
 52 files changed, 1140 insertions(+), 777 deletions(-)
-- 
1.8.2.83.gc99314b
Next: Nguyễn Thái Ngọc Duy
Message 1 of 54 in “"struct pathspec" conversion and :(glob)”
  1. 00/45 "struct pathspec" conversion and :(glob)Nguyễn Thái Ngọc Duy, Jun 9, 2013
  2. 01/45 clean: remove unused variable "seen"Nguyễn Thái Ngọc Duy, Jun 9, 2013
  3. 02/45 Move struct pathspec and related functions to pathspec.[ch]Nguyễn Thái Ngọc Duy, Jun 9, 2013
  4. 03/45 pathspec: i18n-ize error strings in pathspec parsing codeNguyễn Thái Ngọc Duy, Jun 9, 2013
  5. 04/45 pathspec: add copy_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  6. Eric SunshineJun 9, 2013
  7. Junio C HamanoJun 12, 2013
  8. 05/45 Add parse_pathspec() that converts cmdline args to struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  9. Eric SunshineJun 10, 2013
  10. 06/45 parse_pathspec: save original pathspec for reportingNguyễn Thái Ngọc Duy, Jun 9, 2013
  11. 07/45 parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}Nguyễn Thái Ngọc Duy, Jun 9, 2013
  12. Eric SunshineJun 10, 2013
  13. 08/45 Convert some get_pathspec() calls to parse_pathspec()Nguyễn Thái Ngọc Duy, Jun 9, 2013
  14. 09/45 parse_pathspec: a special flag for max_depth featureNguyễn Thái Ngọc Duy, Jun 9, 2013
  15. Eric SunshineJun 10, 2013
  16. 10/45 parse_pathspec: support stripping submodule trailing slashesNguyễn Thái Ngọc Duy, Jun 9, 2013
  17. Eric SunshineJun 10, 2013
  18. 11/45 parse_pathspec: support stripping/checking submodule pathsNguyễn Thái Ngọc Duy, Jun 9, 2013
  19. 12/45 parse_pathspec: support prefixing original patternsNguyễn Thái Ngọc Duy, Jun 9, 2013
  20. Eric SunshineJun 10, 2013
  21. 13/45 Guard against new pathspec magic in pathspec matching codeNguyễn Thái Ngọc Duy, Jun 9, 2013
  22. Eric SunshineJun 10, 2013
  23. 14/45 clean: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  24. 15/45 commit: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  25. 16/45 status: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  26. 17/45 rerere: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  27. 18/45 checkout: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  28. 19/45 rm: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  29. 20/45 ls-files: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  30. 21/45 archive: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  31. 22/45 check-ignore: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  32. 23/45 add: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  33. 24/45 reset: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  34. 25/45 line-log: convert to use parse_pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  35. 26/45 Convert read_cache_preload() to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  36. 27/45 Convert run_add_interactive to use struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  37. 28/45 Convert unmerge_cache to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  38. 29/45 checkout: convert read_tree_some to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  39. 30/45 Convert report_path_error to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  40. 31/45 Convert refresh_index to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  41. 32/45 Convert {read,fill}_directory to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  42. 33/45 Convert add_files_to_cache to take struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  43. 34/45 Convert common_prefix() to use struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  44. 35/45 Remove diff_tree_{setup,release}_pathsNguyễn Thái Ngọc Duy, Jun 9, 2013
  45. 36/45 Remove init_pathspec() in favor of parse_pathspec()Nguyễn Thái Ngọc Duy, Jun 9, 2013
  46. 37/45 Remove match_pathspec() in favor of match_pathspec_depth()Nguyễn Thái Ngọc Duy, Jun 9, 2013
  47. 38/45 tree-diff: remove the use of pathspec's raw[] in follow-rename codepathNguyễn Thái Ngọc Duy, Jun 9, 2013
  48. 39/45 parse_pathspec: make sure the prefix part is wildcard-freeNguyễn Thái Ngọc Duy, Jun 9, 2013
  49. 40/45 parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGINNguyễn Thái Ngọc Duy, Jun 9, 2013
  50. 41/45 Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()Nguyễn Thái Ngọc Duy, Jun 9, 2013
  51. 42/45 pathspec: support :(literal) syntax for noglob pathspecNguyễn Thái Ngọc Duy, Jun 9, 2013
  52. 43/45 pathspec: make --literal-pathspecs disable pathspec magicNguyễn Thái Ngọc Duy, Jun 9, 2013
  53. 44/45 pathspec: support :(glob) syntaxNguyễn Thái Ngọc Duy, Jun 9, 2013
  54. 45/45 Rename field "raw" to "_raw" in struct pathspecNguyễn Thái Ngọc Duy, Jun 9, 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.