diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -1465,6 +1465,8 @@ def pathtransform(path, strip, prefix): ('', ' a/b/c') >>> pathtransform(' a/b/c ', 2, '') ('a/b/', 'c') + >>> pathtransform('a/b/c', 0, 'd/e/') + ('', 'd/e/a/b/c') >>> pathtransform(' a//b/c ', 2, 'd/e/') ('a//b/', 'd/e/c') >>> pathtransform('a/b/c', 3, '') @@ -1474,7 +1476,7 @@ def pathtransform(path, strip, prefix): pathlen = len(path) i = 0 if strip == 0: - return '', path.rstrip() + return '', prefix + path.rstrip() count = strip while count > 0: i = path.find('/', i) diff --git a/tests/test-import-git.t b/tests/test-import-git.t --- a/tests/test-import-git.t +++ b/tests/test-import-git.t @@ -626,6 +626,29 @@ Prefix with strip, renames, creates etc adding dir/d adding dir/dir2/b adding dir/dir2/c + $ hg import --no-commit --prefix dir/ - < diff --git a/a b/a + > --- /dev/null + > +++ b/a + > @@ -0,0 +1 @@ + > +aaa + > diff --git a/d b/d + > --- a/d + > +++ b/d + > @@ -1,1 +1,2 @@ + > d + > +dd + > EOF + applying patch from stdin + $ cat dir/a + aaa + $ cat dir/d + d + dd + $ hg revert -aC + forgetting dir/a (glob) + reverting dir/d (glob) + $ rm dir/a (test that prefixes are relative to the root) $ mkdir tmpdir $ cd tmpdir