From: Jonathan Nieder <jrnieder@gmail.com>
To: Ramkumar Ramachandra <artagnon@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, Git List <git@vger.kernel.org>
Subject: Re: [PATCH 5/5] revert: simplify communicating command-line arguments
Date: Wed, 7 Dec 2011 02:09:44 -0600 [thread overview]
Message-ID: <20111207080944.GF11737@elie.hsd1.il.comcast.net> (raw)
In-Reply-To: <1323239877-24101-6-git-send-email-artagnon@gmail.com>
Ramkumar Ramachandra wrote:
> From: Jonathan Nieder <jrnieder@gmail.com>
>
> Currently, command-line arguments are communicated using (argc, argv)
> until a prepare_revs() turns it into a terse structure. However,
> since we plan to expose the cherry-picking machinery through a public
> API in the future, we want callers to be able to call in with a
> filled-in structure. For the revert builtin, this means that the
> chief argument parser, parse_args(), should parse into such a
> structure. Make this change.
Fine. I guess it can be said more clearly while emphasizing public
interfaces over implementation details:
Since the "multiple cherry-pick" feature was introduced (commit
7e2bfd3f, 2010-07-02), the pick/revert machinery has kept track
of the set of commits to be cherry-picked or reverted using
commit_argc and commit_argv variables storing the relevant
command-line parameters.
Future callers as other commands are built in (am, rebase,
sequencer) may find it easier to pass rev-list options to this
machinery in already-parsed form, though. So teach
cmd_cherry_pick and cmd_revert to parse the rev-list arguments
in advance and pass the commit set to pick_revisions() as a
value of type "struct rev_info".
[...]
> @@ -222,7 +220,20 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
> "-x", opts->record_origin,
> "--edit", opts->edit,
> NULL);
> - opts->commit_argv = argv;
> +
> + if (opts->subcommand == REPLAY_NONE) {
> + opts->revs = xmalloc(sizeof(*opts->revs));
> + init_revisions(opts->revs, NULL);
> + opts->revs->no_walk = 1;
> + if (argc < 2)
> + usage_with_options(usage_str, options);
> + argc = setup_revisions(argc, argv, opts->revs, NULL);
> + } else
> + opts->revs = NULL;
> +
> + /* Forbid stray command-line arguments */
> + if (argc > 1)
> + usage_with_options(usage_str, options);
> }
Looks good.
Tests? What happens if I try "git cherry-pick --all"? How about "git
cherry-pick HEAD..HEAD"?
FWIW, with the commit message clarified and with or without new tests,
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
next prev parent reply other threads:[~2011-12-07 8:09 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-07 6:37 [PATCH 0/5] Re-roll rr/revert-cherry-pick Ramkumar Ramachandra
2011-12-07 6:37 ` [PATCH 1/5] revert: free msg in format_todo() Ramkumar Ramachandra
2011-12-07 6:43 ` Jonathan Nieder
2011-12-07 6:37 ` [PATCH 2/5] revert: make commit subjects in insn sheet optional Ramkumar Ramachandra
2011-12-07 7:02 ` Jonathan Nieder
2011-12-09 5:57 ` Ramkumar Ramachandra
2011-12-09 6:12 ` Ramkumar Ramachandra
2011-12-09 19:35 ` Jonathan Nieder
2011-12-09 19:44 ` Ramkumar Ramachandra
2011-12-09 19:50 ` Jonathan Nieder
2011-12-09 22:30 ` Ramkumar Ramachandra
2011-12-07 6:37 ` [PATCH 3/5] revert: simplify getting commit subject in format_todo() Ramkumar Ramachandra
2011-12-07 7:06 ` Jonathan Nieder
2011-12-07 6:37 ` [PATCH 4/5] revert: allow mixed pick and revert instructions Ramkumar Ramachandra
2011-12-07 7:45 ` Jonathan Nieder
2011-12-09 5:34 ` Ramkumar Ramachandra
2011-12-07 6:37 ` [PATCH 5/5] revert: simplify communicating command-line arguments Ramkumar Ramachandra
2011-12-07 8:09 ` Jonathan Nieder [this message]
2011-12-07 8:17 ` [PATCH 0/5] Re-roll rr/revert-cherry-pick Jonathan Nieder
2011-12-07 8:26 ` Ramkumar Ramachandra
2011-12-07 9:56 ` Jonathan Nieder
2011-12-07 8:28 ` Jonathan Nieder
2011-12-08 18:41 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2011-10-22 19:13 [PATCH v3 0/5] Sequencer fixups mini-series Ramkumar Ramachandra
2011-10-22 19:13 ` [PATCH 5/5] revert: simplify communicating command-line arguments Ramkumar Ramachandra
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=20111207080944.GF11737@elie.hsd1.il.comcast.net \
--to=jrnieder@gmail.com \
--cc=artagnon@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.