| 596 | } |
| 597 | |
| 598 | int other_head_refs(refs_for_each_cb fn, void *cb_data) |
| 599 | { |
| 600 | struct worktree **worktrees, **p; |
| 601 | struct strbuf refname = STRBUF_INIT; |
| 602 | int ret = 0; |
| 603 | |
| 604 | worktrees = get_worktrees(); |
| 605 | for (p = worktrees; *p; p++) { |
| 606 | struct worktree *wt = *p; |
| 607 | struct object_id oid; |
| 608 | int flag; |
| 609 | |
| 610 | if (wt->is_current) |
| 611 | continue; |
| 612 | |
| 613 | strbuf_reset(&refname); |
| 614 | strbuf_worktree_ref(wt, &refname, "HEAD"); |
| 615 | if (refs_resolve_ref_unsafe(get_main_ref_store(the_repository), |
| 616 | refname.buf, |
| 617 | RESOLVE_REF_READING, |
| 618 | &oid, &flag)) { |
| 619 | struct reference ref = { |
| 620 | .name = refname.buf, |
| 621 | .oid = &oid, |
| 622 | .flags = flag, |
| 623 | }; |
| 624 | |
| 625 | ret = fn(&ref, cb_data); |
| 626 | } |
| 627 | if (ret) |
| 628 | break; |
| 629 | } |
| 630 | free_worktrees(worktrees); |
| 631 | strbuf_release(&refname); |
| 632 | return ret; |
| 633 | } |
| 634 | |
| 635 | /* |
| 636 | * Repair worktree's /path/to/worktree/.git file if missing, corrupt, or not |
no test coverage detected