Makefile: add install-doc target
[topgit/pro.git] / tg-depend.sh
blob754fd78e2037b2300fec7bb334ad190a464890fb
1 #!/bin/sh
2 # TopGit - A different patch queue manager
3 # (c) Petr Baudis <pasky@suse.cz> 2008
4 # GPLv2
6 name=
8 usage()
10 echo "Usage: ${tgname:-tg} [...] depend add <name>" >&2
11 exit 1
14 ## Parse options
16 subcmd="$1"
17 case "$subcmd" in
18 -h|"")
19 usage;;
20 add)
23 die "unknown subcommand ($subcmd)";;
24 esac
25 shift
27 while [ -n "$1" ]; do
28 arg="$1"; shift
29 case "$arg" in
30 -*)
31 usage;;
33 [ -z "$name" ] || die "name already specified ($name)"
34 name="$arg";;
35 esac
36 done
39 ## Sanity checks
41 [ -n "$name" ] || die "no branch name specified"
42 branchrev="$(git rev-parse --verify "$name" -- 2>/dev/null)" ||
43 die "invalid branch name: $name"
45 # Check that we are on a TopGit branch.
46 current_name="$(strip_ref "$(git symbolic-ref HEAD 2>/dev/null)")"
47 current_base_rev="$(git rev-parse --short --verify "refs/top-bases/$current_name" -- 2>/dev/null)" ||
48 die "not a TopGit-controlled branch"
50 ## Record new dependency
51 depend_add()
53 [ "$name" = "$current_name" ] &&
54 die "$name cannot depend on itself."
56 { $tg summary --deps; echo "$current_name" "$name"; } |
57 tsort >/dev/null ||
58 die "$tgname: that dependency would introduce a dependency loop"
60 grep -F -x -e "$name" "$root_dir/.topdeps" >/dev/null &&
61 die "$tgname: $current_name already depends on $name"
63 echo "$name" >>"$root_dir/.topdeps"
64 git add -f "$root_dir/.topdeps"
65 git commit -m ".topdeps: add new dependency $name"
66 $tg update
69 depend_$subcmd
71 # vim:noet