# HG changeset patch # User FUJIWARA Katsunori # Date 1384611260 -32400 # Node ID 6fb59247c7d5cb763ad28f8a2785171108b4db47 # Parent edbf7f1fd2a29f8ab01ad912e641321cbf2692c3 transplant: use peer of source repository as "remote" for "repo.pull()" Before this patch, transplant with "--merge" option fails with traceback unexpectedly, if it causes pull from the source repository on the local host. "discovery.findcommonincoming()" invokes "capable()" method on the object given from "localrepository.pull()", but it is "localrepository" object in this case and doesn't have such method. This patch uses peer object of source repository as "remote" argument for "localrepository.pull()" invocation like other invocations of it in transplant.py. diff -r edbf7f1fd2a2 -r 6fb59247c7d5 hgext/transplant.py --- a/hgext/transplant.py Fri Nov 15 22:57:11 2013 -0500 +++ b/hgext/transplant.py Sat Nov 16 23:14:20 2013 +0900 @@ -154,7 +154,7 @@ # transplants before them fail. domerge = True if not hasnode(repo, node): - repo.pull(source, heads=[node]) + repo.pull(source.peer(), heads=[node]) skipmerge = False if parents[1] != revlog.nullid: diff -r edbf7f1fd2a2 -r 6fb59247c7d5 tests/test-transplant.t --- a/tests/test-transplant.t Fri Nov 15 22:57:11 2013 -0500 +++ b/tests/test-transplant.t Sat Nov 16 23:14:20 2013 +0900 @@ -430,6 +430,20 @@ adding manifests adding file changes added 4 changesets with 4 changes to 4 files + +test "--merge" causing pull from source repository on local host + + $ hg --config extensions.mq= -q strip 2 + $ hg transplant -s ../t --merge tip + searching for changes + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + applying a53251cdf717 + 4:a53251cdf717 merged at 4831f4dc831a + $ cd ..