From: Eric Wong Date: Sun, 14 Oct 2007 09:18:55 GMT Subject: Re: [RFC] CLI option parsing and usage generation for porcelains Message-ID: <20071014091855.GA17397@soma> In-Reply-To: <1192282153-26684-1-git-send-email-madcoder@debian.org> Pierre Habouzit wrote: > Following Kristian momentum, I've reworked his parse_option module > quite a lot, and now have some quite interesting features. The series is > available from git://git.madism.org/git.git (branch ph/strbuf). > > The following series is open for comments, it's not 100% ready for > inclusion IMHO, as some details may need to be sorted out first, and > that I've not re-read the patches thoroughly yet. Though I uses the tip > of that branch as my everyday git for 2 weeks or so without any > noticeable issues. > > And as examples are always easier to grok: > > $ git fetch -h > usage: git-fetch [options] [ ...] > > -q, --quiet be quiet > -v, --verbose be verbose > > -a, --append append in .git/FETCH_HEAD > -f, --force force non fast-forwards updates > --no-tags don't follow tags at all > -t, --tags fetch all tags > --depth deepen history of a shallow clone > > Advanced Options > -k, --keep keep downloaded pack > -u, --update-head-ok allow to update the head in the current branch > --upload-pack path to git-upload-pack on the remote > > $ git rm -rf xdiff # yeah -rf now works ! Very nice. I worked on gitopt around summer of 2006 but never had the time to test it thoroughly. It was a _lot_ more intrusive than yours currently is (it touched the diff + revision family of commands). One feature I really like is automatically handling of long option abbreviations. gitopt supported this at the expense of complexity and the aforementioned intrusivenes. This allows automatic handling of the abbreviation style seen commonly in git shell scripts: --a|--am|--ame|--amen|--amend) (from git-commit.sh) -- Eric Wong