* [PATCH 1/2] decorate: use "const struct object"
@ 2008-04-07 13:40 Johannes Schindelin
2008-04-07 13:41 ` [PATCH 2/2] pretty=format: Add %d to show decoration Johannes Schindelin
0 siblings, 1 reply; 4+ messages in thread
From: Johannes Schindelin @ 2008-04-07 13:40 UTC (permalink / raw)
To: git, gitster
We use the object only as key for the decoration, therefore we should
access it as const struct object.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
decorate.c | 10 +++++-----
decorate.h | 6 +++---
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/decorate.c b/decorate.c
index 23f6b00..3aee3b7 100644
--- a/decorate.c
+++ b/decorate.c
@@ -6,13 +6,13 @@
#include "object.h"
#include "decorate.h"
-static unsigned int hash_obj(struct object *obj, unsigned int n)
+static unsigned int hash_obj(const struct object *obj, unsigned int n)
{
unsigned int hash = *(unsigned int *)obj->sha1;
return hash % n;
}
-static void *insert_decoration(struct decoration *n, struct object *base, void *decoration)
+static void *insert_decoration(struct decoration *n, const struct object *base, void *decoration)
{
int size = n->size;
struct object_decoration *hash = n->hash;
@@ -47,7 +47,7 @@ static void grow_decoration(struct decoration *n)
n->nr = 0;
for (i = 0; i < old_size; i++) {
- struct object *base = old_hash[i].base;
+ const struct object *base = old_hash[i].base;
void *decoration = old_hash[i].decoration;
if (!base)
@@ -58,7 +58,7 @@ static void grow_decoration(struct decoration *n)
}
/* Add a decoration pointer, return any old one */
-void *add_decoration(struct decoration *n, struct object *obj, void *decoration)
+void *add_decoration(struct decoration *n, const struct object *obj, void *decoration)
{
int nr = n->nr + 1;
@@ -68,7 +68,7 @@ void *add_decoration(struct decoration *n, struct object *obj, void *decoration)
}
/* Lookup a decoration pointer */
-void *lookup_decoration(struct decoration *n, struct object *obj)
+void *lookup_decoration(struct decoration *n, const struct object *obj)
{
int j;
diff --git a/decorate.h b/decorate.h
index 1fa4ad9..e732804 100644
--- a/decorate.h
+++ b/decorate.h
@@ -2,7 +2,7 @@
#define DECORATE_H
struct object_decoration {
- struct object *base;
+ const struct object *base;
void *decoration;
};
@@ -12,7 +12,7 @@ struct decoration {
struct object_decoration *hash;
};
-extern void *add_decoration(struct decoration *n, struct object *obj, void *decoration);
-extern void *lookup_decoration(struct decoration *n, struct object *obj);
+extern void *add_decoration(struct decoration *n, const struct object *obj, void *decoration);
+extern void *lookup_decoration(struct decoration *n, const struct object *obj);
#endif
--
1.5.5.rc0.208.g1d50
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] pretty=format: Add %d to show decoration
2008-04-07 13:40 [PATCH 1/2] decorate: use "const struct object" Johannes Schindelin
@ 2008-04-07 13:41 ` Johannes Schindelin
2008-04-09 21:40 ` René Scharfe
2008-04-10 8:39 ` Junio C Hamano
0 siblings, 2 replies; 4+ messages in thread
From: Johannes Schindelin @ 2008-04-07 13:41 UTC (permalink / raw)
To: git, gitster
With this patch, "git log --decorate --pretty=format:%d", shows the
name decoration (i.e. whenever a commit matches a ref, that ref's name
is shown).
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
Maybe %d should expand to " (<name decoration>)" instead of
"<name decoration>"?
Documentation/pretty-formats.txt | 1 +
pretty.c | 9 +++++++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index e8bea3e..9d8a8d4 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -117,6 +117,7 @@ The placeholders are:
- '%e': encoding
- '%s': subject
- '%b': body
+- '%d': decoration (needs --decorate)
- '%Cred': switch color to red
- '%Cgreen': switch color to green
- '%Cblue': switch color to blue
diff --git a/pretty.c b/pretty.c
index 6c04176..37f7c3e 100644
--- a/pretty.c
+++ b/pretty.c
@@ -489,6 +489,15 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
return 3;
} else
return 0;
+ case 'd':
+ {
+ struct name_decoration *decoration =
+ lookup_decoration(&name_decoration,
+ &commit->object);
+ if (decoration)
+ strbuf_addstr(sb, decoration->name);
+ return 1;
+ }
}
/* these depend on the commit */
--
1.5.5.rc0.208.g1d50
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] pretty=format: Add %d to show decoration
2008-04-07 13:41 ` [PATCH 2/2] pretty=format: Add %d to show decoration Johannes Schindelin
@ 2008-04-09 21:40 ` René Scharfe
2008-04-10 8:39 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: René Scharfe @ 2008-04-09 21:40 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git, gitster
Johannes Schindelin schrieb:
> With this patch, "git log --decorate --pretty=format:%d", shows the
> name decoration (i.e. whenever a commit matches a ref, that ref's
> name is shown).
Cute idea. :)
What about objects with multiple decoration? How about producing a
comma-separated list like git-log does?
How about making %d imply --decorate? You could load the decorations
lazily when it's first encountered.
> Maybe %d should expand to " (<name decoration>)" instead of "<name
> decoration>"?
foobar2000 (http://foobar2000.org/) has a kind of music tagging
language, and one of its features might be interesting for us here: you
can group a placeholder and other stuff inside brackets. The construct
resolves to an empty string if the placeholder is NULL, i.e. in your
example "[ (%d)]" would resolve to either " (the decoration)" or "",
depending on the object having a decoration or not. (It might be a
better fit for --pretty=format: to use %[ and %].)
By the way, your patch reminds me that I wanted to add a placeholder for
git-describe's output. I doubt I'll find time for that in the near
future, though..
René
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] pretty=format: Add %d to show decoration
2008-04-07 13:41 ` [PATCH 2/2] pretty=format: Add %d to show decoration Johannes Schindelin
2008-04-09 21:40 ` René Scharfe
@ 2008-04-10 8:39 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2008-04-10 8:39 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> With this patch, "git log --decorate --pretty=format:%d", shows the
> name decoration (i.e. whenever a commit matches a ref, that ref's name
> is shown).
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>
> Maybe %d should expand to " (<name decoration>)" instead of
> "<name decoration>"?
Not necessarily. %d in --pretty="format:%h%d %s" may want to expand to
"(<name>) " instead of " (<name>)".
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-04-10 8:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-07 13:40 [PATCH 1/2] decorate: use "const struct object" Johannes Schindelin
2008-04-07 13:41 ` [PATCH 2/2] pretty=format: Add %d to show decoration Johannes Schindelin
2008-04-09 21:40 ` René Scharfe
2008-04-10 8:39 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).