projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-diff: do not turn off -p/-M with any diff options.
[git.git]
/
write-tree.c
diff --git
a/write-tree.c
b/write-tree.c
index
b8bf883
..
2b2c6b7
100644
(file)
--- a/
write-tree.c
+++ b/
write-tree.c
@@
-5,16
+5,17
@@
*/
#include "cache.h"
*/
#include "cache.h"
+static int missing_ok = 0;
+
static int check_valid_sha1(unsigned char *sha1)
{
static int check_valid_sha1(unsigned char *sha1)
{
- char *filename = sha1_file_name(sha1);
int ret;
/* If we were anal, we'd check that the sha1 of the contents actually matches */
int ret;
/* If we were anal, we'd check that the sha1 of the contents actually matches */
- ret =
access(filename, R_OK
);
- if (ret)
- perror(
filename
);
- return ret;
+ ret =
has_sha1_file(sha1
);
+ if (ret
== 0
)
+ perror(
sha1_file_name(sha1)
);
+ return ret
? 0 : -1
;
}
static int write_tree(struct cache_entry **cachep, int maxentries, const char *base, int baselen, unsigned char *returnsha1)
}
static int write_tree(struct cache_entry **cachep, int maxentries, const char *base, int baselen, unsigned char *returnsha1)
@@
-62,7
+63,7
@@
static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
sha1 = subdir_sha1;
}
sha1 = subdir_sha1;
}
- if (check_valid_sha1(sha1) < 0)
+ if (
!missing_ok &&
check_valid_sha1(sha1) < 0)
exit(1);
entrylen = pathlen - baselen;
exit(1);
entrylen = pathlen - baselen;
@@
-87,6
+88,16
@@
int main(int argc, char **argv)
int i, funny;
int entries = read_cache();
unsigned char sha1[20];
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");
if (entries < 0)
die("git-write-tree: error reading cache");