# HG changeset patch # User FUJIWARA Katsunori # Date 2013-02-17 15:04:28 # Node ID 61c8327ced503bf7a1996337af711e0f4a58d4c0 # Parent 7d66a44e87ede62a076000fb1099498155a64d71 bundle: treat branches created newly on the local correctly (issue3828) Before this patch, "hg bundle --branch foo other" fails to create bundle file, if specified "foo" branch is created newly on the local repository. "hg bundle" uses "hg.addbranchrevs(repo, other, ...)" to look branch names up, even though other outgoing-like implementation uses "hg.addbranchrevs(repo, repo, ...)". In the former invocation, "other" repository recognizes such branches as unknown, so execution is aborted. This patch uses "hg.addbranchrevs(repo, repo, ..)" in "hg bundle" to bundle revisions on such branches correctly. diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1066,7 +1066,7 @@ def bundle(ui, repo, fname, dest=None, * dest = ui.expandpath(dest or 'default-push', dest or 'default') dest, branches = hg.parseurl(dest, opts.get('branch')) other = hg.peer(repo, opts, dest) - revs, checkout = hg.addbranchrevs(repo, other, branches, revs) + revs, checkout = hg.addbranchrevs(repo, repo, branches, revs) heads = revs and map(repo.lookup, revs) or revs outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=heads, diff --git a/tests/test-bundle.t b/tests/test-bundle.t --- a/tests/test-bundle.t +++ b/tests/test-bundle.t @@ -522,6 +522,21 @@ note that percent encoding is not handle [255] $ cd .. +test to bundle revisions on the newly created branch (issue3828): + + $ hg -q clone -U test test-clone + $ cd test + + $ hg -q branch foo + $ hg commit -m "create foo branch" + $ hg -q outgoing ../test-clone + 9:b4f5acb1ee27 + $ hg -q bundle --branch foo foo.hg ../test-clone + $ hg -R foo.hg -q log -r "bundle()" + 9:b4f5acb1ee27 + + $ cd .. + test for http://mercurial.selenic.com/bts/issue1144 test that verify bundle does not traceback