1321
}
1322
1323
static void add_cache_tree(struct cache_tree *it, struct rev_info *revs,
1324
- struct strbuf *path)
1324
+ struct strbuf *path, unsigned int flags)
1325
{
1326
size_t baselen = path->len;
1327
int i;
1328
1329
if (it->entry_count >= 0) {
1330
struct tree *tree = lookup_tree(revs->repo, &it->oid);
1331
+ tree->object.flags |= flags;
1332
add_pending_object_with_path(revs, &tree->object, "",
1333
040000, path->buf);
1334
}
1336
for (i = 0; i < it->subtree_nr; i++) {
1337
struct cache_tree_sub *sub = it->down[i];
1338
strbuf_addf(path, "%s%s", baselen ? "/" : "", sub->name);
1338
- add_cache_tree(sub->cache_tree, revs, path);
1339
+ add_cache_tree(sub->cache_tree, revs, path, flags);
1340
strbuf_setlen(path, baselen);
1341
}
1342
1343
}
1344
1345
static void do_add_index_objects_to_pending(struct rev_info *revs,
1345
- struct index_state *istate)
1346
+ struct index_state *istate,
1347
+ unsigned int flags)
1348
{
1349
int i;
1350
1358
blob = lookup_blob(revs->repo, &ce->oid);
1359
if (!blob)
1360
die("unable to add index blob to traversal");
1361
+ blob->object.flags |= flags;
1362
add_pending_object_with_path(revs, &blob->object, "",
1363
ce->ce_mode, ce->name);
1364
}
1365
1366
if (istate->cache_tree) {
1367
struct strbuf path = STRBUF_INIT;
1365
- add_cache_tree(istate->cache_tree, revs, &path);
1368
+ add_cache_tree(istate->cache_tree, revs, &path, flags);
1369
strbuf_release(&path);
1370
}
1371
}
1375
struct worktree **worktrees, **p;
1376
1377
read_index(revs->repo->index);
1375
- do_add_index_objects_to_pending(revs, revs->repo->index);
1378
+ do_add_index_objects_to_pending(revs, revs->repo->index, flags);
1379
1380
if (revs->single_worktree)
1381
return;
1391
if (read_index_from(&istate,
1392
worktree_git_path(wt, "index"),
1393
get_worktree_git_dir(wt)) > 0)
1391
- do_add_index_objects_to_pending(revs, &istate);
1394
+ do_add_index_objects_to_pending(revs, &istate, flags);
1395
discard_index(&istate);
1396
}
1397
free_worktrees(worktrees);