81b9e6cce138452ab50c1dee869b82a9f6706d34
[git.git] / git-branch.sh
1 #!/bin/sh
2
3 . git-sh-setup || die "Not a git archive"
4
5 usage () {
6     echo >&2 "usage: $(basename $0)"' [<branchname> [start-point]]
7
8 If no arguments, show available branches and mark current branch with a star.
9 If one argument, create a new branch <branchname> based off of current HEAD.
10 If two arguments, create a new branch <branchname> based off of <start-point>.
11 '
12     exit 1
13 }
14
15 case "$#" in
16 0)
17         headref=$(readlink "$GIT_DIR/HEAD" | sed -e 's|^refs/heads/||')
18         git-rev-parse --symbolic --all |
19         sed -ne 's|^refs/heads/||p' |
20         sort |
21         while read ref
22         do
23                 if test "$headref" = "$ref"
24                 then
25                         pfx='*'
26                 else
27                         pfx=' '
28                 fi
29                 echo "$pfx $ref"
30         done
31         exit 0 ;;
32 1)
33         head=HEAD ;;
34 2)
35         head="$2^0" ;;
36 esac
37 branchname="$1"
38
39 case "$branchname" in
40 -*)
41         usage;;
42 esac
43
44 rev=$(git-rev-parse --verify "$head") || exit
45
46 [ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists"
47
48 echo $rev > "$GIT_DIR/refs/heads/$branchname"