Re: [PATCH 5/7] diff_tree(): Skip skip_uninteresting() when all remaining paths interesting

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 5/7] diff_tree(): Skip skip_uninteresting() when all remaining paths interesting

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:23

This and the previous patch seem to make sense to me, independent of the
rest.

As to mixing pathspecs with --objects, I would say it is unfair to Linus
to call it a bug that that particular use case has not been supported.  I'd
say it _is_ a bug that we didn't error out when --objects was given with
pathspec at the command line level, though, as that is a combination we
knowingly ignored to support.

It simply hasn't been deemed as a sane operation to produce a pack using
an output from rev-list with pathspec and --objects, as it will leave some
trees and blobs that the pack knows about in the result, without actually
having them in it.  In the context of "narrow clone", these wounds to
trees are deliberate, and the existence of these wounds alone is not the
reason why I called it insane to produce such a pack.

To make use of such a pack, however, you need to somehow cauterize these
deliberate wounds in trees so that fsck, a later run of pack-objects,
fetch-pack and friends will not choke on them.  We didn't plan to have
such an infrastructure so far, and that is what made such a pack with
thousands of cuts "insane".  As soon as "narrow clone" addresses that
issue, mixture of pathspecs with --objects stops being an insane use
case.

Re: [PATCH 5/7] diff_tree(): Skip skip_uninteresting() when all remaining paths interesting

From: Elijah Newren <hidden>
Date: 2016-06-15 22:49:23

On Wed, Aug 25, 2010 at 5:25 PM, Junio C Hamano [off-list ref] wrote:
This and the previous patch seem to make sense to me, independent of the
rest.
Thanks.
As to mixing pathspecs with --objects, I would say it is unfair to Linus
to call it a bug that that particular use case has not been supported.  I'd
say it _is_ a bug that we didn't error out when --objects was given with
pathspec at the command line level, though, as that is a combination we
knowingly ignored to support.

It simply hasn't been deemed as a sane operation to produce a pack using
an output from rev-list with pathspec and --objects, as it will leave some
trees and blobs that the pack knows about in the result, without actually
having them in it.  In the context of "narrow clone", these wounds to
trees are deliberate, and the existence of these wounds alone is not the
reason why I called it insane to produce such a pack.

To make use of such a pack, however, you need to somehow cauterize these
deliberate wounds in trees so that fsck, a later run of pack-objects,
fetch-pack and friends will not choke on them.  We didn't plan to have
such an infrastructure so far, and that is what made such a pack with
thousands of cuts "insane".  As soon as "narrow clone" addresses that
issue, mixture of pathspecs with --objects stops being an insane use
case.
Well, I did call it a minor bug, because I figured no one was using it
and so it wasn't hurting anyone.  But saying you knowingly ignored
supporting it is understandable.

I understand that for this combination of options to be useful, all
the other stuff you mention needs to be done.  Duy and I are both
working on separate ways of doing that; I just figured it made sense
to submit any independent pieces early and separately.  I don't think
supporting this would hurt anyone, as I don't think anyone could
accidentally use it at this point.  However, if you'd prefer that I
submitted a patch to just error out with this combination of options
for now, and resubmit this patch later with a full sparse clone
patchset, I can do that.  (Note though that my fix for supporting both
--objects and pathspec isn't correct; there's a bug I'm looking in
to.)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help