Skip to contentSkip to conversation

add --no-check option to git-write-tree

PATCH In review Bryan Larsen 2 participants 2 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 add --no-check option to git-write-tree

Add --no-check option to git-write-tree.

---

 Documentation/git-write-tree.txt |    6 ++++++
 write-tree.c                     |   14 +++++++++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)
Documentation/git-write-tree.txt +6 -0
@@ -10,6 +10,7 @@ git-write-tree - Creates a tree from the
 SYNOPSIS
 --------
 'git-write-tree'
+		[--no-check]
 
 DESCRIPTION
 -----------
@@ -23,6 +24,11 @@ In order to have that match what is actu
 now, you need to have done a "git-update-cache" phase before you did the
 "git-write-tree".
 
+OPTIONS
+-------
+--no-check::
+	Normally "git-write-tree" ensures that the objects referenced by the
+	directory exist in the object database.  This option disabled this check.
 
 
 
write-tree.c +13 -1
@@ -5,6 +5,8 @@
  */
 #include "cache.h"
 
+static int no_check = 0;
+
 static int check_valid_sha1(unsigned char *sha1)
 {
 	int ret;
@@ -61,7 +63,7 @@ static int write_tree(struct cache_entry
 			sha1 = subdir_sha1;
 		}
 
-		if (check_valid_sha1(sha1) < 0)
+		if (!no_check && check_valid_sha1(sha1) < 0)
 			exit(1);
 
 		entrylen = pathlen - baselen;
@@ -86,6 +88,16 @@ int main(int argc, char **argv)
 	int i, funny;
 	int entries = read_cache();
 	unsigned char sha1[20];
+	
+	if (argc==2) {
+		if (!strcmp(argv[1], "--no-check"))
+			no_check = 1;
+		else
+			die("unknown option %s", argv[1]);
+	}
+	
+	if (argc>2)
+		die("too many options");
 
 	if (entries < 0)
 		die("git-write-tree: error reading cache");

#1 lore raw
Quoted 2 lines · Bryan Larsen

Add --no-check option to git-write-tree.

I like almost all of these patches (well, the ones relevant to core git, I'll not speak for Pasky on cogito), although I'd actually prefer your "index_fd()" info-only flag to work the other way around: make it a flag to say whether to update the object directory or not (ie "0" means info only, and "1" means the current "update object directory" - and name it accordingly, of course).

However, your mailer - apparently

	User-Agent: Mozilla Thunderbird 1.0.2 (Macintosh/20050317)

is totally broken and does strange white-space corruption, so none of the patches would apply.

So can you fix that up and re-send (and cc me on the git part)?

Linus