1#ifndef BRANCH_H2#define BRANCH_H34/* Functions for acting on the information about branches. */56/*7* Creates a new branch, where:8*9* - name is the new branch name10*11* - start_name is the name of the existing branch that the new branch should12* start from13*14* - force enables overwriting an existing (non-head) branch15*16* - clobber_head_ok allows the currently checked out (hence existing)17* branch to be overwritten; without 'force', it has no effect.18*19* - reflog creates a reflog for the branch20*21* - quiet suppresses tracking information22*23* - track causes the new branch to be configured to merge the remote branch24* that start_name is a tracking branch for (if any).25*26*/27void create_branch(const char *name, const char *start_name,28int force, int clobber_head_ok,29int reflog, int quiet, enum branch_track track);3031/*32* Check if 'name' can be a valid name for a branch; die otherwise.33* Return 1 if the named branch already exists; return 0 otherwise.34* Fill ref with the full refname for the branch.35*/36extern int validate_branchname(const char *name, struct strbuf *ref);3738/*39* Check if a branch 'name' can be created as a new branch; die otherwise.40* 'force' can be used when it is OK for the named branch already exists.41* Return 1 if the named branch already exists; return 0 otherwise.42* Fill ref with the full refname for the branch.43*/44extern int validate_new_branchname(const char *name, struct strbuf *ref, int force);4546/*47* Remove information about the state of working on the current48* branch. (E.g., MERGE_HEAD)49*/50void remove_branch_state(void);5152/*53* Configure local branch "local" as downstream to branch "remote"54* from remote "origin". Used by git branch --set-upstream.55* Returns 0 on success.56*/57#define BRANCH_CONFIG_VERBOSE 0158extern int install_branch_config(int flag, const char *local, const char *origin, const char *remote);5960/*61* Read branch description62*/63extern int read_branch_desc(struct strbuf *, const char *branch_name);6465/*66* Check if a branch is checked out in the main worktree or any linked67* worktree and die (with a message describing its checkout location) if68* it is.69*/70extern void die_if_checked_out(const char *branch, int ignore_current_worktree);7172/*73* Update all per-worktree HEADs pointing at the old ref to point the new ref.74* This will be used when renaming a branch. Returns 0 if successful, non-zero75* otherwise.76*/77extern int replace_each_worktree_head_symref(const char *oldref, const char *newref,78const char *logmsg);7980#endif