git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / Atom feed
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
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

  parent reply index

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-04 19:26 [PATCH 0/5] " 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

git@vger.kernel.org list mirror (unofficial, one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Example config snippet for mirrors

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git