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

[PATCH 3/4] add --missing-ok option to write-tree

From
Bryan Larsen <bryanlarsen@yahoo.com>
Date
Jul 11, 2005, 03:53 UTC
Message-ID
<20050711035338.22229.47651.sendpatchset@bryan-larsens-ibook-g4.local>
In-Reply-To
<20050711035305.22229.87752.sendpatchset@bryan-larsens-ibook-g4.local>
Add --missing-ok option to git-write.tree.  This option allows a write-tree even if the referenced objects are not in the database.
Signed-off-by: Bryan Larsen <bryan.larsen@gmail.com>
---
diff --git a/Documentation/git-write-tree.txt b/Documentation/git-write-tree.txt
--- a/Documentation/git-write-tree.txt
+++ b/Documentation/git-write-tree.txt
@@ -10,6 +10,7 @@ git-write-tree - Creates a tree from the
 SYNOPSIS
 --------
 'git-write-tree'
+		[--missing-ok]
 
 DESCRIPTION
 -----------
@@ -23,7 +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
+-------
+--missing-ok::
+	Normally "git-write-tree" ensures that the objects referenced by the
+	directory exist in the object database.  This option disables this check.
 
 
 ////////////////////////////////////////////////////////////////
diff --git a/write-tree.c b/write-tree.c
--- a/write-tree.c
+++ b/write-tree.c
@@ -5,6 +5,8 @@
  */
 #include "cache.h"
 
+static int missing_ok = 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 (!missing_ok && 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], "--missing-ok"))
+			missing_ok = 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");
Previous: Bryan LarsenNext: Bryan Larsen
Message 4 of 5 in “add write-tree --missing OK, fix cogito -N options”
  1. 0/4 add write-tree --missing OK, fix cogito -N optionsBryan Larsen, Jul 11, 2005
  2. 1/4 bugfix for cg-init: ARGVBryan Larsen, Jul 11, 2005
  3. 2/4 bugfix for cg-init -N: pass -N to cg-commitBryan Larsen, Jul 11, 2005
  4. 3/4 add --missing-ok option to write-treeBryan Larsen, Jul 11, 2005
  5. 4/4 switch cg-commit -N to use --missing-ok instead of --no-checkBryan Larsen, Jul 11, 2005

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.