1#ifndef WORKTREE_H 2#define WORKTREE_H 3 4struct worktree { 5char*path; 6char*id; 7char*head_ref; 8unsigned char head_sha1[20]; 9int is_detached; 10int is_bare; 11}; 12 13/* Functions for acting on the information about worktrees. */ 14 15/* 16 * Get the worktrees. The primary worktree will always be the first returned, 17 * and linked worktrees will be pointed to by 'next' in each subsequent 18 * worktree. No specific ordering is done on the linked worktrees. 19 * 20 * The caller is responsible for freeing the memory from the returned 21 * worktree(s). 22 */ 23externstruct worktree **get_worktrees(void); 24 25/* 26 * Return git dir of the worktree. Note that the path may be relative. 27 * If wt is NULL, git dir of current worktree is returned. 28 */ 29externconst char*get_worktree_git_dir(const struct worktree *wt); 30 31/* 32 * Free up the memory for worktree(s) 33 */ 34externvoidfree_worktrees(struct worktree **); 35 36/* 37 * Check if a per-worktree symref points to a ref in the main worktree 38 * or any linked worktree, and return the worktree that holds the ref, 39 * or NULL otherwise. The result may be destroyed by the next call. 40 */ 41externconst struct worktree *find_shared_symref(const char*symref, 42const char*target); 43 44#endif