#ifndef BRANCH_H
#define BRANCH_H
+struct repository;
+struct strbuf;
+
+enum branch_track {
+ BRANCH_TRACK_UNSPECIFIED = -1,
+ BRANCH_TRACK_NEVER = 0,
+ BRANCH_TRACK_REMOTE,
+ BRANCH_TRACK_ALWAYS,
+ BRANCH_TRACK_EXPLICIT,
+ BRANCH_TRACK_OVERRIDE
+};
+
+extern enum branch_track git_branch_track;
+
/* Functions for acting on the information about branches. */
/*
* Creates a new branch, where:
*
+ * - r is the repository to add a branch to
+ *
* - name is the new branch name
*
* - start_name is the name of the existing branch that the new branch should
*
* - force enables overwriting an existing (non-head) branch
*
+ * - clobber_head_ok allows the currently checked out (hence existing)
+ * branch to be overwritten; without 'force', it has no effect.
+ *
* - reflog creates a reflog for the branch
*
+ * - quiet suppresses tracking information
+ *
* - track causes the new branch to be configured to merge the remote branch
* that start_name is a tracking branch for (if any).
+ *
*/
-void create_branch(const char *name, const char *start_name,
- int force, int reflog,
- int clobber_head, int quiet, enum branch_track track);
+void create_branch(struct repository *r,
+ const char *name, const char *start_name,
+ int force, int clobber_head_ok,
+ int reflog, int quiet, enum branch_track track);
/*
* Check if 'name' can be a valid name for a branch; die otherwise.
* Remove information about the state of working on the current
* branch. (E.g., MERGE_HEAD)
*/
-void remove_branch_state(void);
+void remove_branch_state(struct repository *r);
/*
* Configure local branch "local" as downstream to branch "remote"