From: Eric Wong <normalperson@yhbt.net>
To: git@vger.kernel.org
Subject: [PATCH/RFC] gitopt - command-line parsing enhancements
Date: Mon, 08 May 2006 22:06:43 -0700 [thread overview]
Message-ID: <1147151209168-git-send-email-normalperson@yhbt.net> (raw)
Here's my take at a new command-line option parser to reduce wear on my
fingers. It handles both long and short options, permuting, automatic
abbreviations, required arguments, optional arguments, and bundling.
It doesn't use getopt or argp, so it should be easily portable to
non-GNU systems (and only uses git-isms trivially, so other programs can
use it easily, too).
I've tested everything lightly but it seems to be working well. The
unit test was very helpful throughout.
More intensive testing, bugfixes and comments would be greatly
appreciated.
It should be pretty easy to convert other git-* programs to use gitopt,
and write shell wrappers for git.c like I did with am/checkout/commit.
I'll probably do so in a few days once my fingers recover a bit, of
course feedback and patches for bug reports/enhancements are encouraged,
too.
1 - gitopt: a new command-line option parser for git
This adds the parser, tests, and some simple changes to
the git.c wrapper.
2 - update-index: convert to using gitopt
3 - ls-tree: convert to gitopt
4 - ls-files: convert to using gitopt
These three are fairly straightforward conversions.
I was somewhat disappointed that update-index didn't take
kindly to permuting arguments, but it's also a good example
how to disable permuting via gitopt: a == b
5 - gitopt: convert setup_revisions(), and diff_opt_parse()
This is a fairly intrusive change that affects several
important programs. All the tests still pass, so it must be
working :)
6 - commit: allow --pretty= args to be abbreviated
This one isn't strictly dependent on gitopt, and can be
trivially changed to work without the parent patches.
--
Eric Wong
next reply other threads:[~2006-05-09 6:22 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-09 5:06 Eric Wong [this message]
2006-05-09 5:06 ` [PATCH 1/6] gitopt: a new command-line option parser for git Eric Wong
2006-05-09 5:06 ` [PATCH 2/6] update-index: convert to using gitopt Eric Wong
2006-05-09 5:06 ` [PATCH 3/6] ls-tree: convert to gitopt Eric Wong
2006-05-09 5:06 ` [PATCH 4/6] ls-files: convert to using gitopt Eric Wong
2006-05-09 5:06 ` [PATCH 5/6] gitopt: convert setup_revisions(), and diff_opt_parse() Eric Wong
2006-05-09 5:06 ` [PATCH 6/6] commit: allow --pretty= args to be abbreviated Eric Wong
2006-05-09 7:16 ` [PATCH 5/6] gitopt: convert setup_revisions(), and diff_opt_parse() Eric Wong
2006-05-11 20:19 ` Eric Wong
2006-05-09 9:08 ` [PATCH 1/6] gitopt: a new command-line option parser for git Timo Hirvonen
2006-05-09 12:58 ` Junio C Hamano
2006-05-09 19:39 ` Eric Wong
2006-05-09 19:18 ` Eric Wong
2006-05-09 20:10 ` Timo Hirvonen
2006-05-09 20:35 ` Junio C Hamano
2006-05-09 21:08 ` Timo Hirvonen
2006-05-09 21:11 ` Junio C Hamano
2006-05-09 21:31 ` Timo Hirvonen
2006-05-09 8:35 ` [PATCH/RFC] gitopt - command-line parsing enhancements Junio C Hamano
2006-05-09 19:48 ` Eric Wong
2006-05-09 20:28 ` Junio C Hamano
2006-05-09 21:14 ` Eric Wong
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=1147151209168-git-send-email-normalperson@yhbt.net \
--to=normalperson@yhbt.net \
--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.
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).