8  * The result to all functions which return statically allocated memory may be
 
   9  * overwritten by another call to _any_ one of these functions. Consider using
 
  10  * the safer variants which operate on strbufs or return allocated memory.
 
  14  * Return a statically allocated path.
 
  16 const char *mkpath(const char *fmt, ...)
 
  17         __attribute__((format (printf, 1, 2)));
 
  22 char *mkpathdup(const char *fmt, ...)
 
  23         __attribute__((format (printf, 1, 2)));
 
  26  * Construct a path and place the result in the provided buffer `buf`.
 
  28 char *mksnpath(char *buf, size_t n, const char *fmt, ...)
 
  29         __attribute__((format (printf, 3, 4)));
 
  32  * The `git_common_path` family of functions will construct a path into a
 
  33  * repository's common git directory, which is shared by all worktrees.
 
  37  * Constructs a path into the common git directory of repository `repo` and
 
  38  * append it in the provided buffer `sb`.
 
  40 void strbuf_git_common_path(struct strbuf *sb,
 
  41                             const struct repository *repo,
 
  43         __attribute__((format (printf, 3, 4)));
 
  46  * Return a statically allocated path into the main repository's
 
  47  * (the_repository) common git directory.
 
  49 const char *git_common_path(const char *fmt, ...)
 
  50         __attribute__((format (printf, 1, 2)));
 
  54  * The `git_path` family of functions will construct a path into a repository's
 
  57  * These functions will perform adjustments to the resultant path to account
 
  58  * for special paths which are either considered common among worktrees (e.g.
 
  59  * paths into the object directory) or have been explicitly set via an
 
  60  * environment variable or config (e.g. path to the index file).
 
  62  * For an exhaustive list of the adjustments made look at `common_list` and
 
  63  * `adjust_git_path` in path.c.
 
  67  * Return a path into the git directory of repository `repo`.
 
  69 char *repo_git_path(const struct repository *repo,
 
  71         __attribute__((format (printf, 2, 3)));
 
  74  * Construct a path into the git directory of repository `repo` and append it
 
  75  * to the provided buffer `sb`.
 
  77 void strbuf_repo_git_path(struct strbuf *sb,
 
  78                           const struct repository *repo,
 
  80         __attribute__((format (printf, 3, 4)));
 
  83  * Return a statically allocated path into the main repository's
 
  84  * (the_repository) git directory.
 
  86 const char *git_path(const char *fmt, ...)
 
  87         __attribute__((format (printf, 1, 2)));
 
  90  * Return a path into the main repository's (the_repository) git directory.
 
  92 char *git_pathdup(const char *fmt, ...)
 
  93         __attribute__((format (printf, 1, 2)));
 
  96  * Construct a path into the main repository's (the_repository) git directory
 
  97  * and place it in the provided buffer `buf`, the contents of the buffer will
 
 100 char *git_path_buf(struct strbuf *buf, const char *fmt, ...)
 
 101         __attribute__((format (printf, 2, 3)));
 
 104  * Construct a path into the main repository's (the_repository) git directory
 
 105  * and append it to the provided buffer `sb`.
 
 107 void strbuf_git_path(struct strbuf *sb, const char *fmt, ...)
 
 108         __attribute__((format (printf, 2, 3)));
 
 111  * Return a path into the worktree of repository `repo`.
 
 113  * If the repository doesn't have a worktree NULL is returned.
 
 115 char *repo_worktree_path(const struct repository *repo,
 
 116                                 const char *fmt, ...)
 
 117         __attribute__((format (printf, 2, 3)));
 
 120  * Construct a path into the worktree of repository `repo` and append it
 
 121  * to the provided buffer `sb`.
 
 123  * If the repository doesn't have a worktree nothing will be appended to `sb`.
 
 125 void strbuf_repo_worktree_path(struct strbuf *sb,
 
 126                                       const struct repository *repo,
 
 127                                       const char *fmt, ...)
 
 128         __attribute__((format (printf, 3, 4)));
 
 131  * Return a path into a submodule's git directory located at `path`.  `path`
 
 132  * must only reference a submodule of the main repository (the_repository).
 
 134 char *git_pathdup_submodule(const char *path, const char *fmt, ...)
 
 135         __attribute__((format (printf, 2, 3)));
 
 138  * Construct a path into a submodule's git directory located at `path` and
 
 139  * append it to the provided buffer `sb`.  `path` must only reference a
 
 140  * submodule of the main repository (the_repository).
 
 142 int strbuf_git_path_submodule(struct strbuf *sb, const char *path,
 
 143                                      const char *fmt, ...)
 
 144         __attribute__((format (printf, 3, 4)));
 
 146 void report_linked_checkout_garbage(void);
 
 149  * You can define a static memoized git path like:
 
 151  *    static GIT_PATH_FUNC(git_path_foo, "FOO")
 
 153  * or use one of the global ones below.
 
 155 #define GIT_PATH_FUNC(func, filename) \
 
 156         const char *func(void) \
 
 160                         ret = git_pathdup(filename); \
 
 164 #define REPO_GIT_PATH_FUNC(var, filename) \
 
 165         const char *git_path_##var(struct repository *r) \
 
 167                 if (!r->cached_paths.var) \
 
 168                         r->cached_paths.var = repo_git_path(r, filename); \
 
 169                 return r->cached_paths.var; \
 
 173         const char *cherry_pick_head;
 
 174         const char *revert_head;
 
 175         const char *squash_msg;
 
 176         const char *merge_msg;
 
 177         const char *merge_rr;
 
 178         const char *merge_mode;
 
 179         const char *merge_head;
 
 180         const char *fetch_head;
 
 184 #define PATH_CACHE_INIT { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
 
 186 const char *git_path_cherry_pick_head(struct repository *r);
 
 187 const char *git_path_revert_head(struct repository *r);
 
 188 const char *git_path_squash_msg(struct repository *r);
 
 189 const char *git_path_merge_msg(struct repository *r);
 
 190 const char *git_path_merge_rr(struct repository *r);
 
 191 const char *git_path_merge_mode(struct repository *r);
 
 192 const char *git_path_merge_head(struct repository *r);
 
 193 const char *git_path_fetch_head(struct repository *r);
 
 194 const char *git_path_shallow(struct repository *r);
 
 197 int ends_with_path_components(const char *path, const char *components);