git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH/WIP 0/9] for-each-ref format improvements
Date: Sun, 19 May 2013 17:27:06 +0700	[thread overview]
Message-ID: <1368959235-27777-1-git-send-email-pclouds@gmail.com> (raw)

The purpose of this series is to make "for-each-ref --format" powerful
enough to display what "branch -v" and "branch -vv" do so that we
could get rid of those display code and use for-each-ref code instead.

The benefits are clear: share more code, branch can also borrow
--sort and --format from for-each-ref, which should satisty users who
are not happy with what -v and -vv provides.

This version has not gotten there yet. I just want to post quick and
dirty changes and try to address some design issues.

Originally I wanted to introduce --pretty with git-log's pretty syntax
to for-each-ref, deprecating --format. But because --format has to be
there forever, we cannot remove its code, and the code change to make
pretty code ready for displaying refs may not be small. So I went with
enhancing --format syntax instead.

This series introduces:

 - %(current), which either shows "*" if the ref is pointed by HEAD
   or a space. Junio called it %(headness). I don't like that.
   I don't like %(current) either but we have to start somewhere.
   Name suggestion? %(marker)??

 - %(tracking[:upstream]) gives us the exact output that branch -v[v]
   does. %(upstream) does not include []. We can't change its
   semantics.
 
 - %(color:...) is pretty much the same as %C family in pretty code.
   I haven't added code for %(color:foo) == %C(foo) yet. There's a
   potential ambiguity here: %C(red) == %Cred or %C(red)??

 - %(...:aligned) to do left aligning. I'm not entirely sure about
   this. We might be able to share code with %>, %< and %>< from
   pretty.c. But we need improvements there too because in
   for-each-ref case, we could calculate column width but %< would
   require the user to specify the width.

   Do people expect fancy layout with for-each-ref (and branch)? If so
   we might need to have %(align) or something instead of the simple
   left alignment case in %(...:aligned)
 
 - We may need an equivalent of the space following % in pretty
   format. If the specifier produces something, then prepend a space,
   otherwise produce nothing. Do it like %C( tracking) vs
   %C(tracking)??

You can try this after applying the series, which should give you the
about close to 'branch -v'. %(tracking) coloring does not work though.

git for-each-ref --format='%(current) %(color:auto)%(refname:short:aligned)%(color:reset) %%(objectname:short) %(tracking) %(subject)' 'refs/heads/*'

Nguyễn Thái Ngọc Duy (9):
  quote.c: make sq_quote_print a slight wrapper of sq_quote_buf
  for-each-ref: convert to use *_quote_buf instead of _quote_print
  for-each-ref: avoid printing each element directly to stdout
  for-each-ref: add %(current) for current branch marker
  for-each-ref: add %(tracking[:upstream]) for tracking info
  for-each-ref: add %(color:...)
  for-each-ref: prepoplulate all atoms before show_ref()
  for-each-ref: merge show_ref into show_refs
  for-each-ref: support %(...:aligned) for left alignment

 branch.h               |  11 ++++
 builtin/branch.c       |  16 ++----
 builtin/for-each-ref.c | 146 ++++++++++++++++++++++++++++++++++++++++++-------
 quote.c                |  61 +++++++++------------
 quote.h                |   6 +-
 5 files changed, 170 insertions(+), 70 deletions(-)

-- 
1.8.2.83.gc99314b

             reply	other threads:[~2013-05-19 10:26 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-19 10:27 Nguyễn Thái Ngọc Duy [this message]
2013-05-19 10:27 ` [PATCH 1/9] quote.c: make sq_quote_print a slight wrapper of sq_quote_buf Nguyễn Thái Ngọc Duy
2013-05-19 11:39   ` Felipe Contreras
2013-05-19 10:27 ` [PATCH 2/9] for-each-ref: convert to use *_quote_buf instead of _quote_print Nguyễn Thái Ngọc Duy
2013-05-19 11:39   ` Felipe Contreras
2013-05-19 10:27 ` [PATCH 3/9] for-each-ref: avoid printing each element directly to stdout Nguyễn Thái Ngọc Duy
2013-05-19 11:17   ` Ramkumar Ramachandra
2013-05-19 11:58     ` Duy Nguyen
2013-05-19 10:27 ` [PATCH 4/9] for-each-ref: add %(current) for current branch marker Nguyễn Thái Ngọc Duy
2013-05-19 11:14   ` Ramkumar Ramachandra
2013-05-19 10:27 ` [PATCH 5/9] for-each-ref: add %(tracking[:upstream]) for tracking info Nguyễn Thái Ngọc Duy
2013-05-19 11:18   ` Ramkumar Ramachandra
2013-05-19 11:38     ` Felipe Contreras
2013-05-19 11:43       ` Duy Nguyen
2013-05-19 11:48         ` Ramkumar Ramachandra
2013-05-19 12:03           ` Felipe Contreras
2013-05-19 10:27 ` [PATCH 6/9] for-each-ref: add %(color:...) Nguyễn Thái Ngọc Duy
2013-05-19 11:25   ` Ramkumar Ramachandra
2013-05-19 10:27 ` [PATCH 7/9] for-each-ref: prepoplulate all atoms before show_ref() Nguyễn Thái Ngọc Duy
2013-05-19 10:27 ` [PATCH 8/9] for-each-ref: merge show_ref into show_refs Nguyễn Thái Ngọc Duy
2013-05-19 10:27 ` [PATCH 9/9] for-each-ref: support %(...:aligned) for left alignment Nguyễn Thái Ngọc Duy
2013-05-19 11:32   ` Ramkumar Ramachandra
2013-05-19 11:41     ` Duy Nguyen
2013-05-19 11:11 ` [PATCH/WIP 0/9] for-each-ref format improvements Ramkumar Ramachandra
2013-05-19 11:36   ` Felipe Contreras
2013-05-19 11:54   ` Duy Nguyen
2013-05-19 12:08     ` Ramkumar Ramachandra
2013-05-19 12:28       ` Duy Nguyen
2013-05-19 13:07         ` Ramkumar Ramachandra
2013-05-20  4:29 ` Junio C Hamano
2013-05-21 17:21 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1368959235-27777-1-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).