Users may like to review their changes when staging by default. It is also a convenient safety feature for beginners nudging them to have a second look at their changes when composing a commit. To this end, the config variable allows to have git-add to always act like -p was passed. Signed-off-by: XZS <d.f.fischer@xxxxxx> --- The list of microproject suggestions for the Summer of Code 2016 proposed to "add configuration options for some commonly used command-line options", so I added a configuraion variable for an option I use all the time. Documentation/config.txt | 5 +++++ Documentation/git-add.txt | 3 +++ builtin/add.c | 3 +++ contrib/completion/git-completion.bash | 1 + t/t3701-add-interactive.sh | 9 +++++++++ 5 files changed, 21 insertions(+) diff --git a/Documentation/config.txt b/Documentation/config.txt index 2cd6bdd..614c599 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -752,6 +752,11 @@ add.ignore-errors (deprecated):: as it does not follow the usual naming convention for configuration variables. +add.patch:: + Configures 'git add' to always interactively choose hunks, hinting the + user to review changes before staging. This is equivalent to adding the + '--patch' option to linkgit:git-add[1]. + alias.*:: Command aliases for the linkgit:git[1] command wrapper - e.g. after defining "alias.last = cat-file commit HEAD", the invocation diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index 6a96a66..cdb6663 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -92,6 +92,9 @@ OPTIONS This effectively runs `add --interactive`, but bypasses the initial command menu and directly jumps to the `patch` subcommand. See ``Interactive mode'' for details. ++ +The configuration variable `add.patch` can be set to true to make +this the default behaviour. -e:: --edit:: diff --git a/builtin/add.c b/builtin/add.c index 145f06e..04f8b5e 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -272,6 +272,9 @@ static int add_config(const char *var, const char *value, void *cb) !strcmp(var, "add.ignore-errors")) { ignore_add_errors = git_config_bool(var, value); return 0; + } else if (!strcmp(var, "add.patch")) { + patch_interactive = git_config_bool(var, value); + return 0; } return git_default_config(var, value, cb); } diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index e3918c8..597d20f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1969,6 +1969,7 @@ _git_config () esac __gitcomp " add.ignoreErrors + add.patch advice.commitBeforeMerge advice.detachedHead advice.implicitIdentity diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index deae948..25e4b2e 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -380,4 +380,13 @@ test_expect_success 'patch mode ignores unmerged entries' ' test_cmp expected diff ' +test_expect_success 'patch mode can be activated per option' ' + git config add.patch true && + git reset --hard && + echo change >test && + echo y | git add -p > output && + cat output && + grep "Stage this hunk \[y,n,q,a,d,/,e,?\]?" output +' + test_done -- 2.7.4 -- 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