Richard Hansen wrote:
> Signed-off-by: Richard Hansen <[email protected]>
> ---
> contrib/remote-helpers/git-remote-bzr | 34 +++++++++++++++++++++++++++++++++-
> contrib/remote-helpers/test-bzr.sh | 22 +++++++++++++++++++++-
> 2 files changed, 54 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/remote-helpers/git-remote-bzr
> b/contrib/remote-helpers/git-remote-bzr
> index 7e34532..ba693d1 100755
> --- a/contrib/remote-helpers/git-remote-bzr
> +++ b/contrib/remote-helpers/git-remote-bzr
> @@ -42,6 +42,7 @@ import json
> import re
> import StringIO
> import atexit, shutil, hashlib, urlparse, subprocess
> +import types
>
> NAME_RE = re.compile('^([^<>]+)')
> AUTHOR_RE = re.compile('^([^<>]+?)? ?[<>]([^<>]*)(?:$|>)')
> @@ -684,7 +685,8 @@ def do_export(parser):
> peer = bzrlib.branch.Branch.open(peers[name],
>
> possible_transports=transports)
> try:
> - peer.bzrdir.push_branch(branch, revision_id=revid)
> + peer.bzrdir.push_branch(branch, revision_id=revid,
> + overwrite=force)
> except bzrlib.errors.DivergedBranches:
> print "error %s non-fast forward" % ref
> continue
> @@ -718,8 +720,34 @@ def do_capabilities(parser):
> print "*import-marks %s" % path
> print "*export-marks %s" % path
>
> + print "option"
> print
>
> +class InvalidOptionValue(Exception):
> + pass
> +
> +def do_option(parser):
> + (opt, val) = parser[1:3]
> + handler = globals().get('do_option_' + opt)
> + if handler and type(handler) == types.FunctionType:
> + try:
> + handler(val)
> + except InvalidOptionValue:
> + print "error '%s' is not a valid value for option '%s'" % (val,
> opt)
> + else:
> + print "unsupported"
> +
> +def do_bool_option(val):
> + if val == 'true': ret = True
> + elif val == 'false': ret = False
> + else: raise InvalidOptionValue()
> + print "ok"
> + return ret
> +
> +def do_option_force(val):
> + global force
> + force = do_bool_option(val)
> +
While this organization has merit, I think it's overkill for a single option,
or just a couple of them. If in the future we add more, we might revisit this,
for the moment something like this would suffice:
class InvalidOptionValue(Exception):
pass
def get_bool_option(val):
if val == 'true':
return True
elif val == 'false':
return False
else:
raise InvalidOptionValue()
def do_option(parser):
global force
_, key, value = parser.line.split(' ')
try:
if key == 'force':
force = get_bool_option(value)
print 'ok'
else:
print 'unsupported'
except InvalidOptionValue:
print "error '%s' is not a valid value for option '%s'" % (value,
key)
Cheers.
--
Felipe Contreras
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html