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

[PATCH 00/16] Extend --pathspec-from-file to git add, checkout

From
AGAlexandr Miloslavskiy via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 12, 2019, 14:36 UTC
Message-ID
<pull.490.git.1576161385.gitgitgadget@gmail.com>

This topic continues the effort to support `--pathspec-from-file` in various commands [1][2]. It also includes some refactorings that I developed while working on it - previously submitted separately [3][4] which was probably a mistake.

Anatomy of the branch:
  checkout, restore: support the --pathspec-from-file option
    Extends `--pathspec-from-file` to `git checkout/restore`.
  t2024: cover more cases
    Some new tests for cases that I deemed worthy while working
    on `parse_branchname_arg()` refactoring.
  parse_branchname_arg(): refactor the decision making
  parse_branchname_arg(): update code comments
  parse_branchname_arg(): introduce expect_commit_only
  parse_branchname_arg(): easier to understand variables
    These patches prepare for `|| opts->pathspec_from_file` addition in
    `git checkout/restore` patch. Without this refactoring, I found it
    pretty hard to modify the old code.
  checkout: die() on ambiguous tracking branches
  parse_branchname_arg(): extract part as new function
    Initially I was trying to remove some inconsistency standing in the
    way of `git checkout/restore` patch. Later I figured that this change
    is worthy on its own: it prevents some pretty surprising behavior of
    git.
  doc: restore: synchronize <pathspec> description
  doc: checkout: synchronize <pathspec> description
  doc: checkout: fix broken text reference
  doc: checkout: remove duplicate synopsis
    Some polishing of docs in preparation for `git checkout/restore` patch.
  add: support the --pathspec-from-file option
  cmd_add: prepare for next patch
    Extends `--pathspec-from-file` to `git add`.
  commit: forbid --pathspec-from-file --all
  t7107, t7526: directly test parse_pathspec_file()
    Some polishing of merged topic [1].

CC'ing people who shown interest in any of the previous topics, thanks for your reviews!

[1] https://public-inbox.org/git/pull.445.git.1572895605.gitgitgadget@gmail.com/ [2] https://public-inbox.org/git/20191204203911.237056-1-emilyshaffer@google.com/ [3] https://public-inbox.org/git/pull.477.git.1574848137.gitgitgadget@gmail.com/ [4] https://public-inbox.org/git/pull.479.git.1574969538.gitgitgadget@gmail.com/

Alexandr Miloslavskiy (16):
  t7107, t7526: directly test parse_pathspec_file()
  commit: forbid --pathspec-from-file --all
  cmd_add: prepare for next patch
  add: support the --pathspec-from-file option
  doc: checkout: remove duplicate synopsis
  doc: checkout: fix broken text reference
  doc: checkout: synchronize <pathspec> description
  doc: restore: synchronize <pathspec> description
  parse_branchname_arg(): extract part as new function
  checkout: die() on ambiguous tracking branches
  parse_branchname_arg(): easier to understand variables
  parse_branchname_arg(): introduce expect_commit_only
  parse_branchname_arg(): update code comments
  parse_branchname_arg(): refactor the decision making
  t2024: cover more cases
  checkout, restore: support the --pathspec-from-file option
 Documentation/git-add.txt           |  16 +-
 Documentation/git-checkout.txt      |  50 +++--
 Documentation/git-restore.txt       |  26 ++-
 Makefile                            |   1 +
 builtin/add.c                       |  60 ++++--
 builtin/checkout.c                  | 279 ++++++++++++++--------------
 builtin/commit.c                    |   3 +
 t/helper/test-parse-pathspec-file.c |  34 ++++
 t/helper/test-tool.c                |   1 +
 t/helper/test-tool.h                |   1 +
 t/t0067-parse_pathspec_file.sh      |  89 +++++++++
 t/t2024-checkout-dwim.sh            |  55 +++++-
 t/t2026-checkout-pathspec-file.sh   |  61 ++++++
 t/t2072-restore-pathspec-file.sh    | 139 ++++++++++++++
 t/t3704-add-pathspec-file.sh        |  49 +++++
 t/t7107-reset-pathspec-file.sh      | 105 +----------
 t/t7526-commit-pathspec-file.sh     |  80 +-------
 t/t9902-completion.sh               |   2 +
 18 files changed, 694 insertions(+), 357 deletions(-)
 create mode 100644 t/helper/test-parse-pathspec-file.c
 create mode 100755 t/t0067-parse_pathspec_file.sh
 create mode 100755 t/t2026-checkout-pathspec-file.sh
 create mode 100755 t/t2072-restore-pathspec-file.sh
 create mode 100755 t/t3704-add-pathspec-file.sh
