git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH try2 10/14] apply: add --work, --no-work options

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Oct 12, 2013, 07:04 UTC
Message-ID
<1381561488-20294-5-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1381561488-20294-1-git-send-email-felipe.contreras@gmail.com>

'git apply', 'git apply --index', 'git apply --cached' do different things, but what they do is not precisely clear, specially since no other commands has similar distinctions.

With --no-work (--work being the default), it's clear what the option would do; modify, or not, the working directory.

So, --work (the default), doesn't cause any changes, and --no-work enables the current --cache if used with --index.

Eventually --work might replace --cache, if these options are standarized in the whole git toolset.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 Documentation/git-apply.txt | 6 +++++-
 builtin/apply.c             | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-apply.txt b/Documentation/git-apply.txt
index ce44327..6167061 100644
--- a/Documentation/git-apply.txt
+++ b/Documentation/git-apply.txt
@@ -16,7 +16,7 @@ SYNOPSIS
 	  [--ignore-space-change | --ignore-whitespace ]
 	  [--whitespace=(nowarn|warn|fix|error|error-all)]
 	  [--exclude=<path>] [--include=<path>] [--directory=<root>]
-	  [--verbose] [<patch>...]
+	  [--verbose] [--no-work] [<patch>...]
 
 DESCRIPTION
 -----------
@@ -75,6 +75,10 @@ OPTIONS
 	cached data, apply the patch, and store the result in the index
 	without using the working tree. This implies `--index`.
 
+--[no-]work::
+	Apply a patch with or without touching the working tree, essentially
+	`--no-work` plus `--index` are the equivalent of `--cached`.
+
 -3::
 --3way::
 	When the patch does not apply cleanly, fall back on 3-way merge if
diff --git a/builtin/apply.c b/builtin/apply.c
index 42b5a4b..a3dd89d 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4350,6 +4350,7 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
 	int errs = 0;
 	int is_not_gitdir = !startup_info->have_repository;
 	int force_apply = 0;
+	int work = 1;
 
 	const char *whitespace_option = NULL;
 
@@ -4381,6 +4382,8 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
 			N_("make sure the patch is applicable to the current index")),
 		OPT_BOOLEAN(0, "cached", &cached,
 			N_("apply a patch without touching the working tree")),
+		OPT_BOOLEAN(0, "work", &work,
+			N_("modify the working tree")),
 		OPT_BOOLEAN(0, "apply", &force_apply,
 			N_("also apply the patch (use with --stat/--summary/--check)")),
 		OPT_BOOL('3', "3way", &threeway,
@@ -4433,6 +4436,8 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
 	argc = parse_options(argc, argv, prefix, builtin_apply_options,
 			apply_usage, 0);
 
+	if (check_index && !work)
+		cached = 1;
 	if (apply_with_reject && threeway)
 		die("--reject and --3way cannot be used together.");
 	if (cached && threeway)
-- 
1.8.4-fc
Previous: Felipe ContrerasNext: Felipe Contreras
Message 5 of 21 in “completion: update 'git reset' new stage options”
  1. 14/14 completion: update 'git reset' new stage optionsFelipe Contreras, Oct 12, 2013
  2. 04/14 grep: add --staged optionFelipe Contreras, Oct 12, 2013
  3. 07/14 stash: add --stage to pop and applyFelipe Contreras, Oct 12, 2013
  4. 00/14 Officially start moving to the term 'staging area'Felipe Contreras, Oct 12, 2013
  5. 10/14 apply: add --work, --no-work optionsFelipe Contreras, Oct 12, 2013
  6. 01/14 Add proper 'stage' commandFelipe Contreras, Oct 12, 2013
  7. Eric SunshineOct 14, 2013
  8. Felipe ContrerasOct 14, 2013
  9. 09/14 apply: add --stage optionFelipe Contreras, Oct 12, 2013
  10. Eric SunshineOct 13, 2013
  11. Felipe ContrerasOct 13, 2013
  12. Miles BaderOct 13, 2013
  13. Felipe ContrerasOct 13, 2013
  14. 03/14 diff: document --stagedFelipe Contreras, Oct 12, 2013
  15. 05/14 rm: add --staged optionFelipe Contreras, Oct 12, 2013
  16. 02/14 stage: add edit commandFelipe Contreras, Oct 12, 2013
  17. 13/14 reset: allow --keep with --stageFelipe Contreras, Oct 12, 2013
  18. 12/14 reset: add --stage and --work optionsFelipe Contreras, Oct 12, 2013
  19. 08/14 submodule: add --staged optionsFelipe Contreras, Oct 12, 2013
  20. 11/14 completion: update --staged optionsFelipe Contreras, Oct 12, 2013
  21. 06/14 stash: add --stage option to saveFelipe Contreras, Oct 12, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.