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

[PATCH 1/1] reset: parse rev as tree-ish in patch mode

From
Nika Layzell via GitGitGadget <gitgitgadget@gmail.com>
Date
Nov 23, 2019, 19:55 UTC
Message-ID
<338c2777f711ac21a30a7f890a8a11708e9a4fa6.1574538937.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.474.git.1574538937.gitgitgadget@gmail.com>
From: Nika Layzell <nika@thelayzells.com>

Relaxes the commit requirement for the rev argument when running git-reset in patch mode without pathspec.

The revision argument to git-reset is parsed as either a commit or tree-ish depending on mode. Previously, if no pathspec was provided, the rev argument was parsed as a commit unconditionally.

Signed-off-by: Nika Layzell <nika@thelayzells.com>
---
 builtin/reset.c        | 2 +-
 t/t7105-reset-patch.sh | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/builtin/reset.c b/builtin/reset.c
index fdd572168b..5cbfb21ec4 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -320,7 +320,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 	if (unborn) {
 		/* reset on unborn branch: treat as reset to empty tree */
 		oidcpy(&oid, the_hash_algo->empty_tree);
-	} else if (!pathspec.nr) {
+	} else if (!pathspec.nr && !patch_mode) {
 		struct commit *commit;
 		if (get_oid_committish(rev, &oid))
 			die(_("Failed to resolve '%s' as a valid revision."), rev);
diff --git a/t/t7105-reset-patch.sh b/t/t7105-reset-patch.sh
index bd10a96727..2a6ecf515b 100755
--- a/t/t7105-reset-patch.sh
+++ b/t/t7105-reset-patch.sh
@@ -38,6 +38,13 @@ test_expect_success PERL 'git reset -p HEAD^' '
 	test_i18ngrep "Apply" output
 '
 
+test_expect_success PERL 'git reset -p HEAD^^{tree}' '
+	test_write_lines n y | git reset -p HEAD^^{tree} >output &&
+	verify_state dir/foo work parent &&
+	verify_saved_state bar &&
+	test_i18ngrep "Apply" output
+'
+
 # The idea in the rest is that bar sorts first, so we always say 'y'
 # first and if the path limiter fails it'll apply to bar instead of
 # dir/foo.  There's always an extra 'n' to reject edits to dir/foo in
-- 
gitgitgadget
Previous: Nika Layzell via GitGitGadgetNext: Junio C Hamano
Message 2 of 8 in “reset: parse rev as tree-ish in patch mode”
  1. 0/1 reset: parse rev as tree-ish in patch modeNika Layzell via GitGitGadget, Nov 23, 2019
  2. 1/1 reset: parse rev as tree-ish in patch modeNika Layzell via GitGitGadget, Nov 23, 2019
  3. Junio C HamanoNov 24, 2019
  4. Nika LayzellNov 24, 2019
  5. Junio C HamanoNov 25, 2019
  6. 0/1 reset: parse rev as tree-ish in patch modeNika Layzell via GitGitGadget, Nov 24, 2019
  7. 1/1 reset: parse rev as tree-ish in patch modeNika Layzell via GitGitGadget, Nov 24, 2019
  8. Junio C HamanoNov 25, 2019

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.