Skip to content

Commit

Permalink
[PATCH] add --missing-ok option to write-tree
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Bryan Larsen authored and Linus Torvalds committed Jul 11, 2005
1 parent ab90ea5 commit 9c1fa70
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
7 changes: 6 additions & 1 deletion Documentation/git-write-tree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ git-write-tree - Creates a tree from the current cache
SYNOPSIS
--------
'git-write-tree'
[--missing-ok]

DESCRIPTION
-----------
Expand All @@ -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.


////////////////////////////////////////////////////////////////
Expand Down
14 changes: 13 additions & 1 deletion write-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
*/
#include "cache.h"

static int missing_ok = 0;

static int check_valid_sha1(unsigned char *sha1)
{
int ret;
Expand Down Expand Up @@ -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;
Expand All @@ -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");
Expand Down

0 comments on commit 9c1fa70

Please sign in to comment.