worktree.c: get_worktrees() takes a new flag argument
[git/git.git] / worktree.h
CommitLineData
ac6c561b
MR
1#ifndef WORKTREE_H
2#define WORKTREE_H
3
51934904
MR
4struct worktree {
5 char *path;
69dfe3b9 6 char *id;
92718b74 7 char *head_ref;
346ef530 8 char *lock_reason; /* internal use */
92718b74
MR
9 unsigned char head_sha1[20];
10 int is_detached;
11 int is_bare;
750e8a60 12 int is_current;
346ef530 13 int lock_reason_valid;
51934904
MR
14};
15
16/* Functions for acting on the information about worktrees. */
17
18/*
19 * Get the worktrees. The primary worktree will always be the first returned,
20 * and linked worktrees will be pointed to by 'next' in each subsequent
21 * worktree. No specific ordering is done on the linked worktrees.
22 *
23 * The caller is responsible for freeing the memory from the returned
24 * worktree(s).
25 */
4fff1ef7 26extern struct worktree **get_worktrees(unsigned flags);
51934904 27
69dfe3b9
NTND
28/*
29 * Return git dir of the worktree. Note that the path may be relative.
30 * If wt is NULL, git dir of current worktree is returned.
31 */
32extern const char *get_worktree_git_dir(const struct worktree *wt);
33
68353144
NTND
34/*
35 * Search a worktree that can be unambiguously identified by
36 * "arg". "prefix" must not be NULL.
37 */
38extern struct worktree *find_worktree(struct worktree **list,
39 const char *prefix,
40 const char *arg);
41
984ad9e5
NTND
42/*
43 * Return true if the given worktree is the main one.
44 */
45extern int is_main_worktree(const struct worktree *wt);
46
346ef530
NTND
47/*
48 * Return the reason string if the given worktree is locked or NULL
49 * otherwise.
50 */
51extern const char *is_worktree_locked(struct worktree *wt);
52
51934904
MR
53/*
54 * Free up the memory for worktree(s)
55 */
56extern void free_worktrees(struct worktree **);
57
ac6c561b
MR
58/*
59 * Check if a per-worktree symref points to a ref in the main worktree
d3b9ac07
NTND
60 * or any linked worktree, and return the worktree that holds the ref,
61 * or NULL otherwise. The result may be destroyed by the next call.
ac6c561b 62 */
d3b9ac07
NTND
63extern const struct worktree *find_shared_symref(const char *symref,
64 const char *target);
ac6c561b 65
14ace5b7
NTND
66int is_worktree_being_rebased(const struct worktree *wt, const char *target);
67int is_worktree_being_bisected(const struct worktree *wt, const char *target);
68
2e641d58
NTND
69/*
70 * Similar to git_path() but can produce paths for a specified
71 * worktree instead of current one
72 */
73extern const char *worktree_git_path(const struct worktree *wt,
74 const char *fmt, ...)
75 __attribute__((format (printf, 2, 3)));
76
ac6c561b 77#endif