Re: Removing duplicated code between builtin-send-pack.c and transport.c
On Wed, Apr 22, 2009 at 02:24:07PM -0400, Daniel Barkalow wrote:
Show 16 quoted lines
> On Wed, 22 Apr 2009, Andy Lester wrote:
>
> > There's a ton of code duplicated between transport.c and builtin-send-pack.c,
> > from print_push_status() and its static helpers.
> >
> > Is there a reason NOT to refactor it out of the builtin and use the
> > transport?
>
> I think the builtin should actually just be deprecated and eventually
> removed. As far as I know, nothing actually runs "git send-pack" rather
> than calling send_pack(), but I left the builtin entry point, along with
> its helpers, just in case.
>
> If you're interested in reorganizing things there, I think it would be
> best to move send_pack() to a new send-pack.c, such that
> builtin-send-pack.c can go away entirely.
I think there are actually three issues here:
1. send_pack() is a library-ish function used by transport.c (which in
turn is called by push), and it is in builtin-send-pack.c. This is
generally against git policy. 2. There are several static functions duplicated in transport.c and
builtin-send-pack.c, which can be refactored to exist only once.
In fact, I really don't see why your 64fcef2 didn't do that in the
first place. It looks like they were cut and paste into
transport.c; I don't see why you didn't just make them non-static
and delete the original versions. 3. Nobody really uses "git send-pack" anymore, so it can perhaps be
deprecated and eventually dropped.I think Andy was referring to (2), and I think that should be cleaned up, as the different versions have a tendency to diverge. Probably addressing (1) by moving send_pack() to transport.c makes sense as part of the same cleanup.
I don't know that (3) really buys us much. Sure, it is probably useless, but we would need to keep it for historical compatibility for quite some time, anyway.
-Peff