Mercurial > hg
changeset 7508:b3ae5d52c405
Merge with crew-stable
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Thu, 11 Dec 2008 23:36:43 +0100 |
parents | d8cd79fbed3c (current diff) 8e76e9f67cb3 (diff) |
children | f43a8b0ca3e8 |
files | |
diffstat | 3 files changed, 28 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/patch.py Wed Dec 10 16:29:53 2008 +0000 +++ b/mercurial/patch.py Thu Dec 11 23:36:43 2008 +0100 @@ -22,17 +22,20 @@ # helper functions -def copyfile(src, dst, basedir=None): - if not basedir: - basedir = os.getcwd() - - abssrc, absdst = [os.path.join(basedir, n) for n in (src, dst)] +def copyfile(src, dst, basedir): + abssrc, absdst = [util.canonpath(basedir, basedir, x) for x in [src, dst]] if os.path.exists(absdst): raise util.Abort(_("cannot create %s: destination already exists") % dst) - if not os.path.isdir(basedir): - os.makedirs(basedir) + dstdir = os.path.dirname(absdst) + if dstdir and not os.path.isdir(dstdir): + try: + os.makedirs(dstdir) + except IOError: + raise util.Abort( + _("cannot create %s: unable to create destination directory") + % dst) util.copyfile(abssrc, absdst) @@ -977,9 +980,7 @@ cwd = os.getcwd() for gp in gitpatches: if gp.op in ('COPY', 'RENAME'): - src, dst = [util.canonpath(cwd, cwd, x) - for x in [gp.oldpath, gp.path]] - copyfile(src, dst) + copyfile(gp.oldpath, gp.path, cwd) changed[gp.path] = gp else: raise util.Abort(_('unsupported parser state: %s') % state)
--- a/tests/test-mq-missingfiles Wed Dec 10 16:29:53 2008 +0000 +++ b/tests/test-mq-missingfiles Thu Dec 11 23:36:43 2008 +0100 @@ -71,3 +71,15 @@ cat b.rej cd .. +echo % test push creating directory during git copy or rename +hg init missingdir +cd missingdir +echo a > a +hg ci -Am adda +mkdir d +hg copy a d/a2 +hg mv a d/a +hg qnew -g -f patch +hg qpop +hg qpush +cd ..
--- a/tests/test-mq-missingfiles.out Wed Dec 10 16:29:53 2008 +0000 +++ b/tests/test-mq-missingfiles.out Thu Dec 11 23:36:43 2008 +0100 @@ -47,3 +47,8 @@ literal 2 Jc${No0000400IC2 +% test push creating directory during git copy or rename +adding a +Patch queue now empty +applying patch +Now at: patch