patch.pathtransform: prepend prefix even if strip is 0
authorSiddharth Agarwal <sid0@fb.com>
Wed, 18 Mar 2015 20:59:06 -0700
changeset 24385 885a573fa619
parent 24384 5cb459dc32d2
child 24386 d6ac30f4edef
patch.pathtransform: prepend prefix even if strip is 0 Silly oversight by me.
mercurial/patch.py
tests/test-import-git.t
--- a/mercurial/patch.py	Tue Oct 28 22:32:18 2014 -0700
+++ b/mercurial/patch.py	Wed Mar 18 20:59:06 2015 -0700
@@ -1465,6 +1465,8 @@
     ('', '   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 @@
     pathlen = len(path)
     i = 0
     if strip == 0:
-        return '', path.rstrip()
+        return '', prefix + path.rstrip()
     count = strip
     while count > 0:
         i = path.find('/', i)
--- a/tests/test-import-git.t	Tue Oct 28 22:32:18 2014 -0700
+++ b/tests/test-import-git.t	Wed Mar 18 20:59:06 2015 -0700
@@ -626,6 +626,29 @@
   adding dir/d
   adding dir/dir2/b
   adding dir/dir2/c
+  $ hg import --no-commit --prefix dir/ - <<EOF
+  > 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