2 # TopGit - A different patch queue manager
3 # Copyright (C) Petr Baudis <pasky@suse.cz> 2008
4 # Copyright (C) Kyle J. McKay <mackyle@gmail.com> 2015
8 USAGE
="Usage: ${tgname:-tg} [...] depend add [--no-update | --no-commit] <name>"
14 printf '%s\n' "$USAGE" >&2
27 die
"unknown subcommand ($subcmd)";;
43 [ -z "$name" ] || die
"name already specified ($name)"
51 [ -n "$name" ] || die
"no branch name specified"
52 branchrev
="$(git rev-parse --verify "refs
/heads
/$name" -- 2>/dev/null)" ||
53 die
"invalid branch name: $name"
55 # Check that we are on a TopGit branch.
56 current_name
="$(verify_topgit_branch HEAD)"
58 ## Record new dependency
61 [ "$name" = "$current_name" ] &&
62 die
"$name cannot depend on itself."
64 { $tg summary
--deps; echo "$current_name" "$name"; } |
66 die
"$tgname: that dependency would introduce a dependency loop"
68 grep -F -x -e "$name" "$root_dir/.topdeps" >/dev
/null
&&
69 die
"$tgname: $current_name already depends on $name"
71 [ -n "$nocommit" ] || ensure_ident_available
72 echol
"$name" >>"$root_dir/.topdeps"
73 git add
-f "$root_dir/.topdeps"
74 msg
=".topdeps: add new dependency $name"
75 [ -z "$nocommit" ] ||
{
76 [ -s "$git_dir/MERGE_MSG" ] ||
printf '%s\n' "$msg" >"$git_dir/MERGE_MSG"
77 info
"added new dependency $name to .topdeps and staged it"
78 info
"run \`git commit\` then \`tg update\` to complete addition"
81 git commit
-m "$msg" "$root_dir/.topdeps"
82 [ -z "$noupdate" ] ||
{
83 info
"be sure to run \`tg update\` at some point"
86 (ensure_clean_tree
) ||
{
87 warn
"skipping needed \`tg update\` since worktree is dirty"
88 warn
"be sure to run \`tg update\` when worktree is clean"