Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
unpack-trees: pass old oid to verify_clean_submodule
author
Stefan Beller
<sbeller@google.com>
Tue, 14 Mar 2017 21:46:38 +0000
(14:46 -0700)
committer
Junio C Hamano
<gitster@pobox.com>
Thu, 16 Mar 2017 21:07:16 +0000
(14:07 -0700)
The check (which uses the old oid) is yet to be implemented, but this part
is just a refactor, so it can go separately first.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
unpack-trees.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
6e3c159
)
diff --git
a/unpack-trees.c
b/unpack-trees.c
index 3a8ee19fe837aae6939c3a6b902f6b067dcde9e4..616a0ae4b23855fe5bac0019e85f0be917eba119 100644
(file)
--- a/
unpack-trees.c
+++ b/
unpack-trees.c
@@
-1407,7
+1407,8
@@
static void invalidate_ce_path(const struct cache_entry *ce,
* Currently, git does not checkout subprojects during a superproject
* checkout, so it is not going to overwrite anything.
*/
* Currently, git does not checkout subprojects during a superproject
* checkout, so it is not going to overwrite anything.
*/
-static int verify_clean_submodule(const struct cache_entry *ce,
+static int verify_clean_submodule(const char *old_sha1,
+ const struct cache_entry *ce,
enum unpack_trees_error_types error_type,
struct unpack_trees_options *o)
{
enum unpack_trees_error_types error_type,
struct unpack_trees_options *o)
{
@@
-1427,16
+1428,18
@@
static int verify_clean_subdirectory(const struct cache_entry *ce,
struct dir_struct d;
char *pathbuf;
int cnt = 0;
struct dir_struct d;
char *pathbuf;
int cnt = 0;
- unsigned char sha1[20];
- if (S_ISGITLINK(ce->ce_mode) &&
- resolve_gitlink_ref(ce->name, "HEAD", sha1) == 0) {
- /* If we are not going to update the submodule, then
+ if (S_ISGITLINK(ce->ce_mode)) {
+ unsigned char sha1[20];
+ int sub_head = resolve_gitlink_ref(ce->name, "HEAD", sha1);
+ /*
+ * If we are not going to update the submodule, then
* we don't care.
*/
* we don't care.
*/
- if (!hashcmp(sha1, ce->oid.hash))
+ if (!
sub_head && !
hashcmp(sha1, ce->oid.hash))
return 0;
return 0;
- return verify_clean_submodule(ce, error_type, o);
+ return verify_clean_submodule(sub_head ? NULL : sha1_to_hex(sha1),
+ ce, error_type, o);
}
/*
}
/*