projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'dg/subtree-fixes'
[git.git]
/
upload-pack.c
diff --git
a/upload-pack.c
b/upload-pack.c
index 6142421ea1172f7fe6b57486a4f41b81d92bab85..7c05b15e68d6deed45a172df397e814fcf2032b0 100644
(file)
--- a/
upload-pack.c
+++ b/
upload-pack.c
@@
-603,6
+603,8
@@
static void receive_needs(void)
object = parse_object(sha1);
if (!object)
die("did not find object for %s", line);
object = parse_object(sha1);
if (!object)
die("did not find object for %s", line);
+ if (object->type != OBJ_COMMIT)
+ die("invalid shallow object %s", sha1_to_hex(sha1));
object->flags |= CLIENT_SHALLOW;
add_object_array(object, NULL, &shallows);
continue;
object->flags |= CLIENT_SHALLOW;
add_object_array(object, NULL, &shallows);
continue;
@@
-670,10
+672,17
@@
static void receive_needs(void)
if (depth == 0 && shallows.nr == 0)
return;
if (depth > 0) {
if (depth == 0 && shallows.nr == 0)
return;
if (depth > 0) {
- struct commit_list *result
, *backup
;
+ struct commit_list *result
= NULL, *backup = NULL
;
int i;
int i;
- backup = result = get_shallow_commits(&want_obj, depth,
- SHALLOW, NOT_SHALLOW);
+ if (depth == INFINITE_DEPTH)
+ for (i = 0; i < shallows.nr; i++) {
+ struct object *object = shallows.objects[i].item;
+ object->flags |= NOT_SHALLOW;
+ }
+ else
+ backup = result =
+ get_shallow_commits(&want_obj, depth,
+ SHALLOW, NOT_SHALLOW);
while (result) {
struct object *object = &result->item->object;
if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) {
while (result) {
struct object *object = &result->item->object;
if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) {