Browse Source

[PATCH] add --missing-ok option to 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>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
maint
Bryan Larsen 20 years ago committed by Linus Torvalds
parent
commit
9c1fa70aaa
  1. 7
      Documentation/git-write-tree.txt
  2. 14
      write-tree.c

7
Documentation/git-write-tree.txt

@ -10,6 +10,7 @@ git-write-tree - Creates a tree from the current cache @@ -10,6 +10,7 @@ git-write-tree - Creates a tree from the current cache
SYNOPSIS
--------
'git-write-tree'
[--missing-ok]

DESCRIPTION
-----------
@ -23,7 +24,11 @@ In order to have that match what is actually in your directory right @@ -23,7 +24,11 @@ In order to have that match what is actually in your directory right
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.


////////////////////////////////////////////////////////////////

14
write-tree.c

@ -5,6 +5,8 @@ @@ -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 **cachep, int maxentries, const char *b @@ -61,7 +63,7 @@ static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
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) @@ -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");

Loading…
Cancel
Save