git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).