git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] git-add--interactive pathspec and patch additions
@ 2007-11-23 19:20 Wincent Colaiuta
  2007-11-23 19:20 ` [PATCH 1/7] Add -q/--quiet switch to git-ls-files Wincent Colaiuta
  2007-11-23 21:07 ` [PATCH v2] git-add--interactive pathspec and patch additions Junio C Hamano
  0 siblings, 2 replies; 19+ messages in thread
From: Wincent Colaiuta @ 2007-11-23 19:20 UTC (permalink / raw)
  To: git; +Cc: gitster, peff

This is a revised series based on the feedback and suggestions
received to date. The purpose of the series is to implement these
two user-visible changes:

    1. "git-add --interactive" now takes optional pathspec parameters
       which can be used to limit the scope of an interactive session
    2. We now have "git-add --patch" which takes you straight to the
       "patch" subcommand using the given pathspecs and then exits

The series implements these changes in seven steps that apply on top of
"master"; these patches are rebased/squashed ones which *replace* the
ones sent the other day:

    1. Add -q/--quiet switch to git-ls-files

Needed because run_cmd_pipe() doesn't propagate the child exit status
and system() likes to be chatty on the standard out. Of the possible
workarounds adding this switch seems to be the cleanest and most
portable.

    2. Rename patch_update_file function to patch_update_pathspec

Merely cosmetic.

    3. Add path-limiting to git-add--interactive
    4. Bail if user supplies an invalid pathspec

For consistency with many other Git commands. It also shields us from
errors if the user starts passing funny pathspecs; eg. consider what
happens if the user passes a non-existent file "foo", and that
eventually hits git-diff-files; note how the error message changes
depending on where "foo" appears in the list:

$ git diff-files --numstat --summary --
1       0       git-commit.sh
$ git diff-files --numstat --summary -- .
1       0       git-commit.sh
$ git diff-files --numstat --summary -- . foo
error: Could not access ''
$ git diff-files --numstat --summary -- foo .
error: Could not access 'foo'
$ git diff-files --numstat --summary -- . . foo
1       0       git-commit.sh

    5. Teach builtin-add to pass path arguments to git-add--interactive
    6. Add "--patch" option to git-add--interactive
    7. Teach builtin-add to handle "--patch" option

And that's all. Here's the diff stat:

 Documentation/git-add.txt         |    9 +++++-
 Documentation/git-ls-files.txt    |    7 ++++-
 builtin-add.c                     |   28 ++++++++++++--------
 builtin-ls-files.c                |   12 ++++++++-
 commit.h                          |    2 +-
 git-add--interactive.perl         |   52 +++++++++++++++++++++++++++++++-----
 t/t3020-ls-files-error-unmatch.sh |   12 ++++++++
 7 files changed, 99 insertions(+), 23 deletions(-)

^ permalink raw reply	[flat|nested] 19+ messages in thread
* [PATCH 0/3] Updates to git-add--interactive
@ 2007-11-25 13:15 Wincent Colaiuta
  0 siblings, 0 replies; 19+ messages in thread
From: Wincent Colaiuta @ 2007-11-25 13:15 UTC (permalink / raw)
  To: git; +Cc: gitster, peff

Here's an updated series, this time hopefully with the braindead
parts removed.

[PATCH 1/3] Add "--patch" option to git-add--interactive

    Unchanged.

[PATCH 2/3] Move pathspec validation into interactive_add

    Braindeadness removed.

[PATCH 3/3] Rename patch_update_file function to patch_update_pathspec

    Only modified insofar as to make it apply on top of PATCH 2.

The one remaining issue is that pathspecs like "\*.h" don't work.
But from comments earlier on in this thread I had the impression
that they should.

They don't work because such pathspecs don't work for the underlying
git-diff-files implementation that's used by git-add--interactive:

git diff-files --numstat --summary -- \*.h

Is some alternative being proposed that would allow them to work?

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2007-11-25 13:16 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-23 19:20 [PATCH v2] git-add--interactive pathspec and patch additions Wincent Colaiuta
2007-11-23 19:20 ` [PATCH 1/7] Add -q/--quiet switch to git-ls-files Wincent Colaiuta
2007-11-23 19:20   ` [PATCH 2/7] Rename patch_update_file function to patch_update_pathspec Wincent Colaiuta
2007-11-23 19:20     ` [PATCH 3/7] Add path-limiting to git-add--interactive Wincent Colaiuta
2007-11-23 19:20       ` [PATCH 4/7] Bail if user supplies an invalid pathspec Wincent Colaiuta
2007-11-23 19:20         ` [PATCH 5/7] Teach builtin-add to pass path arguments to git-add--interactive Wincent Colaiuta
2007-11-23 19:20           ` [PATCH 6/7] Add "--patch" option " Wincent Colaiuta
2007-11-23 19:20             ` [PATCH 7/7] Teach builtin-add to handle "--patch" option Wincent Colaiuta
2007-11-23 19:25   ` [PATCH 1/7] Add -q/--quiet switch to git-ls-files Wincent Colaiuta
2007-11-23 21:07 ` [PATCH v2] git-add--interactive pathspec and patch additions Junio C Hamano
2007-11-23 22:20   ` Wincent Colaiuta
2007-11-24 12:55   ` [PATCH 0/3] Updates to git-add--interactive Wincent Colaiuta
2007-11-24 12:55     ` [PATCH 1/3] Rename patch_update_file function to patch_update_pathspec Wincent Colaiuta
2007-11-24 12:55       ` [PATCH 2/3] Move pathspec validation into interactive_add Wincent Colaiuta
2007-11-24 12:55         ` [PATCH 3/3] Add "--patch" option to git-add--interactive Wincent Colaiuta
2007-11-24 19:15         ` [PATCH 2/3] Move pathspec validation into interactive_add Junio C Hamano
2007-11-24 21:50           ` Wincent Colaiuta
2007-11-24 22:34             ` Junio C Hamano
  -- strict thread matches above, loose matches on Subject: below --
2007-11-25 13:15 [PATCH 0/3] Updates to git-add--interactive Wincent Colaiuta

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 NNTP newsgroup(s).