built-in rebase --skip/--abort: clean up stale .git/<name> files
[gitweb.git] / list-objects-filter.c
index 09b2b05d5462318353aee9133e36bd5924cfa409..765f3df3b067c5df7b98402ef4fc953edcd9179b 100644 (file)
@@ -102,9 +102,16 @@ static enum list_objects_filter_result filter_trees_none(
 
        case LOFS_BEGIN_TREE:
        case LOFS_BLOB:
-               if (filter_data->omits)
+               if (filter_data->omits) {
                        oidset_insert(filter_data->omits, &obj->oid);
-               return LOFR_MARK_SEEN; /* but not LOFR_DO_SHOW (hard omit) */
+                       /* _MARK_SEEN but not _DO_SHOW (hard omit) */
+                       return LOFR_MARK_SEEN;
+               } else {
+                       /*
+                        * Not collecting omits so no need to to traverse tree.
+                        */
+                       return LOFR_SKIP_TREE | LOFR_MARK_SEEN;
+               }
 
        case LOFS_END_TREE:
                assert(obj->type == OBJ_TREE);