All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.