# HG changeset patch # User Brendan Cully # Date 2006-09-13 15:57:08 # Node ID 82c9d1aac308794583c5db6a655dc9be4354b3cd # Parent bed7cb835d8d94921bfc4d60af73a5676448b769 Make qrename handle directory targets; closes #333. diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -1651,13 +1651,6 @@ def rename(ui, repo, patch, name=None, * name = patch patch = None - if name in q.series: - raise util.Abort(_('A patch named %s already exists in the series file') % name) - - absdest = q.join(name) - if os.path.exists(absdest): - raise util.Abort(_('%s already exists') % absdest) - if patch: patch = q.lookup(patch) else: @@ -1665,6 +1658,15 @@ def rename(ui, repo, patch, name=None, * ui.write(_('No patches applied\n')) return patch = q.lookup('qtip') + absdest = q.join(name) + if os.path.isdir(absdest): + name = os.path.join(name, os.path.basename(patch)) + absdest = q.join(name) + if os.path.exists(absdest): + raise util.Abort(_('%s already exists') % absdest) + + if name in q.series: + raise util.Abort(_('A patch named %s already exists in the series file') % name) if ui.verbose: ui.write('Renaming %s to %s\n' % (patch, name)) diff --git a/tests/test-mq-qrename b/tests/test-mq-qrename new file mode 100755 --- /dev/null +++ b/tests/test-mq-qrename @@ -0,0 +1,25 @@ +#!/bin/sh + +echo "[extensions]" >> $HGRCPATH +echo "mq=" >> $HGRCPATH + +hg init a +cd a + +echo 'base' > base +hg ci -Ambase -d '1 0' + +hg qnew -mmqbase mqbase +hg qrename mqbase renamed +mkdir .hg/patches/foo +hg qrename renamed foo +hg qseries +ls .hg/patches/foo +mkdir .hg/patches/bar +hg qrename foo/renamed bar +hg qseries +ls .hg/patches/bar +hg qrename bar/renamed baz +hg qseries +ls .hg/patches/baz + diff --git a/tests/test-mq-qrename.out b/tests/test-mq-qrename.out new file mode 100644 --- /dev/null +++ b/tests/test-mq-qrename.out @@ -0,0 +1,7 @@ +adding base +foo/renamed +renamed +bar/renamed +renamed +baz +.hg/patches/baz