	Update the current, specified or all topic branches with respect
	to changes in the branches they depend on and remote branches.
	This is performed in two phases - first, changes within the
	dependencies are merged to the base, then the base is merged
	into the topic branch.  The output will guide you on what to do
	next in case of conflicts.

	When '-a' is specified, updates all topic branches matched by
	<pattern>s (see `git-for-each-ref(1)` for details), or all if
	no <pattern> is given.

	After the update, if a single topic branch was specified, it is
	left as the current one; if '-a' was specified, it returns to
	the branch which was current at the beginning.

	If your dependencies are not up-to-date, `tg update` will first
	recurse into them and update them.

	If a remote branch update brings in dependencies on branches
	that are not yet instantiated locally, you can either bring in
	all the new branches from the remote using `tg remote
	--populate`, or only pick out the missing ones using `tg create
	-r` (`tg summary` will point out branches with incomplete
	dependencies by showing an '!' next to them).

	You can use a different command instead of the default 'git merge'
	when updating or creating branches (TODO: or adding a new dependency).

	* If set, the environment variable TG_MERGE is the global
	  default for all recursive invocations of `tg update` 
	  (as well as `tg create`).

	* But it can be overriden for the current branch with
	  '--this-with CMD' option. (It is effective for the branches
	  processed by the toplevel `tg update` or `tg create` process.)

	This will help, if you want 'git merge -s ours' only into the
	current branch. For example, with a custom message to attract
	attention:

	--this-with='git merge -s ours -m "merge -s ours"'

	In contrast, if what you want to do with every processed
	branch is to rebase, then you use:

	TG_MERGE='git rebase --preserve-merges' tg update ...

	TODO: tg update -a -c to autoremove (clean) up-to-date branches

