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

[PATCH 8/9] apply: add --work, --no-work options

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Aug 29, 2013, 18:14 UTC
Message-ID
<1377800080-5309-9-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1377800080-5309-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 18 of 58 in “Officially start moving to the term 'staging area'”
  1. Felipe ContrerasAug 29, 2013
  2. 0/2 stage: proper 'stage' commandFelipe Contreras, Aug 29, 2013
  3. 1/2 Add proper 'stage' commandFelipe Contreras, Aug 29, 2013
  4. Matthieu MoyAug 29, 2013
  5. Felipe ContrerasAug 29, 2013
  6. 2/2 stage: add edit commandFelipe Contreras, Aug 29, 2013
  7. Matthieu MoyAug 29, 2013
  8. Felipe ContrerasAug 29, 2013
  9. 0/9 Add --stage and --work optionsFelipe Contreras, Aug 29, 2013
  10. 1/9 diff: document --stagedFelipe Contreras, Aug 29, 2013
  11. 2/9 grep: add --staged optionFelipe Contreras, Aug 29, 2013
  12. 3/9 rm: add --staged optionFelipe Contreras, Aug 29, 2013
  13. 4/9 stash: add --stage option to saveFelipe Contreras, Aug 29, 2013
  14. Matthieu MoyAug 29, 2013
  15. 5/9 stash: add --stage to pop and applyFelipe Contreras, Aug 29, 2013
  16. 6/9 submodule: add --staged optionsFelipe Contreras, Aug 29, 2013
  17. 7/9 apply: add --stage optionFelipe Contreras, Aug 29, 2013
  18. 8/9 apply: add --work, --no-work optionsFelipe Contreras, Aug 29, 2013
  19. 9/9 completion: update --staged optionsFelipe Contreras, Aug 29, 2013
  20. 0/3 reset: refactor into --stage and --workFelipe Contreras, Aug 29, 2013
  21. 1/3 reset: add --stage and --work optionsFelipe Contreras, Aug 29, 2013
  22. 2/3 reset: allow --keep with --stageFelipe Contreras, Aug 29, 2013
  23. 3/3 completion: update 'git reset' new stage optionsFelipe Contreras, Aug 29, 2013
  24. Junio C HamanoAug 29, 2013
  25. Felipe ContrerasAug 29, 2013
  26. Felipe ContrerasAug 30, 2013
  27. Felipe ContrerasAug 30, 2013
  28. Felipe ContrerasAug 30, 2013
  29. Felipe ContrerasAug 30, 2013
  30. Drew NorthupAug 29, 2013
  31. Felipe ContrerasAug 29, 2013
  32. Drew NorthupSep 4, 2013
  33. Felipe ContrerasSep 8, 2013
  34. Piotr KrukowieckiAug 30, 2013
  35. Drew NorthupSep 4, 2013
  36. Piotr KrukowieckiSep 4, 2013
  37. Drew NorthupSep 4, 2013
  38. Felipe ContrerasSep 8, 2013
  39. Felipe ContrerasSep 8, 2013
  40. Felipe ContrerasSep 8, 2013
  41. Philip OakleySep 8, 2013
  42. Felipe ContrerasSep 8, 2013
  43. Matthieu MoyAug 29, 2013
  44. Felipe ContrerasAug 29, 2013
  45. Matthieu MoyAug 29, 2013
  46. Matthieu MoyAug 29, 2013
  47. René ScharfeAug 29, 2013
  48. Felipe ContrerasAug 29, 2013
  49. René ScharfeAug 31, 2013
  50. Felipe ContrerasAug 31, 2013
  51. David AguilarSep 1, 2013
  52. Matthieu MoyAug 29, 2013
  53. William SwansonSep 4, 2013
  54. Ping YinSep 6, 2013
  55. Hilco WijbengaSep 6, 2013
  56. Felipe ContrerasSep 8, 2013
  57. Ramkumar RamachandraSep 9, 2013
  58. Felipe ContrerasSep 9, 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.