	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 case of producing collapsed history in new branch,
	you can use this collapsed structure either for providing
	a pull source for upstream, or 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 of topic branches:

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

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

	master$ tg export for-linus

	will create this commit structure on branch for-linus:

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

	In case of 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 reimporting it into a Git branch.  (More or less
	because the topologic order can usually be extended in more than one
	way into a complete ordering and the two methods may choose different
	one's.)  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.

	In case of the quilt mode,

	master$ tg export --quilt for-linus

	would create this 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

	The command works on the current topic branch
	and can be called either without a parameter
	(in that case, '--collapse' is assumed)
	and with one mandatory argument: the name of the branch
	where the exported result shall be stored.
	The branch will be silently overwritten if it exists already!
	Use git reflog to recover in case of mistake.

	Alternatively, call it with the '--quilt' parameter
	and an argument specifying the directory
	where the quilt series should be saved.

	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 option '--flatten' the names are mangled such that
	they end up directly in the output dir (i.e. slashed are substituted by
	underscores).  With '--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.

	Usage: tg export ([(--collapse | --linearize)] BRANCH | --quilt DIR)

	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

