changegroup: introduce safeversion()
In a few places (at least repair.py and shelve.py), we want to find
the best changegroup version that we can assume users of the repo will
understand. For example, we choose version 01 by default, but if it's
a generaldelta repo, we expect clients to support version 02 anyway,
so we choose that for new bundles (for e.g. "hg strip"). Let's create
a helper for this functionality in changegroup, so we can reuse it
elsewhere later.
== Local
Ready.
Un and Deux
Eins und Zwei
One and Two
Nope
Eins und Zwei
Hello, John Smith
Ready.
Uno und Due
== Remote
Ready.
REQ: foo?one=Vo&two=Efvy
-> Vo!boe!Efvy
Un and Deux
REQ: bar?b=Fjot&a=[xfj
-> Fjot!voe![xfj
Eins und Zwei
REQ: batch?cmds=foo:one=Pof,two=Uxp;bar:b=Fjot,a=[xfj
-> Pof!boe!Uxp;Fjot!voe![xfj
REQ: greet?name=Kpio!Tnjui
-> Ifmmp-!Kpio!Tnjui
REQ: batch?cmds=bar:b=Vop,a=Evf
-> Vop!voe!Evf
One and Two
Nope
Eins und Zwei
Hello, John Smith
Ready.
Uno und Due