Thread (128 messages) 128 messages, 6 authors, 2018-10-12

Re: [PATCH v3 5/5] list-objects-filter: implement filter tree:0

From: Matthew DeVore <hidden>
Date: 2018-10-03 19:00:40

On Tue, Aug 14, 2018 at 8:13 AM Jeff Hostetler [off-list ref] wrote:
There are a couple of options here:
[] If really want to omit all trees and blobs (and we DO NOT want
    the oidset of everything omitted), then we might be able to
    shortcut the traversal and speed things up.

    {} add a LOFR_SKIP_TREE bit to list_objects_filter_result
    {} test this bit process_tree() and avoid the init_tree_desc() and
       the while loop and some adjacent setup/tear-down code.
    {} make this filter something like:

        case LOFS_BEGIN_TREE:
                if (filter_data->omits) {
                        oidset_insert(filter_data->omits, &obj->oid);
                        return LOFR_MARK_SEEN; /* ... (hard omit) */
                } else
                        return LOFR_SKIP_TREE;
        case LOFS_BLOB:
                if (filter_data->omits) {
                        oidset_insert(filter_data->omits, &obj->oid);
                        return LOFR_MARK_SEEN; /* ... (hard omit) */
                else
                        assert(...should not happen...);

[] Later, if we choose to actually support a depth>0, we'll probably
    want a different filter function to conditionally include/exclude
    blobs, include shallow tree[node]s, and do some of the provisional-
    omit logic on deep tree[nodes] (in case a tree appears at multiple
    places/depths in the history).  But that can wait.

Jeff
Jeff, have you made any progress on depth>0 support for the tree
filter? I'd like to take a stab at it without duplicating work :)

- Matt
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help