projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hash-object.c: type-fix to squelch compiler warnings.
[git.git]
/
write-tree.c
diff --git
a/write-tree.c
b/write-tree.c
index
e3c0a02
..
0aac32f
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;
@@
-85,11
+86,24
@@
static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
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("unknown option %s", argv[1]);
+ }
+
+ if (argc > 2)
+ die("too many options");
if (entries < 0)
if (entries < 0)
- die("write-tree: error reading cache");
+ die("
git-
write-tree: error reading cache");
/* Verify that the tree is merged */
funny = 0;
/* Verify that the tree is merged */
funny = 0;
@@
-104,7
+118,7
@@
int main(int argc, char **argv)
}
}
if (funny)
}
}
if (funny)
- die("write-tree: not able to write tree");
+ die("
git-
write-tree: not able to write tree");
/* Also verify that the cache does not have path and path/file
* at the same time. At this point we know the cache has only
/* Also verify that the cache does not have path and path/file
* at the same time. At this point we know the cache has only
@@
-131,11
+145,11
@@
int main(int argc, char **argv)
}
}
if (funny)
}
}
if (funny)
- die("write-tree: not able to write tree");
+ die("
git-
write-tree: not able to write tree");
/* Ok, write it out */
if (write_tree(active_cache, entries, "", 0, sha1) != entries)
/* Ok, write it out */
if (write_tree(active_cache, entries, "", 0, sha1) != entries)
- die("write-tree: internal error");
+ die("
git-
write-tree: internal error");
printf("%s\n", sha1_to_hex(sha1));
return 0;
}
printf("%s\n", sha1_to_hex(sha1));
return 0;
}