From: Jakub Narebski <jnareb@gmail.com>
To: Luben Tuikov <ltuikov@yahoo.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 0/5] gitweb: git_patchset_body fixes
Date: Mon, 8 Jan 2007 10:03:54 +0100 [thread overview]
Message-ID: <200701081003.54991.jnareb@gmail.com> (raw)
In-Reply-To: <257061.93025.qm@web31801.mail.mud.yahoo.com>
Dnia poniedziałek 8. stycznia 2007 04:50, Luben Tuikov napisał:
> --- Jakub Narebski <jnareb@gmail.com> wrote:
>> Luben Tuikov wrote:
>>> "And while at it" can you please actually *do* "refactor"
>>> git_patchset_body *into smaller functions each one doing
>>> a single particular task*.
>>>
>>> It is sad to see git_patchset_body in such despicable state
>>> all the while seeing words like "refactor" in the commit logs
>>> of that function.
>>
>> (Perhaps I overuse word "refactor").
>
> Perhaps. Or maybe it is used incorrectly.
That is also possible.
That said git_patchset_body was rewritten from AWK-like event-driven
single loop, with lots of state variables, to few loops following
the structure of patchset, and of git diff.
>>> git_patchset_body is grossly overloaded for what it is
>>> supposed to do to, and being one single huge blob, it is
>>> hard to maintain.
>>
>> I'm not sure if splitting git_patchset_body into smaller functions
>> would be worth doing, as 1) such functions would be used only
>> by git_patchset_body, 2) quite a bit of info has to be passed.
>
> When things get too complex, they should be done out of
> principle, not out of "how I feel about it", since principles
> can be proved and what they define can be easily tracked.
>
> Yes, it is worth doing. It doesn't matter that those smaller
> functions would be used only by git_patchset_body, when
> (by principle) the workings, logic and justification would
> be clearly exposed by those smaller units of function. Thus
> it would be possible to prove that the function is correct
> or not, and bugs would be able to be isolated easily.
>
> Smaller units of function should do one thing and do it well.
> If you cannot isolate them "because quite a bit of info has
> to be passed" then the logic of git_patchset_body is faulty,
> by _definition_, and needs to be scrapped and re-engineered
> (from scratch).
On first glance it would be easy to separate (refactor) individual
patch parsing and output into separate subroutine; perhaps also
separate parsing and output of diff header.
The problems with this approach are two: empty patches (e.g. pure
rename patch) and split patches (e.g. file to symlink patch).
And we are dealing with two sources of information: "raw" difftree
part, and the patch(set) part.
So it is not that easy. But I can certainly try...
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2007-01-08 9:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-05 1:29 Bugs in gitweb Luben Tuikov
2007-01-07 1:52 ` [PATCH 0/5] gitweb: git_patchset_body fixes Jakub Narebski
2007-01-08 3:50 ` Luben Tuikov
2007-01-08 9:03 ` Jakub Narebski [this message]
2007-01-09 4:25 ` Luben Tuikov
2007-01-09 10:27 ` Jakub Narebski
2007-01-09 16:44 ` Jakub Narebski
2007-01-09 21:38 ` Luben Tuikov
2007-01-09 23:07 ` [PATCH] gitweb: Fix git_patchset_body not closing <div class="patch"> Jakub Narebski
2007-01-09 23:35 ` Luben Tuikov
2007-01-09 20:54 ` [PATCH 0/5] gitweb: git_patchset_body fixes Luben Tuikov
2007-01-07 1:52 ` [PATCH 1/5] gitweb: Fix error in git_patchest_body for file creation/deletion patch Jakub Narebski
2007-01-08 3:53 ` Luben Tuikov
2007-01-07 1:52 ` [PATCH 2/5] gitweb: Fix error in "rename to"/"copy to" git diff header output Jakub Narebski
2007-01-07 1:52 ` [PATCH 3/5] gitweb: Fix errors in git_patchset_body for empty patches Jakub Narebski
2007-01-07 1:52 ` [PATCH 4/5] Revert "gitweb: There can be empty patches (in git_patchset_body)" Jakub Narebski
2007-01-07 1:52 ` [PATCH 5/5] gitweb: Fix split patches output (e.g. file to symlink) Jakub Narebski
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=200701081003.54991.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=ltuikov@yahoo.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).