projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
repo-config: deconvolute logics
[git.git]
/
write-tree.c
diff --git
a/write-tree.c
b/write-tree.c
index
a794ea1
..
dcad6e6
100644
(file)
--- a/
write-tree.c
+++ b/
write-tree.c
@@
-4,6
+4,9
@@
* Copyright (C) Linus Torvalds, 2005
*/
#include "cache.h"
* Copyright (C) Linus Torvalds, 2005
*/
#include "cache.h"
+#include "tree.h"
+
+static int missing_ok = 0;
static int check_valid_sha1(unsigned char *sha1)
{
static int check_valid_sha1(unsigned char *sha1)
{
@@
-61,7
+64,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;
@@
-76,16
+79,31
@@
static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
nr++;
}
nr++;
}
- write_sha1_file(buffer, offset,
"tree"
, returnsha1);
+ write_sha1_file(buffer, offset,
tree_type
, returnsha1);
free(buffer);
return nr;
}
free(buffer);
return nr;
}
+static const char write_tree_usage[] = "git-write-tree [--missing-ok]";
+
int main(int argc, char **argv)
{
int i, funny;
int main(int argc, char **argv)
{
int i, funny;
- int entries
= read_cache()
;
+ int entries;
unsigned char sha1[20];
unsigned char sha1[20];
+
+ setup_git_directory();
+
+ entries = read_cache();
+ if (argc == 2) {
+ if (!strcmp(argv[1], "--missing-ok"))
+ missing_ok = 1;
+ else
+ die(write_tree_usage);
+ }
+
+ 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");
@@
-94,7
+112,7
@@
int main(int argc, char **argv)
funny = 0;
for (i = 0; i < entries; i++) {
struct cache_entry *ce = active_cache[i];
funny = 0;
for (i = 0; i < entries; i++) {
struct cache_entry *ce = active_cache[i];
- if (
ntohs(ce->ce_flags) & ~CE_NAMEMASK
) {
+ if (
ce_stage(ce)
) {
if (10 < ++funny) {
fprintf(stderr, "...\n");
break;
if (10 < ++funny) {
fprintf(stderr, "...\n");
break;