[PATCH v2] git-add--interactive pathspec and patch additions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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(-)

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux