## Parse options
if [ -n "$1" ]; then
- echo "Usage: tg update" >&2
+ echo "Usage: tg [...] update" >&2
exit 1
fi
(
export TG_RECURSIVE="[$dep] $TG_RECURSIVE"
export PS1="[$dep] $PS1"
- while ! tg update; do
+ while ! $tg update; do
# The merge got stuck! Let the user fix it up.
info "You are in a subshell. If you abort the merge,"
info "use \`exit 1\` to abort the recursive update altogether."
info "Updating base with $dep changes..."
if ! git merge "$dep"; then
if [ -z "$TG_RECURSIVE" ]; then
- resume='`tg update` again'
+ resume="\`git checkout $name && $tg update\` again"
else # subshell
resume='exit'
fi
exit 2
fi
done
-
- # Home, sweet home...
- git checkout -q "$name"
else
info "The base is up-to-date."
fi
rm "$depcheck"
+# Home, sweet home...
+# (We want to always switch back, in case we were on the base from failed
+# previous merge.)
+git checkout -q "$name"
+
merge_with="refs/top-bases/$name"
## Second, update our head with the remote branch
-rname="refs/remotes/$base_remote/$name"
-if [ -n "$base_remote" ] && ref_exists "$rname"; then
+if has_remote "$name"; then
+ rname="refs/remotes/$base_remote/$name"
if branch_contains "$name" "$rname"; then
info "The $name head is up-to-date wrt. its remote branch."
else
if [ -z "$TG_RECURSIVE" ]; then
info "Please commit merge resolution. No need to do anything else"
info "You can abort this operation using \`git reset --hard\` now"
- info "and retry this merge later using \`tg update\`."
+ info "and retry this merge later using \`$tg update\`."
else # subshell
info "Please commit merge resolution and call exit."
info "You can abort this operation using \`git reset --hard\`."