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