From: Alex Riesen <raa.lkml@gmail.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: "Git Mailing List" <git@vger.kernel.org>,
"Johannes Sixt" <j.sixt@viscovery.net>,
"Junio C Hamano" <gitster@pobox.com>,
"Kristian Høgsberg" <krh@redhat.com>
Subject: Re: [PATCH] Do not generate full commit log message if it not going to be used
Date: Wed, 28 Nov 2007 22:10:59 +0100 [thread overview]
Message-ID: <20071128211059.GA3173@steel.home> (raw)
In-Reply-To: <Pine.LNX.4.64.0711281211130.27959@racer.site>
Johannes Schindelin, Wed, Nov 28, 2007 13:18:10 +0100:
> On Tue, 27 Nov 2007, Alex Riesen wrote:
>
> > Could not stop myself. Hopefully didn't beat anyone to it :)
> > Almost all code shamelessly stolen from builtin-diff-index.c.
>
> Then I have to wonder if it would not be a better idea to refactor the
> code, so that other people do not have to steal the code again, but are
> able to reuse it ;-)
Not sure it will be worth the effort. It is really short.
OTOH, I missed a diff-index interface where I could pass a resolved
sha1 (the u8 array returned by get_sha1) and index state. Something
like "int diff_tree_index(const unsigned char *sha1, struct rev_info *)".
Tempting, but I have only one use case for it. I don't actually know
Git's code that well...
> > Preprocessor trickery in DIFF_OPT_* macros is disgusting, it breaks Vim
> > word completion and trying to use many flags in one expression looks
> > just ugly.
>
> How does it break Vim word completion? And why should something like
>
> DIFF_OPT_SET(&rev.diffopt, QUIET | EXIT_WITH_STATUS);
>
> look ugly? I find it highly readable.
Oh, this would look ok. It just wont compile: DIFF_OPT_SET prepends
second argument with DIFF_OPT_:
#define DIFF_OPT_TST(opts, flag) ((opts)->flags & DIFF_OPT_##flag)
#define DIFF_OPT_SET(opts, flag) ((opts)->flags |= DIFF_OPT_##flag)
#define DIFF_OPT_CLR(opts, flag) ((opts)->flags &= ~DIFF_OPT_##flag)
> > + if (no_edit) {
> > + static const char *argv[] = { NULL, "HEAD", NULL };
> > + struct rev_info rev;
> > + unsigned char sha1[40];
> > + int is_initial;
> > +
> > + fclose(fp);
> > +
> > + if (!active_nr && read_cache() < 0)
> > + die("Cannot read index");
> > +
> > + if (get_sha1("HEAD", sha1) != 0)
> > + return !!active_nr;
>
> Don't want to be anal here, but are there possibly reasons (read "possible
> errors") other than an empty repo where this triggers?
Definitely. I just don't know. OTOH, I can only return "committable"
or "not committable". If I return "commitable" for a broken repo,
it should fail elsewhere. If I return "not commitable" git-commit
shall finish telling user there is nothing to commit, which is just
wrong.
> > +
> > + init_revisions(&rev, "");
> > + rev.abbrev = 0;
> > + (void)setup_revisions(2, argv, &rev, NULL);
>
> (void)?
Yep. Sorry, I just got carried away by recent tendency (here at work)
to shut up PC-Lint (but please don't ask).
> Besides, would this not be more elegant as
>
> setup_revisions(0, NULL, &rev, "HEAD");
Hmm... And I was so puzzled as to what that "def" argument could
possibly mean... Still am, in fact. But it works.
> > + (void)run_diff_index(&rev, 1 /* cached */);
>
> (void)?
I'll remove them and resubmit. Stupid custom.
> Other than that (including my remark about refactoring that piece of
> code), I like it.
Me too: I have *extensively* tested it today and a commit on the
2.6GHz/2Gb/SATA windows machine is almost as fast as on my linux
laptop now (Centrino/1.2GHz downclocked to 800MHz/384Mb/IDE).
next prev parent reply other threads:[~2007-11-28 21:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-27 10:54 [PATCH] builtin-commit: add --cached to operate only on index Alex Riesen
2007-11-27 11:18 ` Johannes Schindelin
2007-11-27 12:57 ` Alex Riesen
2007-11-27 11:35 ` Johannes Sixt
2007-11-27 12:48 ` Alex Riesen
2007-11-27 17:16 ` Junio C Hamano
2007-11-27 18:12 ` Alex Riesen
2007-11-27 18:18 ` Alex Riesen
2007-11-27 21:44 ` [PATCH] Do not generate full commit log message if it not going to be used Alex Riesen
2007-11-27 21:47 ` Alex Riesen
2007-11-28 12:18 ` Johannes Schindelin
2007-11-28 21:10 ` Alex Riesen [this message]
2007-11-28 21:13 ` [PATCH] Do not generate full commit log message if it is " Alex Riesen
2007-11-28 21:43 ` [PATCH] Do not generate full commit log message if it " Johannes Schindelin
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=20071128211059.GA3173@steel.home \
--to=raa.lkml@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j.sixt@viscovery.net \
--cc=krh@redhat.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 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).