path: root/builtin/add.c
diff options
authorJohannes Schindelin <>2019-12-21 21:57:14 (GMT)
committerJunio C Hamano <>2019-12-22 00:06:22 (GMT)
commit52628f94fc35f57f0b3c54e4f849e490bfa44449 (patch)
treecd1bf248d529e9f6e609b1cf3c1c985cbe7bd2c0 /builtin/add.c
parent6610e4628ac12396efc20201fe85d67591bed247 (diff)
built-in add -p: implement the "checkout" patch modes
This patch teaches the built-in `git add -p` machinery all the tricks it needs to know in order to act as the work horse for `git checkout -p`. Apart from the minor changes (slightly reworded messages, different `diff` and `apply --check` invocations), it requires a new function to actually apply the changes, as `git checkout -p` is a bit special in that respect: when the desired changes do not apply to the index, but apply to the work tree, Git does not fail straight away, but asks the user whether to apply the changes to the worktree at least. Signed-off-by: Johannes Schindelin <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'builtin/add.c')
1 files changed, 3 insertions, 2 deletions
diff --git a/builtin/add.c b/builtin/add.c
index fa8bf6b..191856b 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -206,9 +206,10 @@ int run_add_interactive(const char *revision, const char *patch_mode,
mode = ADD_P_STASH;
else if (!strcmp(patch_mode, "--patch=reset"))
mode = ADD_P_RESET;
+ else if (!strcmp(patch_mode, "--patch=checkout"))
+ mode = ADD_P_CHECKOUT;
- die("'%s' not yet supported in the built-in add -p",
- patch_mode);
+ die("'%s' not supported", patch_mode);
return !!run_add_p(the_repository, mode, revision, pathspec);