arg="$1"; shift
case "$arg" in
-*)
- echo "Usage: tg info [NAME]" >&2
+ echo "Usage: tg [...] info [NAME]" >&2
exit 1;;
*)
[ -z "$name" ] || die "name already specified ($name)"
esac
done
-[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')"
+[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')"
base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" ||
die "not a TopGit-controlled branch"
echo "Topic Branch: $name ($measure)"
if [ "$(git rev-parse --short "$name")" = "$base_rev" ]; then
- echo "No commits."
+ echo "* No commits."
exit 0
fi
-git cat-file blob "$name:.topmsg" | grep ^Subject:
+git cat-file blob "$name:.topmsg" | grep ^Subject: || :
echo "Base: $base_rev"
branch_contains "$name" "$base_rev" ||
- echo "Base is newer than head! Please run \`tg update\`."
+ echo "* Base is newer than head! Please run \`$tg update\`."
+
+if has_remote "$name"; then
+ echo "Remote Mate: $base_remote/$name"
+ branch_contains "$base_rev" "refs/remotes/$base_remote/top-bases/$name" ||
+ echo "* Local base is out of date wrt. the remote base."
+ branch_contains "$name" "refs/remotes/$base_remote/$name" ||
+ echo "* Local head is out of date wrt. the remote head."
+ branch_contains "refs/remotes/$base_remote/$name" "$name" ||
+ echo "* Local head is ahead of the remote head."
+fi
git cat-file blob "$name:.topdeps" |
sed '1{ s/^/Depends: /; n; }; s/^/ /;'
echo "Up-to-date."
fi
rm "$depcheck"
+
+# vim:noet