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

[RFC PATCH v2 4/4] read-tree: add --no-sparse to turn off sparse hook

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Aug 10, 2009, 15:19 UTC
Message-ID
<1249917562-5931-5-git-send-email-pclouds@gmail.com>
In-Reply-To
<1249917562-5931-4-git-send-email-pclouds@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-read-tree.c         |    4 +++-
 t/t1009-read-tree-sparse.sh |    6 ++++++
 unpack-trees.c              |    6 ++++--
 unpack-trees.h              |    1 +
 4 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/builtin-read-tree.c b/builtin-read-tree.c
index 9c2d634..4c1061e 100644
--- a/builtin-read-tree.c
+++ b/builtin-read-tree.c
@@ -31,7 +31,7 @@ static int list_tree(unsigned char *sha1)
 }
 
 static const char * const read_tree_usage[] = {
-	"git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]]  [--index-output=<file>] <tree-ish1> [<tree-ish2> [<tree-ish3>]]",
+	"git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse] [--index-output=<file>] <tree-ish1> [<tree-ish2> [<tree-ish3>]]",
 	NULL
 };
 
@@ -98,6 +98,8 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
 		  PARSE_OPT_NONEG, exclude_per_directory_cb },
 		OPT_SET_INT('i', NULL, &opts.index_only,
 			    "don't check the working tree after merging", 1),
+		OPT_SET_INT(0, "no-sparse", &opts.no_sparse_hook,
+			    "do not run sparse hook", 1),
 		OPT_END()
 	};
 
diff --git a/t/t1009-read-tree-sparse.sh b/t/t1009-read-tree-sparse.sh
index b613a89..18115b1 100755
--- a/t/t1009-read-tree-sparse.sh
+++ b/t/t1009-read-tree-sparse.sh
@@ -39,4 +39,10 @@ test_expect_success 're-add one' '
 	test -f one
 '
 
+test_expect_success 'read-tree --no-sparse' '
+	make_hook "git update-index --assume-unchanged one"
+	git read-tree -u -m --no-sparse HEAD &&
+	test -f one
+'
+
 test_done
diff --git a/unpack-trees.c b/unpack-trees.c
index f407bf5..d087112 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -530,8 +530,10 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 	if (o->trivial_merges_only && o->nontrivial_merge)
 		return unpack_failed(o, "Merge requires file-level merging");
 
-	if (run_sparse_hook(o))
-		return unpack_failed(o, NULL);
+	if (!o->no_sparse_hook) {
+		if (run_sparse_hook(o))
+			return unpack_failed(o, NULL);
+	}
 
 	o->src_index = NULL;
 	ret = check_updates(o) ? (-2) : 0;
diff --git a/unpack-trees.h b/unpack-trees.h
index ad21823..81eb2ef 100644
--- a/unpack-trees.h
+++ b/unpack-trees.h
@@ -30,6 +30,7 @@ struct unpack_trees_options {
 		     skip_unmerged,
 		     initial_checkout,
 		     diff_index_cached,
+		     no_sparse_hook,
 		     gently;
 	const char *prefix;
 	int pos;
-- 
1.6.3.GIT
Previous: Nguyễn Thái Ngọc DuyNext: Johannes Schindelin
Message 5 of 19 in “Sparse checkout”
  1. 0/4 Sparse checkoutNguyễn Thái Ngọc Duy, Aug 10, 2009
  2. 1/4 Prevent diff machinery from examining assume-unchanged entries on worktreeNguyễn Thái Ngọc Duy, Aug 10, 2009
  3. 2/4 gitignore: read from index if .gitignore is assume-unchangedNguyễn Thái Ngọc Duy, Aug 10, 2009
  4. 3/4 unpack_trees(): add support for sparse checkoutNguyễn Thái Ngọc Duy, Aug 10, 2009
  5. 4/4 read-tree: add --no-sparse to turn off sparse hookNguyễn Thái Ngọc Duy, Aug 10, 2009
  6. Johannes SchindelinAug 10, 2009
  7. Nguyen Thai Ngoc DuyAug 11, 2009
  8. Junio C HamanoAug 11, 2009
  9. Johannes SchindelinAug 11, 2009
  10. Nguyen Thai Ngoc DuyAug 11, 2009
  11. Johannes SchindelinAug 10, 2009
  12. Nguyen Thai Ngoc DuyAug 11, 2009
  13. Johannes SchindelinAug 11, 2009
  14. Johannes SchindelinAug 10, 2009
  15. Nguyen Thai Ngoc DuyAug 11, 2009
  16. Johannes SchindelinAug 11, 2009
  17. Johannes SchindelinAug 10, 2009
  18. Nguyen Thai Ngoc DuyAug 11, 2009
  19. Johannes SchindelinAug 11, 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.