From: Junio C Hamano <gitster@pobox.com>
To: pi song <pi.songs@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/2] grep Added --blame so that grep can show result tagged with blame entries
Date: Tue, 10 Mar 2009 02:46:54 -0700 [thread overview]
Message-ID: <7v7i2xaewh.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <49B51791.4030801@gmail.com> (pi song's message of "Tue, 10 Mar 2009 00:20:17 +1100")
pi song <pi.songs@gmail.com> writes:
> This part:-
> 1) Move reusable bits from builtin-blame.c into blame.c, blame.h
> 2) Replace static variables with context struct
>
> Signed-off-by: Pi Song <pi.songs@gmail.com>
> ---
> Makefile | 2 +
> blame.c | 1919 +++++++++++++++++++++++++++++++++++++++++++++++++++
> blame.h | 222 ++++++
> builtin-blame.c | 2072
> +++----------------------------------------------------
> 4 files changed, 2245 insertions(+), 1970 deletions(-)
> create mode 100644 blame.c
> create mode 100644 blame.h
This is simply too big to ask anybody sane to review (besides as we can
clearly see in the above the patch is severely whitespace damaged to be
usable nor mechanically reviewable).
I suspect that most of the file-scope static variables can be moved to the
scoreboard, and when the reusable parts are made public, some structure
and function names may need to become a bit more blame specific to avoid
namespace contamination.
Perhaps the first two patches in an equivalent series that is rerolled to
be reviewable would look like:
(1) move file-scope static variables to the scoreboard, and necessary
code changes associated with it;
renaming of some structures and functions (if needed---I didn't
check);
(2) create blame.c and blame.h, and move lines from builtin-blame.c *and*
do NOTHING OTHER THAN
- adding #include "blame.h" to builtin-blame.c,
- adding necessary #include at the top of blame.c,
- surrounding blame.h with necessary
#ifndef BLAME_H
#define BLAME_H
...
#endif
and finally
- updating Makefile to add blame.c and blame.h
This step will make a HUGE patch, and it is crucial for reviewability
for it not to do anything other than line movement. Ideally, the
patch shouldn't even reorder the structures and function definitions
during this step.
Then we can use "git blame" itself to make sure that no other changes
were sneaked in by mistake. "git blame -C blame.h" and "git blame -C
blame.c" would show everything came from builtin-blame.c.
At this point, there shouldn't still be any behaviour change nor new
feature. And the titles of these preparatory step will never say anything
about "grep". They are only refactoring "blame".
Once this becomes solid, you can start adding features to blame.c to
support your new caller, and we can be reasonably sure that such patches
can be reviewed to decide if its change breaks the existing (and so far
the only) caller builtin_blame() or not.
next parent reply other threads:[~2009-03-10 9:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <49B51791.4030801@gmail.com>
2009-03-10 9:46 ` Junio C Hamano [this message]
2009-03-10 11:29 ` [PATCH 1/2] grep Added --blame so that grep can show result tagged with blame entries pi song
2009-03-10 11:46 ` Matthieu Moy
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=7v7i2xaewh.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=pi.songs@gmail.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