The branch name in that case could be saved in rebase's head_name or bisect's BISECT_START files. Ideally we should try to update them as well. But it's trickier (*). Let's play safe and see if the user complains about inconveniences before doing that. (*) If we do it, bisect and rebase need to provide an API to rename branches. We can't do it in worktree.c or builtin/branch.c because when other people change rebase/bisect code, they may not be aware of this code and accidentally break it (e.g. rename the branch file, or refer to the branch in new files). It's a lot more work. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef WORKTREE_H
 | 
						|
#define WORKTREE_H
 | 
						|
 | 
						|
struct worktree {
 | 
						|
	char *path;
 | 
						|
	char *id;
 | 
						|
	char *head_ref;
 | 
						|
	unsigned char head_sha1[20];
 | 
						|
	int is_detached;
 | 
						|
	int is_bare;
 | 
						|
	int is_current;
 | 
						|
};
 | 
						|
 | 
						|
/* Functions for acting on the information about worktrees. */
 | 
						|
 | 
						|
/*
 | 
						|
 * Get the worktrees.  The primary worktree will always be the first returned,
 | 
						|
 * and linked worktrees will be pointed to by 'next' in each subsequent
 | 
						|
 * worktree.  No specific ordering is done on the linked worktrees.
 | 
						|
 *
 | 
						|
 * The caller is responsible for freeing the memory from the returned
 | 
						|
 * worktree(s).
 | 
						|
 */
 | 
						|
extern struct worktree **get_worktrees(void);
 | 
						|
 | 
						|
/*
 | 
						|
 * Return git dir of the worktree. Note that the path may be relative.
 | 
						|
 * If wt is NULL, git dir of current worktree is returned.
 | 
						|
 */
 | 
						|
extern const char *get_worktree_git_dir(const struct worktree *wt);
 | 
						|
 | 
						|
/*
 | 
						|
 * Free up the memory for worktree(s)
 | 
						|
 */
 | 
						|
extern void free_worktrees(struct worktree **);
 | 
						|
 | 
						|
/*
 | 
						|
 * Check if a per-worktree symref points to a ref in the main worktree
 | 
						|
 * or any linked worktree, and return the worktree that holds the ref,
 | 
						|
 * or NULL otherwise. The result may be destroyed by the next call.
 | 
						|
 */
 | 
						|
extern const struct worktree *find_shared_symref(const char *symref,
 | 
						|
						 const char *target);
 | 
						|
 | 
						|
int is_worktree_being_rebased(const struct worktree *wt, const char *target);
 | 
						|
int is_worktree_being_bisected(const struct worktree *wt, const char *target);
 | 
						|
 | 
						|
/*
 | 
						|
 * Similar to git_path() but can produce paths for a specified
 | 
						|
 * worktree instead of current one
 | 
						|
 */
 | 
						|
extern const char *worktree_git_path(const struct worktree *wt,
 | 
						|
				     const char *fmt, ...)
 | 
						|
	__attribute__((format (printf, 2, 3)));
 | 
						|
 | 
						|
#endif
 |