From: Li Hong <lihong.hi@gmail.com>
To: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: [RFC] 'git cat-file' needs a better design on its option interface
Date: Thu, 24 Sep 2009 23:04:31 +0800 [thread overview]
Message-ID: <3a3680030909240804w1399ed7fhd6367300544f34f@mail.gmail.com> (raw)
Hi All,
When using 'git cat-file' recently, I find its option interface is somewhat
inconvenient or mistakenly-designed.
1. There is no default action. You have to use -p or <type> option,
even for a simple look at the content of an object. It is better if
we can provide a default action just like 'cat' does.
2. Can't control the output. Several output options can't be used at
the same time. Can't control what to output and how to output. I
suggest here we use a simple format string to let the human being
and other batch scripts happy.
3. Batch mode is handled seperately and differently.
4. <type> option has a mix meaning (raw print and object dereference)
and is also inconsistent with -x style option.
* for raw print, an format char such as 'r' should be a good choice.
* for dereference, should use the uniform rev-naming. (e.g.
v0.99.8^{commit})
So I propose to amend the interface as follow:
git cat-file [-b] [-f <fmt>] [-e] <args> ...
-b read more objects from stdin
-f provide a output format string
-e silent, exit with zero when there's no error
the default action is to pretty-print the content when there is no
other options except -b.
A format string example can be formed as follow (this needs more discuss):
"blabla %t\s%s\t%h\n%p\n%r\n\n"
%t: type
%s: size
%h: sha1
%p: pretty-print
%r: raw-print
However, this change will give a heavy impact on many documents and scripts
depending on this command. There are 233 references in source code according
to a trivial count 'grep -r "cat-file" * | wc -l', not to mention many
private usage of this command.
So this is just a RFC. If I can get a very positive feedback from the
community, I may start to do the real code change.
Any ideas?
- Li Hong
next reply other threads:[~2009-09-24 15:05 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-24 15:04 Li Hong [this message]
2009-09-24 16:48 ` [RFC] 'git cat-file' needs a better design on its option interface Jeff King
2009-09-24 17:23 ` Linus Torvalds
2009-09-24 19:21 ` Matthieu Moy
2009-09-24 19:30 ` Nicolas Pitre
2009-09-25 2:33 ` Li Hong
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3a3680030909240804w1399ed7fhd6367300544f34f@mail.gmail.com \
--to=lihong.hi@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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.
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).