	Export a tidied-up history of the current topic branch and its
	dependencies, suitable for feeding upstream.  Each topic branch
	corresponds to a single commit or patch in the cleaned up
	history (corresponding basically exactly to `tg patch` output
	for the topic branch).

	The command has three possible outputs now - either a Git branch
	with the collapsed history, a Git branch with a linearized
	history, or a quilt series in new directory.

	In the case where you are producing collapsed history in a new
	branch, you can use this collapsed structure either for
	providing a pull source for upstream, or for further
	linearization e.g. for creation of a quilt series using git log:

		git log --pretty=email -p --topo-order origin..exported

	To better understand the function of `tg export`, consider this
	dependency structure:

	origin/master - t/foo/blue - t/foo/red - master
	             `- t/bar/good <,----------'
	             `- t/baz      ------------'

	(where each of the branches may have a hefty history). Then

	master$ tg export for-linus

	will create this commit structure on the branch 'for-linus':

	origin/master - t/foo/blue -. merge - t/foo/red -.. merge - master
	             `- t/bar/good <,-------------------'/
	             `- t/baz      ---------------------'

	In this mode, `tg export` works on the current topic branch, and
	can be called either without an option (in that case,
	'--collapse' is assumed), or with the '--collapse' option, and
	with one mandatory argument: the name of the branch where the
	exported result will be stored.

	WARNING: The branch will be silently overwritten if it exists
	already!  If you make a mistake, use `git reflog` to recover.

	When using the linearize mode:

	master$ tg export --linearize for-linus

	you get a linear history respecting the dependencies of your
	patches in a new branch 'for-linus'.  The result should be more
	or less the same as using quilt mode and then reimporting it
	into a Git branch.  (More or less because the topological order
	can usually be extended in more than one way into a total order,
	and the two methods may choose different ones.)  The result
	might be more appropriate for merging upstream, as it contains
	fewer merges.

	Note that you might get conflicts during linearization because
	the patches are reordered to get a linear history.

	When using the quilt mode,

	master$ tg export --quilt for-linus

	would create the following directory 'for-linus':

	for-linus/t/foo/blue.diff
	for-linus/t/foo/red.diff
	for-linus/t/bar/good.diff
	for-linus/t/baz.diff
	for-linus/series:
		t/foo/blue.diff -p1
		t/bar/good.diff -p1
		t/foo/red.diff -p1
		t/baz.diff -p1

	With '--quilt', you can also pass '-b' parameter followed by
	a comma-separated explicit list of branches to export. This
	mode of operation is currently not supported with '--collapse'.

	In '--quilt' mode the patches are named like the originating
	topgit branch.  So usually they end up in subdirectories of the
	output directory.  With the '--flatten' option the names are
	mangled so that they end up directly in the output dir (slashes
	are substituted by underscores).  With the '--strip[=N]' option
	the first 'N' subdirectories (all if no 'N' is given) get
	stripped off.  Names are always '--strip'ped before being
	'--flatten'ed.  With the option '--numbered' (which implies
	'--flatten') the patch names get a number as prefix to allow
	getting the order without consulting the series file, which
	eases sending out the patches.

	TODO: Make stripping of non-essential headers configurable
	TODO: Make stripping of [PATCH] and other prefixes configurable
	TODO: --mbox option for other mode of operation
	TODO: -a option to export all branches
	TODO: For quilt exporting, export the linearized history created in a
	      temporary branch---this would allow producing conflict-less
	      series

