提交 9c1fa70a 编写于 作者: B Bryan Larsen 提交者: Linus Torvalds

[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: NBryan Larsen <bryan.larsen@gmail.com>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 ab90ea5d
......@@ -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
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.
////////////////////////////////////////////////////////////////
......
......@@ -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
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");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册