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

[PATCH v2 1/2] unpack-trees: add the dry_run flag to unpack_trees_options

From
Jens Lehmann <jens.lehmann@web.de>
Date
May 25, 2011, 20:07 UTC
Message-ID
<4DDD6197.7060209@web.de>
In-Reply-To
<4DDD615E.7020809@web.de>

Until now there was no way to test if unpack_trees() with update=1 would succeed without really updating the work tree. The reason for that is that setting update to 0 does skip the tests for new files and deactivates the sparse handling, thereby making that unsuitable as a dry run.

Add the new dry_run flag to struct unpack_trees_options unpack_trees(). Setting that together with the update flag will check if the work tree update would be successful without doing it for real.

The only class of problems that is not detected at the moment are file system conditions like ENOSPC or missing permissions. Also the index entries of updated files are not as they would be after a real checkout because lstat() isn't run as the files aren't updated for real.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
---
 unpack-trees.c |    4 ++--
 unpack-trees.h |    3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/unpack-trees.c b/unpack-trees.c
index 0bc4b2d..07f8364 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -203,7 +203,7 @@ static int check_updates(struct unpack_trees_options *o)

 		if (ce->ce_flags & CE_WT_REMOVE) {
 			display_progress(progress, ++cnt);
-			if (o->update)
+			if (o->update && !o->dry_run)
 				unlink_entry(ce);
 			continue;
 		}
@@ -217,7 +217,7 @@ static int check_updates(struct unpack_trees_options *o)
 		if (ce->ce_flags & CE_UPDATE) {
 			display_progress(progress, ++cnt);
 			ce->ce_flags &= ~CE_UPDATE;
-			if (o->update) {
+			if (o->update && !o->dry_run) {
 				errs |= checkout_entry(ce, &state, NULL);
 			}
 		}
diff --git a/unpack-trees.h b/unpack-trees.h
index cd11a08..64f02cb 100644
--- a/unpack-trees.h
+++ b/unpack-trees.h
@@ -46,7 +46,8 @@ struct unpack_trees_options {
 		     debug_unpack,
 		     skip_sparse_checkout,
 		     gently,
-		     show_all_errors;
+		     show_all_errors,
+		     dry_run;
 	const char *prefix;
 	int cache_bottom;
 	struct dir_struct *dir;
-- 
1.7.5.2.355.gdceb0
Previous: Jens LehmannNext: Junio C Hamano
Message 4 of 7 in “unpack-trees: add the dry_run flag to unpack_trees_options”
  1. unpack-trees: add the dry_run flag to unpack_trees_optionsJens Lehmann, May 24, 2011
  2. Junio C HamanoMay 24, 2011
  3. 0/2 Teach read-tree the -n|--dry-run optionJens Lehmann, May 25, 2011
  4. 1/2 unpack-trees: add the dry_run flag to unpack_trees_optionsJens Lehmann, May 25, 2011
  5. Junio C HamanoMay 25, 2011
  6. 2/2 Teach read-tree the -n|--dry-run optionJens Lehmann, May 25, 2011
  7. Junio C HamanoMay 25, 2011

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.