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

[PATCH v5 1/7] reset: do not accept a mixed reset in a .git dir

From
Christian Couder <chriscool@tuxfamily.org>
Date
Dec 12, 2009, 04:32 UTC
Message-ID
<20091212043259.3930.98779.chriscool@tuxfamily.org>
In-Reply-To
<20091212042042.3930.54783.chriscool@tuxfamily.org>

It is strange and fragile that a mixed reset is disallowed in a bare repo but is allowed in a .git dir. So this patch simplifies things by only allowing soft resets when not in a working tree.

This patch is also needed to speed up "git reset" by using unpack_tree() directly (instead of execing "git read-tree"). A following patch will do just that.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 builtin-reset.c       |    3 +--
 t/t7103-reset-bare.sh |    4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/builtin-reset.c b/builtin-reset.c
index 11d1c6e..14bdb03 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -286,8 +286,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 	if (reset_type == NONE)
 		reset_type = MIXED; /* by default */
 
-	if ((reset_type == HARD || reset_type == MERGE)
-	    && !is_inside_work_tree())
+	if (reset_type != SOFT && !is_inside_work_tree())
 		die("%s reset requires a work tree",
 		    reset_type_names[reset_type]);
 
diff --git a/t/t7103-reset-bare.sh b/t/t7103-reset-bare.sh
index 68041df..13344b2 100755
--- a/t/t7103-reset-bare.sh
+++ b/t/t7103-reset-bare.sh
@@ -21,8 +21,8 @@ test_expect_success 'merge reset requires a worktree' '
 	 test_must_fail git reset --merge)
 '
 
-test_expect_success 'mixed reset is ok' '
-	(cd .git && git reset)
+test_expect_success 'mixed reset requires a worktree' '
+	(cd .git && test_must_fail git reset)
 '
 
 test_expect_success 'soft reset is ok' '
-- 
1.6.6.rc1.8.gd33ec
Previous: Christian CouderNext: Junio C Hamano
Message 2 of 18 in “"git reset --merge" related improvements”
  1. 0/7 "git reset --merge" related improvementsChristian Couder, Dec 12, 2009
  2. 1/7 reset: do not accept a mixed reset in a .git dirChristian Couder, Dec 12, 2009
  3. Junio C HamanoDec 12, 2009
  4. Christian CouderDec 15, 2009
  5. Junio C HamanoDec 15, 2009
  6. Junio C HamanoDec 15, 2009
  7. Christian CouderDec 16, 2009
  8. Junio C HamanoDec 15, 2009
  9. 2/7 reset: add a few tests for "git reset --merge"Christian Couder, Dec 12, 2009
  10. Junio C HamanoDec 12, 2009
  11. 3/7 reset: use "unpack_trees()" directly instead of "git read-tree"Christian Couder, Dec 12, 2009
  12. Junio C HamanoDec 12, 2009
  13. 4/7 reset: add option "--keep" to "git reset"Christian Couder, Dec 12, 2009
  14. Junio C HamanoDec 12, 2009
  15. Christian CouderDec 30, 2009
  16. 5/7 reset: add test cases for "--keep" optionChristian Couder, Dec 12, 2009
  17. 6/7 Documentation: reset: describe new "--keep" optionChristian Couder, Dec 12, 2009
  18. 7/7 Documentation: reset: add some tables to describe the different optionsChristian Couder, Dec 12, 2009

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.