base-commit: ad05a3d8e5a6a06443836b5e40434262d992889a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-490%2FSyntevoAlex%2F%230207_pathspec_from_file_2-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-490/SyntevoAlex/#0207_pathspec_from_file_2-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/490
-- 
gitgitgadget
Next: Alexandr Miloslavskiy via GitGitGadget
Message 1 of 67 in “Extend --pathspec-from-file to git add, checkout”
  1. 00/16 Extend --pathspec-from-file to git add, checkoutAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  2. 02/16 commit: forbid --pathspec-from-file --allAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  3. Phillip WoodDec 16, 2019
  4. Alexandr MiloslavskiyDec 16, 2019
  5. 01/16 t7107, t7526: directly test parse_pathspec_file()Alexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  6. 06/16 doc: checkout: fix broken text referenceAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  7. 03/16 cmd_add: prepare for next patchAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  8. 11/16 parse_branchname_arg(): easier to understand variablesAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  9. 08/16 doc: restore: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  10. 10/16 checkout: die() on ambiguous tracking branchesAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  11. 14/16 parse_branchname_arg(): refactor the decision makingAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  12. 15/16 t2024: cover more casesAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  13. 13/16 parse_branchname_arg(): update code commentsAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  14. 09/16 parse_branchname_arg(): extract part as new functionAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  15. 16/16 checkout, restore: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  16. 12/16 parse_branchname_arg(): introduce expect_commit_onlyAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  17. 05/16 doc: checkout: remove duplicate synopsisAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  18. 04/16 add: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  19. 07/16 doc: checkout: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 12, 2019
  20. 00/18 Extend --pathspec-from-file to git add, checkoutAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  21. 02/18 t7526: add tests for error conditionsAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  22. Junio C HamanoDec 18, 2019
  23. Alexandr MiloslavskiyDec 19, 2019
  24. 04/18 commit: forbid --pathspec-from-file --allAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  25. Phillip WoodDec 17, 2019
  26. Junio C HamanoDec 18, 2019
  27. Junio C HamanoDec 18, 2019
  28. Junio C HamanoDec 18, 2019
  29. Alexandr MiloslavskiyDec 19, 2019
  30. 05/18 cmd_add: prepare for next patchAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  31. 06/18 add: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  32. 01/18 t7107, t7526: directly test parse_pathspec_file()Alexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  33. Junio C HamanoDec 18, 2019
  34. Junio C HamanoDec 19, 2019
  35. Alexandr MiloslavskiyDec 19, 2019
  36. 09/18 doc: checkout: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  37. 08/18 doc: checkout: fix broken text referenceAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  38. 13/18 parse_branchname_arg(): easier to understand variablesAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  39. 14/18 parse_branchname_arg(): introduce expect_commit_onlyAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  40. 17/18 t2024: cover more casesAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  41. 15/18 parse_branchname_arg(): update code commentsAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  42. 18/18 checkout, restore: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  43. 12/18 checkout: die() on ambiguous tracking branchesAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  44. 10/18 doc: restore: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  45. 11/18 parse_branchname_arg(): extract part as new functionAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  46. 07/18 doc: checkout: remove duplicate synopsisAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  47. 16/18 parse_branchname_arg(): refactor the decision makingAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  48. 03/18 t7107: add tests for error conditionsAlexandr Miloslavskiy via GitGitGadget, Dec 16, 2019
  49. 00/18 Extend --pathspec-from-file to git add, checkoutAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  50. 02/18 t7526: add tests for error conditionsAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  51. 01/18 t7107, t7526: directly test parse_pathspec_file()Alexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  52. 03/18 t7107: add tests for error conditionsAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  53. 04/18 commit: forbid --pathspec-from-file --allAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  54. 05/18 cmd_add: prepare for next patchAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  55. 07/18 doc: checkout: remove duplicate synopsisAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  56. 08/18 doc: checkout: fix broken text referenceAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  57. 09/18 doc: checkout: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  58. 06/18 add: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  59. 11/18 parse_branchname_arg(): extract part as new functionAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  60. 10/18 doc: restore: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  61. 13/18 parse_branchname_arg(): easier to understand variablesAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  62. 17/18 t2024: cover more casesAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  63. 16/18 parse_branchname_arg(): refactor the decision makingAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  64. 14/18 parse_branchname_arg(): simplify argument eatingAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  65. 12/18 checkout: die() on ambiguous tracking branchesAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  66. 18/18 checkout, restore: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019
  67. 15/18 parse_branchname_arg(): update code commentsAlexandr Miloslavskiy via GitGitGadget, Dec 19, 2019

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.