Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Store the submodule name in struct cached_refs
author
Michael Haggerty
<mhagger@alum.mit.edu>
Fri, 12 Aug 2011 22:36:28 +0000
(
00:36
+0200)
committer
Junio C Hamano
<gitster@pobox.com>
Sun, 14 Aug 2011 22:18:52 +0000
(15:18 -0700)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
e5dbf60
)
diff --git
a/refs.c
b/refs.c
index b325fc71fe473437e84513a91dd2eb7b057cdc6f..6fd351174ae55a521f4fd9153d522cf4040e016c 100644
(file)
--- a/
refs.c
+++ b/
refs.c
@@
-157,6
+157,8
@@
static struct cached_refs {
char did_packed;
struct ref_list *loose;
struct ref_list *packed;
char did_packed;
struct ref_list *loose;
struct ref_list *packed;
+ /* The submodule name, or "" for the main repo. */
+ char name[FLEX_ARRAY];
} *cached_refs, *submodule_refs;
static struct ref_list *current_ref;
} *cached_refs, *submodule_refs;
static struct ref_list *current_ref;
@@
-181,12
+183,17
@@
static void clear_cached_refs(struct cached_refs *ca)
ca->did_loose = ca->did_packed = 0;
}
ca->did_loose = ca->did_packed = 0;
}
-struct cached_refs *create_cached_refs(
void
)
+struct cached_refs *create_cached_refs(
const char *submodule
)
{
{
+ int len;
struct cached_refs *refs;
struct cached_refs *refs;
- refs = xmalloc(sizeof(struct cached_refs));
+ if (!submodule)
+ submodule = "";
+ len = strlen(submodule) + 1;
+ refs = xmalloc(sizeof(struct cached_refs) + len);
refs->did_loose = refs->did_packed = 0;
refs->loose = refs->packed = NULL;
refs->did_loose = refs->did_packed = 0;
refs->loose = refs->packed = NULL;
+ memcpy(refs->name, submodule, len);
return refs;
}
return refs;
}
@@
-200,11
+207,11
@@
static struct cached_refs *get_cached_refs(const char *submodule)
{
if (!submodule) {
if (!cached_refs)
{
if (!submodule) {
if (!cached_refs)
- cached_refs = create_cached_refs();
+ cached_refs = create_cached_refs(
submodule
);
return cached_refs;
} else {
if (!submodule_refs)
return cached_refs;
} else {
if (!submodule_refs)
- submodule_refs = create_cached_refs();
+ submodule_refs = create_cached_refs(
submodule
);
else
/* For now, don't reuse the refs cache for submodules. */
clear_cached_refs(submodule_refs);
else
/* For now, don't reuse the refs cache for submodules. */
clear_cached_refs(submodule_refs);