From: Junio C Hamano Date: Wed, 14 Sep 2005 08:46:50 GMT Subject: [PATCH] git-branch -d : delete unused branch. Message-ID: <7vvf14ox39.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <4326F2AE.50108@citi.umich.edu> The new flag '-d' lets you delete a branch. For safety, it does not lets you delete the branch you are currently on, nor a branch that has been fully merged into your current branch. The credit for the safety check idea goes to Daniel Barkalow. Signed-off-by: Junio C Hamano --- git-branch.sh | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 54 insertions(+), 6 deletions(-) 6a714989f83ccb93188dc37791da8a0f2e32cabe diff --git a/git-branch.sh b/git-branch.sh --- a/git-branch.sh +++ b/git-branch.sh @@ -3,7 +3,7 @@ . git-sh-setup || die "Not a git archive" usage () { - echo >&2 "usage: $(basename $0)"' [ [start-point]] + echo >&2 "usage: $(basename $0)"' [-d ] | [ [start-point]] If no arguments, show available branches and mark current branch with a star. If one argument, create a new branch based off of current HEAD. @@ -12,6 +12,59 @@ If two arguments, create a new branch &2 "The branch '$branch_name' is not a strict subset of your current HEAD. +If you are sure you want to delete it, run 'git branch -D $branch_name'." + exit 1 + ;; + esac + ;; + esac + rm -f "$GIT_DIR/refs/heads/$branch_name" + echo "Deleted branch $branch_name." + exit 0 +} + +while case "$#,$1" in 0,*) break ;; *,-*) ;; *) break ;; esac +do + case "$1" in + -d | -D) + delete_branch "$1" "$2" + exit + ;; + --) + shift + break + ;; + -*) + usage + ;; + esac + shift +done + case "$#" in 0) headref=$(readlink "$GIT_DIR/HEAD" | sed -e 's|^refs/heads/||') @@ -36,11 +89,6 @@ case "$#" in esac branchname="$1" -case "$branchname" in --*) - usage;; -esac - rev=$(git-rev-parse --verify "$head") || exit [ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists"