]>
Commit | Line | Data |
---|---|---|
37f1a519 LT |
1 | #!/bin/sh |
2 | ||
215a7ad1 | 3 | . git-sh-setup || die "Not a git archive" |
37f1a519 | 4 | |
a3b427b9 AW |
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 | ||
e4aec26f KV |
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) | |
a38e7279 | 33 | head=HEAD ;; |
e4aec26f | 34 | 2) |
a38e7279 JH |
35 | head="$2^0" ;; |
36 | esac | |
e4aec26f | 37 | branchname="$1" |
a3b427b9 AW |
38 | |
39 | case "$branchname" in | |
40 | -*) | |
41 | usage;; | |
42 | esac | |
43 | ||
ff84d327 | 44 | rev=$(git-rev-parse --verify "$head") || exit |
37f1a519 | 45 | |
37f1a519 LT |
46 | [ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists" |
47 | ||
48 | echo $rev > "$GIT_DIR/refs/heads/$branchname" |