Re: [RFC/PATCH v3] merge-base: teach "git merge-base" to accept more than 2 arguments
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jul 28, 2008, 11:33 UTC
- Message-ID
- <alpine.DEB.1.00.0807281328520.2725@eeepc-johanness>
- In-Reply-To
- <20080728065023.743930d6.chriscool@tuxfamily.org>
Hi,
On Mon, 28 Jul 2008, Christian Couder wrote:
Show 11 quoted lines
> + rev = xmalloc((argc - 1) * sizeof(*rev));
> +
> + do {
> + struct commit *r = get_commit_reference(argv[1]);
> + if (!r)
> + return 1;
> + rev[rev_nr++] = r;
> + argc--; argv++;
> + } while (argc > 1);
> +
> + return show_merge_base(rev, rev_nr, show_all);rev = xmalloc((argc - 1) * sizeof(*rev));
for (rev_nr = 0; rev_nr + 1 < argc; rev_nr++) {
rev[rev_nr] = get_commit_reference(argv[rev_nr + 1]);
if (!rev[rev_nr])
return !!error("Does not refer to a commit: '%s'",
argv[rev_nr + 1]);
}return show_merge_base(rev, rev_nr, show_all);
I do not know about you, but I think this is not only shorter (in spite of adding a helpful error message), but also simpler to understand (not using convoluted do { } while logic), and therefore superior.
Your performance argument is weak IMHO, as this is not a big performance hit, and command line parameter parsing is definitely not performance critical.
Ciao, Dscho