[PATCH 15/15] for-each-ref: use get_pretty_userformat in --pretty

2013-07-09 Thread Ramkumar Ramachandra
Use get_pretty_userformat() to interpret the --pretty string.  This
means that 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.

Signed-off-by: Ramkumar Ramachandra artag...@gmail.com
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@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 d666ebd..ef39f2a 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 (i.e. they will be emitted
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
index 25764aa..ed7bd7d 100644
--- a/builtin/for-each-ref.c
+++ b/builtin/for-each-ref.c
@@ -1151,7 +1151,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;
@@ -1170,13 +1170,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);
@@ -1185,10 +1187,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)
@@ -1209,8 +1211,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.2.736.g869de25

--
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


[PATCH 15/15] for-each-ref: use get_pretty_userformat in --pretty

2013-06-04 Thread Ramkumar Ramachandra
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.

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

--
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


Re: [PATCH 15/15] for-each-ref: use get_pretty_userformat in --pretty

2013-06-04 Thread Duy Nguyen
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


Re: [PATCH 15/15] for-each-ref: use get_pretty_userformat in --pretty

2013-06-04 Thread Eric Sunshine
On Tue, Jun 4, 2013 at 8:35 AM, 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.*

s/leading// perhaps?

 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.

 Signed-off-by: Ramkumar Ramachandra artag...@gmail.com
--
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