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

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

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 25, 2014, 18:12 UTC
Message-ID
<1398449567-16314-11-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1398449567-16314-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 8c047ef..95f5485 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 a97363c..68cdef1 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_BOOL(0, "cached", &cached,
 			N_("apply a patch without touching the working tree")),
+		OPT_BOOL(0, "work", &work,
+			N_("modify the working tree")),
 		OPT_BOOL(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.9.2+fc1.2.gfbaae8c
Previous: Felipe ContrerasNext: Felipe Contreras
Message 11 of 16 in “Officially start moving to the term 'staging area'”
  1. 00/14 Officially start moving to the term 'staging area'Felipe Contreras, Apr 25, 2014
  2. 01/14 Add proper 'stage' commandFelipe Contreras, Apr 25, 2014
  3. 02/14 stage: add edit commandFelipe Contreras, Apr 25, 2014
  4. 03/14 diff: document --stagedFelipe Contreras, Apr 25, 2014
  5. 04/14 grep: add --staged optionFelipe Contreras, Apr 25, 2014
  6. 05/14 rm: add --staged optionFelipe Contreras, Apr 25, 2014
  7. 06/14 stash: add --stage option to saveFelipe Contreras, Apr 25, 2014
  8. 07/14 stash: add --stage to pop and applyFelipe Contreras, Apr 25, 2014
  9. 08/14 submodule: add --staged optionsFelipe Contreras, Apr 25, 2014
  10. 09/14 apply: add --stage optionFelipe Contreras, Apr 25, 2014
  11. 10/14 apply: add --work, --no-work optionsFelipe Contreras, Apr 25, 2014
  12. 11/14 completion: update --staged optionsFelipe Contreras, Apr 25, 2014
  13. 12/14 reset: add --stage and --work optionsFelipe Contreras, Apr 25, 2014
  14. 13/14 reset: allow --keep with --stageFelipe Contreras, Apr 25, 2014
  15. 14/14 completion: update 'git reset' new stage optionsFelipe Contreras, Apr 25, 2014
  16. Hilco WijbengaApr 26, 2014

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.