# HG changeset patch # User Yuya Nishihara # Date 1269757391 -32400 # Node ID 0c944b7af5643d41eef2048467a2470f7ca1fe64 # Parent 488a80c840ac4a2b85b47965aaf6eb717f0b2d99 mq: fixed ENOENT when qrename to new/directory.patch MQ patch name can contain slashes, e.g. 'foo/bar.patch'. Currently "qnew foo/bar.patch" works, but "qrename foo/bar.patch new/dir.patch" fails with "No such file or directory". Also added test case for "qnew foo/bar.patch" diff -r 488a80c840ac -r 0c944b7af564 hgext/mq.py --- a/hgext/mq.py Fri Jul 02 14:14:30 2010 -1000 +++ b/hgext/mq.py Sun Mar 28 15:23:11 2010 +0900 @@ -2311,6 +2311,9 @@ q.applied[info[0]] = statusentry(info[1], name) q.applied_dirty = 1 + destdir = os.path.dirname(absdest) + if not os.path.isdir(destdir): + os.makedirs(destdir) util.rename(q.join(patch), absdest) r = q.qrepo() if r: diff -r 488a80c840ac -r 0c944b7af564 tests/test-mq-qnew --- a/tests/test-mq-qnew Fri Jul 02 14:14:30 2010 -1000 +++ b/tests/test-mq-qnew Sun Mar 28 15:23:11 2010 +0900 @@ -25,6 +25,12 @@ hg qinit -c + echo '% qnew with name containing slash' + hg qnew foo/bar.patch + hg qseries + hg qpop + hg qdelete foo/bar.patch + echo '% qnew with uncommitted changes' echo a > somefile hg add somefile diff -r 488a80c840ac -r 0c944b7af564 tests/test-mq-qnew.out --- a/tests/test-mq-qnew.out Fri Jul 02 14:14:30 2010 -1000 +++ b/tests/test-mq-qnew.out Sun Mar 28 15:23:11 2010 +0900 @@ -8,6 +8,10 @@ abort: ".mqfoo" cannot be used as the name of a patch abort: "foo#bar" cannot be used as the name of a patch abort: "foo:bar" cannot be used as the name of a patch +% qnew with name containing slash +foo/bar.patch +popping foo/bar.patch +patch queue now empty % qnew with uncommitted changes uncommitted.patch % qnew implies add @@ -58,6 +62,10 @@ abort: ".mqfoo" cannot be used as the name of a patch abort: "foo#bar" cannot be used as the name of a patch abort: "foo:bar" cannot be used as the name of a patch +% qnew with name containing slash +foo/bar.patch +popping foo/bar.patch +patch queue now empty % qnew with uncommitted changes uncommitted.patch % qnew implies add diff -r 488a80c840ac -r 0c944b7af564 tests/test-mq-qrename --- a/tests/test-mq-qrename Fri Jul 02 14:14:30 2010 -1000 +++ b/tests/test-mq-qrename Sun Mar 28 15:23:11 2010 +0900 @@ -22,6 +22,9 @@ hg qrename bar/renamed baz hg qseries ls .hg/patches/baz +hg qrename baz new/dir +hg qseries +ls .hg/patches/new/dir cd .. echo % test patch being renamed before committed diff -r 488a80c840ac -r 0c944b7af564 tests/test-mq-qrename.out --- a/tests/test-mq-qrename.out Fri Jul 02 14:14:30 2010 -1000 +++ b/tests/test-mq-qrename.out Sun Mar 28 15:23:11 2010 +0900 @@ -5,4 +5,6 @@ renamed baz .hg/patches/baz +new/dir +.hg/patches/new/dir % test patch being renamed before committed