# HG changeset patch # User Gregory Szorc # Date 2015-04-28 17:19:46 # Node ID 4ec40a4db64ac46b480359e455c2cfb7b81972e8 # Parent 95a67d687903af94df9d6cd8ca4efd0f1252f8de rebase: don't forward "source" argument to rebase (issue4633) `hg pull` takes an optional "source" argument to define the path/url to pull from. Under some circumstances, this option could get proxied to rebase and interpretted as the --source argument to rebase, leading to unexpected behavior. In my local environment, "source" always appears in "opts" in pullrebase. However, when attempting to write a test, I couldn't reproduce this. Instead, the source is being captured as a positional argument in "args." I suspect an interaction between **kwargs and an extension is to blame for the differences in behavior. This is why no test has been written. I have tested behavior locally and the patch has the intended side-effect of making `hg pull --rebase` work again. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1040,6 +1040,10 @@ def pullrebase(orig, ui, repo, *args, ** # dropping it if 'rev' in opts: del opts['rev'] + # positional argument from pull conflicts with rebase's own + # --source. + if 'source' in opts: + del opts['source'] rebase(ui, repo, **opts) branch = repo[None].branch() dest = repo[branch].rev()