1#ifndef WORKTREE_H 2#define WORKTREE_H 3 4struct worktree { 5 char *path; 6 char *id; 7 char *head_ref; 8 unsigned char head_sha1[20]; 9 int is_detached; 10 int 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 */ 23extern struct 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 */ 29extern const char *get_worktree_git_dir(const struct worktree *wt); 30 31/* 32 * Free up the memory for worktree(s) 33 */ 34extern void free_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 path to the exising worktree 39 * if it is. Returns NULL if there is no existing ref. The caller is 40 * responsible for freeing the returned path. 41 */ 42extern char *find_shared_symref(const char *symref, const char *target); 43 44#endif