mirror of
https://github.com/git/git.git
synced 2024-11-28 04:23:30 +08:00
for-each-ref --format='%(flag)'
This expands to "symref" or "packed" or an empty string, exposing the internal "flag" the for_each_ref() callback functions are called with. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5cdd628c84
commit
88fb7f27f6
@ -71,6 +71,7 @@ static struct {
|
||||
{ "contents" },
|
||||
{ "upstream" },
|
||||
{ "symref" },
|
||||
{ "flag" },
|
||||
};
|
||||
|
||||
/*
|
||||
@ -558,6 +559,13 @@ static void grab_values(struct atom_value *val, int deref, struct object *obj, v
|
||||
}
|
||||
}
|
||||
|
||||
static inline char *copy_advance(char *dst, const char *src)
|
||||
{
|
||||
while (*src)
|
||||
*dst++ = *src++;
|
||||
return dst;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the object referred by ref, and grab needed value.
|
||||
*/
|
||||
@ -610,6 +618,20 @@ static void populate_value(struct refinfo *ref)
|
||||
continue;
|
||||
refname = branch->merge[0]->dst;
|
||||
}
|
||||
else if (!strcmp(name, "flag")) {
|
||||
char buf[256], *cp = buf;
|
||||
if (ref->flag & REF_ISSYMREF)
|
||||
cp = copy_advance(cp, ",symref");
|
||||
if (ref->flag & REF_ISPACKED)
|
||||
cp = copy_advance(cp, ",packed");
|
||||
if (cp == buf)
|
||||
v->s = "";
|
||||
else {
|
||||
*cp = '\0';
|
||||
v->s = xstrdup(buf + 1);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user