From: "Shawn O. Pearce" <spearce@spearce.org>
To: Junio C Hamano <junkio@cox.net>
Cc: "Luiz Fernando N. Capitulino" <lcapitulino@mandriva.com.br>,
git@vger.kernel.org
Subject: Re: [PATCH 1/5] Introduces for_each_revision() helper
Date: Sun, 29 Apr 2007 03:06:17 -0400 [thread overview]
Message-ID: <20070429070616.GV5942@spearce.org> (raw)
In-Reply-To: <7vy7kbeke1.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
> The reason I do not like this particular one is because both
> operations you are hiding are not simple operations like
> "initialize a variable to list head" or "follow a single pointer
> in the structure", but rather heavyweight operations with rather
> complex semantics. I would want to make sure that people
> realize they are calling something heavyweight when they use the
> revision traversal.
But in_merge_base is heavyweight if the two commits are in the
same object database, but aren't connected at all. You'll need
to traverse both histories before aborting and saying there is
no merge base. That ain't cheap on large trees. But its also a
single line of code.
Anyway, my original problem with this macro was the way it was
defined. I think Luiz was able to fix most of my issues with it
in his latest version, but I still have a personal distaste for
hiding things like a for(;;) construct in a macro, or allowing a
macro parameter to be used more than once within the definition of
the macro (unexpected side-effects of evaluating an more than once).
--
Shawn.
next prev parent reply other threads:[~2007-04-29 7:06 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-27 17:00 [PATCH 0/5] New for_each_revision() helper Luiz Fernando N. Capitulino
2007-04-27 17:00 ` [PATCH 1/5] Introduces " Luiz Fernando N. Capitulino
2007-04-27 19:32 ` Junio C Hamano
2007-04-27 21:13 ` Luiz Fernando N. Capitulino
2007-04-29 6:59 ` Junio C Hamano
2007-04-29 7:06 ` Shawn O. Pearce [this message]
2007-04-30 23:19 ` Junio C Hamano
2007-04-28 2:46 ` Johannes Schindelin
2007-04-28 11:50 ` Alex Riesen
2007-04-28 12:52 ` Johannes Schindelin
2007-04-28 16:02 ` Luiz Fernando N. Capitulino
2007-04-28 16:48 ` Alex Riesen
2007-04-29 13:04 ` Luiz Fernando N. Capitulino
2007-04-27 17:00 ` [PATCH 2/5] builtin-fmt-merge-msg.c: Use " Luiz Fernando N. Capitulino
2007-04-27 17:00 ` [PATCH 3/5] reachable.c: " Luiz Fernando N. Capitulino
2007-04-27 17:00 ` [PATCH 4/5] builtin-shortlog.c: " Luiz Fernando N. Capitulino
2007-04-27 17:00 ` [PATCH 5/5] builtin-log.c: " Luiz Fernando N. Capitulino
-- strict thread matches above, loose matches on Subject: below --
2007-04-26 19:46 [PATCH 0/5] RFC: " Luiz Fernando N Capitulino
2007-04-26 19:46 ` [PATCH 1/5] Introduces " Luiz Fernando N Capitulino
2007-04-26 19:59 ` Andy Whitcroft
2007-04-26 21:12 ` Luiz Fernando N. Capitulino
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=20070429070616.GV5942@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=lcapitulino@mandriva.com.br \
/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).