bundle: introduce an higher level function to write bundle on disk
The current function ('writebundle') is focussing on getting an existing
changegroup to disk. It is no easy ways to includes more part in the generated
bundle2. So we introduce a slightly higher level function that is fed the
'outgoing' object (that defines the bundled spec) and the bundlespec parameters
(to control the changegroup generation and inclusion of other parts).
This is creating the third logic dedicated to create a consistent bundle2 (the
other 2 are the push code and the getbundle code). We should probably reconcile
them at some points but they all takes different types of input. So we need to
introduce an intermediate "object" that each different input could be converted
to. Such unified "bundle2 specification" could be fed to some unified code.
We start by having the `hg bundle` related code on its own to helps defines its
specific needs first. Once the common and specific parts of each logic will be
known we can start unification.
https://bz.mercurial-scm.org/612
$ hg init
$ mkdir src
$ echo a > src/a.c
$ hg ci -Ama
adding src/a.c
$ hg mv src source
moving src/a.c to source/a.c (glob)
$ hg ci -Ammove
$ hg co -C 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo new > src/a.c
$ echo compiled > src/a.o
$ hg ci -mupdate
created new head
$ hg status
? src/a.o
$ hg merge
merging src/a.c and source/a.c to source/a.c
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg status
M source/a.c
R src/a.c
? src/a.o