diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1312,7 +1312,7 @@ class localrepository(repo.repository): mylock = True try: - fetch = self.findincoming(remote, force=force) + fetch = self.findincoming(remote, heads=heads, force=force) if fetch == [nullid]: self.ui.status(_("requesting all changes\n")) diff --git a/tests/test-pull-r b/tests/test-pull-r new file mode 100755 --- /dev/null +++ b/tests/test-pull-r @@ -0,0 +1,27 @@ +#!/bin/sh + +hg init repo +cd repo +echo foo > foo +hg ci -qAm 'add foo' -d '0 0' +echo >> foo +hg ci -m 'change foo' -d '0 0' +hg up -qC 0 +echo bar > bar +hg ci -qAm 'add bar' -d '0 0' +hg log +cd .. +hg init copy +cd copy + +echo '% pull -r 0' +hg pull -qr 0 ../repo +hg log + +echo '% pull -r 1' +hg pull -qr 1 ../repo +hg log + +# this used to abort: received changelog group is empty +echo '% pull -r 1 again' +hg pull -qr 1 ../repo diff --git a/tests/test-pull-r.out b/tests/test-pull-r.out new file mode 100644 --- /dev/null +++ b/tests/test-pull-r.out @@ -0,0 +1,37 @@ +changeset: 2:effea6de0384 +tag: tip +parent: 0:bbd179dfa0a7 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add bar + +changeset: 1:ed1b79f46b9a +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: change foo + +changeset: 0:bbd179dfa0a7 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add foo + +% pull -r 0 +changeset: 0:bbd179dfa0a7 +tag: tip +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add foo + +% pull -r 1 +changeset: 1:ed1b79f46b9a +tag: tip +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: change foo + +changeset: 0:bbd179dfa0a7 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add foo + +% pull -r 1 again