From: "Alexandr Miloslavskiy via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>,
Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v3 0/6] Add --pathspec-from-file option for reset, commit
Date: Tue, 19 Nov 2019 16:48:49 +0000 [thread overview]
Message-ID: <pull.445.v3.git.1574182135.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.445.v2.git.1573055478.gitgitgadget@gmail.com>
Changes from V2:
1) Some polishing in documentation 2) = NULL removed from
parse_pathspec_file()
Alexandr Miloslavskiy (6):
parse-options.h: add new options `--pathspec-from-file`,
`--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
Documentation/git-commit.txt | 29 ++++--
Documentation/git-reset.txt | 48 +++++++---
builtin/commit.c | 25 +++++-
builtin/reset.c | 25 +++++-
parse-options.h | 2 +
pathspec.c | 38 ++++++++
pathspec.h | 10 +++
t/t7107-reset-pathspec-file.sh | 155 ++++++++++++++++++++++++++++++++
t/t7526-commit-pathspec-file.sh | 130 +++++++++++++++++++++++++++
9 files changed, 434 insertions(+), 28 deletions(-)
create mode 100755 t/t7107-reset-pathspec-file.sh
create mode 100755 t/t7526-commit-pathspec-file.sh
base-commit: da72936f544fec5a335e66432610e4cef4430991
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-445%2FSyntevoAlex%2F%230207_pathspec_from_file-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-445/SyntevoAlex/#0207_pathspec_from_file-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/445
Range-diff vs v2:
1: 2dfaccf0d5 = 1: 19b80326ea parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
2: 96697ba072 ! 2: 55a7c6ec3c pathspec: add new function to parse file
@@ -45,7 +45,7 @@
+ strbuf_getline;
+ struct strbuf buf = STRBUF_INIT;
+ struct strbuf unquoted = STRBUF_INIT;
-+ FILE *in = NULL;
++ FILE *in;
+
+ if (!strcmp(file, "-"))
+ in = stdin;
3: f961a5155a ! 3: d9f32e523c doc: reset: unify <pathspec> description
@@ -1,8 +1,8 @@
Author: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
- doc: reset: unify <pathspec> description
+ doc: reset: synchronize <pathspec> description
- Synchronize it to `git add`, which has a pretty good description.
+ `git add` shows an example of good writing, follow it.
Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
@@ -21,18 +21,17 @@
DESCRIPTION
@@
- In the third form, set the current branch head (`HEAD`) to `<commit>`,
optionally modifying index and working tree to match.
The `<tree-ish>`/`<commit>` defaults to `HEAD` in all forms.
-+The <pathspec> is used to limit the paths affected by the operation
-+(see the entry for 'pathspec' in linkgit:gitglossary[7] for more details).
-'git reset' [-q] [<tree-ish>] [--] <paths>...::
- This form resets the index entries for all `<paths>` to their
+- state at `<tree-ish>`. (It does not affect the working tree or
+- the current branch.)
+'git reset' [-q] [<tree-ish>] [--] <pathspec>...::
-+ This form resets the index entries for all `<pathspec>` to their
- state at `<tree-ish>`. (It does not affect the working tree or
- the current branch.)
++ This form resets the index entries for all paths that match the
++ `<pathspec>` to their state at `<tree-ish>`. (It does not affect
++ the working tree or the current branch.)
+
-This means that `git reset <paths>` is the opposite of `git add
-<paths>`. This command is equivalent to
@@ -54,6 +53,20 @@
Interactively select hunks in the difference between the index
and `<tree-ish>` (defaults to `HEAD`). The chosen hunks are applied
in reverse to the index.
+@@
+ `reset.quiet` config option. `--quiet` and `--no-quiet` will
+ override the default behavior.
+
++\--::
++ Do not interpret any more arguments as options.
++
++<pathspec>...::
++ Limits the paths affected by the operation.
+++
++For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
+
+ EXAMPLES
+ --------
diff --git a/builtin/reset.c b/builtin/reset.c
--- a/builtin/reset.c
4: d72d4f16b5 ! 4: 8a10ff881b reset: support the `--pathspec-from-file` option
@@ -31,15 +31,13 @@
+In the last form, set the current branch head (`HEAD`) to `<commit>`,
optionally modifying index and working tree to match.
The `<tree-ish>`/`<commit>` defaults to `HEAD` in all forms.
- The <pathspec> is used to limit the paths affected by the operation
- (see the entry for 'pathspec' in linkgit:gitglossary[7] for more details).
'git reset' [-q] [<tree-ish>] [--] <pathspec>...::
-- This form resets the index entries for all `<pathspec>` to their
+- This form resets the index entries for all paths that match the
+'git reset' [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]::
-+ These forms reset the index entries matching pathspec to their
- state at `<tree-ish>`. (It does not affect the working tree or
- the current branch.)
++ These forms reset the index entries for all paths that match the
+ `<pathspec>` to their state at `<tree-ish>`. (It does not affect
+ the working tree or the current branch.)
+
@@
`reset.quiet` config option. `--quiet` and `--no-quiet` will
@@ -55,10 +53,12 @@
+
+--pathspec-file-nul::
+ Only meaningful with `--pathspec-from-file`. Pathspec elements are
-+ separated with NUL character and are not expected to be quoted.
++ separated with NUL character and all other characters are taken
++ literally (including newlines and quotes).
++
+ \--::
+ Do not interpret any more arguments as options.
- EXAMPLES
- --------
diff --git a/builtin/reset.c b/builtin/reset.c
--- a/builtin/reset.c
@@ -241,7 +241,7 @@
+ printf "\"file\\101.t\"" >list &&
+ # Note: "git reset" has not yet learned to fail on wrong pathspecs
+ git reset --pathspec-from-file=list --pathspec-file-nul &&
-+
++
+ cat >expect <<-\EOF &&
+ D fileA.t
+ EOF
5: 20c4495fd3 ! 5: 0b79797e77 doc: commit: unify <pathspec> description
@@ -1,8 +1,8 @@
Author: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
- doc: commit: unify <pathspec> description
+ doc: commit: synchronize <pathspec> description
- Synchronize it to `git add`, which has a pretty good description.
+ `git add` shows an example of good writing, follow it.
This also better disambiguates <file>... header.
Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
@@ -35,8 +35,7 @@
+ already added to the index. The contents of these files are also
+ staged for the next commit on top of what have been staged before.
++
-+For more details about the <pathspec> syntax, see the 'pathspec' entry
-+in linkgit:gitglossary[7].
++For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
:git-commit: 1
include::date-formats.txt[]
6: cb5fc9b14d ! 6: 7e48212002 commit: support the --pathspec-from-file option
@@ -25,10 +25,9 @@
DESCRIPTION
-----------
@@
- the last commit without committing changes that have
already been staged. If used together with `--allow-empty`
paths are also not required, and an empty commit will be created.
-+
+
+--pathspec-from-file=<file>::
+ Pathspec is passed in `<file>` instead of commandline args. If
+ `<file>` is exactly `-` then standard input is used. Pathspec
@@ -39,10 +38,12 @@
+
+--pathspec-file-nul::
+ Only meaningful with `--pathspec-from-file`. Pathspec elements are
-+ separated with NUL character and are not expected to be quoted.
-
++ separated with NUL character and all other characters are taken
++ literally (including newlines and quotes).
++
-u[<mode>]::
--untracked-files[=<mode>]::
+ Show untracked files.
diff --git a/builtin/commit.c b/builtin/commit.c
--- a/builtin/commit.c
@@ -118,7 +119,7 @@
+test_expect_success setup '
+ test_commit file0 &&
+ git tag checkpoint &&
-+
++
+ echo A >fileA.t &&
+ echo B >fileB.t &&
+ echo C >fileC.t &&
--
gitgitgadget
next prev parent reply other threads:[~2019-11-19 16:49 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-04 19:26 [PATCH 0/5] Add --pathspec-from-file option for reset, commit Alexandr Miloslavskiy via GitGitGadget
2019-11-04 19:26 ` [PATCH 1/5] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-05 15:02 ` Phillip Wood
2019-11-05 19:14 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 2/5] doc: reset: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-06 4:01 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-07 5:46 ` Junio C Hamano
2019-11-07 11:05 ` Alexandr Miloslavskiy
2019-11-08 3:04 ` Junio C Hamano
2019-11-04 19:26 ` [PATCH 3/5] reset: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-05 15:03 ` Phillip Wood
2019-11-05 19:22 ` Phillip Wood
2019-11-05 19:36 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-05 16:14 ` Phillip Wood
2019-11-05 19:37 ` Alexandr Miloslavskiy
2019-11-06 4:40 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 4/5] doc: commit: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-06 4:50 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-07 5:54 ` Junio C Hamano
2019-11-07 11:39 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 5/5] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-05 16:27 ` Phillip Wood
2019-11-05 19:42 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-12-10 10:42 ` Phillip Wood
2019-12-11 11:43 ` Alexandr Miloslavskiy
2019-12-11 14:27 ` Phillip Wood
2019-12-11 15:06 ` Alexandr Miloslavskiy
2019-12-11 16:14 ` Junio C Hamano
2019-12-11 16:20 ` Alexandr Miloslavskiy
2019-12-12 14:56 ` Alexandr Miloslavskiy
2019-11-06 4:51 ` Junio C Hamano
2019-11-06 15:51 ` [PATCH v2 0/6] Add --pathspec-from-file option for reset, commit Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 1/6] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 2/6] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-19 5:59 ` Junio C Hamano
2019-11-19 16:50 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 3/6] doc: reset: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:05 ` Junio C Hamano
2019-11-19 16:52 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 4/6] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 5/6] doc: commit: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:16 ` Junio C Hamano
2019-11-19 16:53 ` Alexandr Miloslavskiy
2019-11-19 17:02 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 6/6] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:10 ` Junio C Hamano
2019-11-19 16:56 ` Alexandr Miloslavskiy
2019-11-19 16:48 ` Alexandr Miloslavskiy via GitGitGadget [this message]
2019-11-19 16:48 ` [PATCH v3 1/6] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 2/6] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 3/6] doc: reset: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 4/6] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 5/6] doc: commit: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 6/6] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-20 4:04 ` [PATCH v3 0/6] Add --pathspec-from-file option for reset, commit Junio C Hamano
2019-11-20 9:22 ` Alexandr Miloslavskiy
2019-12-03 14:02 ` [PATCH v4 00/13] Add --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 01/13] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 02/13] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 03/13] doc: reset: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 04/13] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 05/13] doc: commit: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 06/13] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 07/13] cmd_add: prepare for next patch Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 08/13] add: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 09/13] doc: checkout: remove duplicate synopsis Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 10/13] doc: checkout: fix broken text reference Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 11/13] doc: checkout: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 12/13] doc: restore: " Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 13/13] checkout, restore: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 16:55 ` [PATCH v4 00/13] Add " Junio C Hamano
2019-12-03 17:06 ` Alexandr Miloslavskiy
2019-12-04 19:25 ` Junio C Hamano
2019-12-05 10:43 ` Alexandr Miloslavskiy
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.445.v3.git.1574182135.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=alexandr.miloslavskiy@syntevo.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).