Create/delete branch ref logs.
When crating a new branch offer '-l' as a way for the user to quickly enable ref logging for the new branch. When deleting a branch also delete its ref log. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									67644a4d77
								
							
						
					
					
						commit
						3a4b3f269c
					
				|  | @ -9,7 +9,7 @@ SYNOPSIS | |||
| -------- | ||||
| [verse] | ||||
| 'git-branch' [-r] | ||||
| 'git-branch' [-f] <branchname> [<start-point>] | ||||
| 'git-branch' [-l] [-f] <branchname> [<start-point>] | ||||
| 'git-branch' (-d | -D) <branchname>... | ||||
|  | ||||
| DESCRIPTION | ||||
|  | @ -23,7 +23,8 @@ If no <start-point> is given, the branch will be created with a head | |||
| equal to that of the currently checked out branch. | ||||
|  | ||||
| With a `-d` or `-D` option, `<branchname>` will be deleted.  You may | ||||
| specify more than one branch for deletion. | ||||
| specify more than one branch for deletion.  If the branch currently | ||||
| has a ref log then the ref log will also be deleted. | ||||
|  | ||||
|  | ||||
| OPTIONS | ||||
|  | @ -34,6 +35,11 @@ OPTIONS | |||
| -D:: | ||||
| 	Delete a branch irrespective of its index status. | ||||
|  | ||||
| -l:: | ||||
| 	Create the branch's ref log.  This activates recording of | ||||
| 	all changes to made the branch ref, enabling use of date | ||||
| 	based sha1 expressions such as "<branchname>@{yesterday}". | ||||
|  | ||||
| -f:: | ||||
| 	Force the creation of a new branch even if it means deleting | ||||
| 	a branch that already exists with the same name. | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| #!/bin/sh | ||||
|  | ||||
| USAGE='[(-d | -D) <branchname>] | [[-f] <branchname> [<start-point>]] | -r' | ||||
| USAGE='[-l] [(-d | -D) <branchname>] | [[-f] <branchname> [<start-point>]] | -r' | ||||
| LONG_USAGE='If no arguments, show available branches and mark current branch with a star. | ||||
| If one argument, create a new branch <branchname> based off of current HEAD. | ||||
| If two arguments, create a new branch <branchname> based off of <start-point>.' | ||||
|  | @ -42,6 +42,7 @@ If you are sure you want to delete it, run 'git branch -D $branch_name'." | |||
| 	    esac | ||||
| 	    ;; | ||||
| 	esac | ||||
| 	rm -f "$GIT_DIR/logs/refs/heads/$branch_name" | ||||
| 	rm -f "$GIT_DIR/refs/heads/$branch_name" | ||||
| 	echo "Deleted branch $branch_name." | ||||
|     done | ||||
|  | @ -55,6 +56,7 @@ ls_remote_branches () { | |||
| } | ||||
|  | ||||
| force= | ||||
| create_log= | ||||
| while case "$#,$1" in 0,*) break ;; *,-*) ;; *) break ;; esac | ||||
| do | ||||
| 	case "$1" in | ||||
|  | @ -69,6 +71,9 @@ do | |||
| 	-f) | ||||
| 		force="$1" | ||||
| 		;; | ||||
| 	-l) | ||||
| 		create_log="yes" | ||||
| 		;; | ||||
| 	--) | ||||
| 		shift | ||||
| 		break | ||||
|  | @ -117,4 +122,9 @@ then | |||
| 		die "cannot force-update the current branch." | ||||
| 	fi | ||||
| fi | ||||
| if test "$create_log" = 'yes' | ||||
| then | ||||
| 	mkdir -p $(dirname "$GIT_DIR/logs/refs/heads/$branchname") | ||||
| 	touch "$GIT_DIR/logs/refs/heads/$branchname" | ||||
| fi | ||||
| git update-ref -m "branch: Created from $head" "refs/heads/$branchname" $rev | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Shawn Pearce
						Shawn Pearce