Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
receive-pack: treat namespace .have lines like alternates
author
Jeff King
<peff@peff.net>
Wed, 8 Feb 2017 20:53:16 +0000
(15:53 -0500)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 8 Feb 2017 23:39:55 +0000
(15:39 -0800)
Namely, de-duplicate them. We use the same set as the
alternates, since we call them both ".have" (i.e., there is
no value in showing one versus the other).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
fea6c47
)
diff --git
a/builtin/receive-pack.c
b/builtin/receive-pack.c
index 1821ad5fa62ddcce41b16416fb63e77cb35a3b47..c23b0cce8607e8361a603cc23803eed6562b85cd 100644
(file)
--- a/
builtin/receive-pack.c
+++ b/
builtin/receive-pack.c
@@
-251,8
+251,9
@@
static void show_ref(const char *path, const unsigned char *sha1)
}
static int show_ref_cb(const char *path_full, const struct object_id *oid,
}
static int show_ref_cb(const char *path_full, const struct object_id *oid,
- int flag, void *
unused
)
+ int flag, void *
data
)
{
{
+ struct oidset *seen = data;
const char *path = strip_namespace(path_full);
if (ref_is_hidden(path, path_full))
const char *path = strip_namespace(path_full);
if (ref_is_hidden(path, path_full))
@@
-263,8
+264,11
@@
static int show_ref_cb(const char *path_full, const struct object_id *oid,
* refs, so that the client can use them to minimize data
* transfer but will otherwise ignore them.
*/
* refs, so that the client can use them to minimize data
* transfer but will otherwise ignore them.
*/
- if (!path)
+ if (!path) {
+ if (oidset_insert(seen, oid))
+ return 0;
path = ".have";
path = ".have";
+ }
show_ref(path, oid->hash);
return 0;
}
show_ref(path, oid->hash);
return 0;
}
@@
-287,7
+291,7
@@
static void write_head_info(void)
for_each_alternate_ref(show_one_alternate_ref, &seen);
oidset_clear(&seen);
for_each_alternate_ref(show_one_alternate_ref, &seen);
oidset_clear(&seen);
- for_each_ref(show_ref_cb,
NULL
);
+ for_each_ref(show_ref_cb,
&seen
);
if (!sent_capabilities)
show_ref("capabilities^{}", null_sha1);
if (!sent_capabilities)
show_ref("capabilities^{}", null_sha1);