On Tue, Jun 4, 2013 at 7:35 PM, Ramkumar Ramachandra artag...@gmail.com wrote:
Use get_pretty_userformat() to interpret the --pretty string. This
means that leading you can now reference a format specified in a pretty.*
configuration variable as an argument to 'git for-each-ref --pretty='.
There are two caveats:
1. A leading format: or tformat: is automatically stripped and
ignored. Separator semantics are not configurable (yet).
2. No built-in formats are available. The ones specified in
pretty-formats (oneline, short etc) don't make sense when displaying
refs anyway.
I spoke too early about the concern with this patch. At first it
looked like you replace default formats with config keys. But nope,
this is brilliant.
Signed-off-by: Ramkumar Ramachandra artag...@gmail.com
---
Documentation/git-for-each-ref.txt | 3 +++
builtin/for-each-ref.c | 16 +---
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/Documentation/git-for-each-ref.txt
b/Documentation/git-for-each-ref.txt
index 05ff7ba..7f3cba5 100644
--- a/Documentation/git-for-each-ref.txt
+++ b/Documentation/git-for-each-ref.txt
@@ -60,6 +60,9 @@ calculated.
+
Caveats:
+0. No built-in formats from PRETTY FORMATS (like oneline, short) are
+ available.
+
1. Many of the placeholders in PRETTY FORMATS are designed to work
specifically on commit objects: when non-commit objects are
supplied, those placeholders won't work.
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
index edaa6b2..c00ab05 100644
--- a/builtin/for-each-ref.c
+++ b/builtin/for-each-ref.c
@@ -1146,7 +1146,7 @@ int cmd_for_each_ref(int argc, const char **argv, const
char *prefix)
int num_refs;
const char *default_format = %(objectname)
%(objecttype)\t%(refname);
const char *format = default_format;
- const char *pretty = NULL;
+ const char *pretty_raw = NULL, *pretty_userformat = NULL;
struct ref_sort *sort = NULL, **sort_tail = sort;
int maxcount = 0, quote_style = 0;
struct refinfo **refs;
@@ -1165,13 +1165,15 @@ int cmd_for_each_ref(int argc, const char **argv,
const char *prefix)
OPT_GROUP(),
OPT_INTEGER( 0 , count, maxcount, N_(show only n
matched refs)),
OPT_STRING( 0 , format, format, N_(format), N_(format
to use for the output)),
- OPT_STRING( 0 , pretty, pretty, N_(format),
N_(alternative format to use for the output)),
+ OPT_STRING( 0 , pretty, pretty_raw, N_(format),
N_(alternative format to use for the output)),
OPT_CALLBACK(0 , sort, sort_tail, N_(key),
N_(field name to sort on), opt_parse_sort),
OPT_END(),
};
parse_options(argc, argv, prefix, opts, for_each_ref_usage, 0);
+ if (pretty_raw)
+ pretty_userformat = get_pretty_userformat(pretty_raw);
if (maxcount 0) {
error(invalid --count argument: `%d', maxcount);
usage_with_options(for_each_ref_usage, opts);
@@ -1180,10 +1182,10 @@ int cmd_for_each_ref(int argc, const char **argv,
const char *prefix)
error(more than one quoting style?);
usage_with_options(for_each_ref_usage, opts);
}
- if (format != default_format pretty)
+ if (format != default_format pretty_userformat)
die(--format and --pretty cannot be used together);
- if ((pretty verify_format(pretty, 1)) ||
- (!pretty verify_format(format, 0)))
+ if ((pretty_userformat verify_format(pretty_userformat, 1)) ||
+ (!pretty_userformat verify_format(format, 0)))
usage_with_options(for_each_ref_usage, opts);
if (!sort)
@@ -1204,8 +1206,8 @@ int cmd_for_each_ref(int argc, const char **argv, const
char *prefix)
if (!maxcount || num_refs maxcount)
maxcount = num_refs;
- if (pretty)
- show_pretty_refs(refs, maxcount, pretty, quote_style);
+ if (pretty_userformat)
+ show_pretty_refs(refs, maxcount, pretty_userformat,
quote_style);
else
show_refs(refs, maxcount, format, quote_style);
return 0;
--
1.8.3.GIT
--
Duy
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html