Show More
@@ -238,8 +238,12 b' class queue(object):' | |||
|
238 | 238 | def __init__(self, ui, path, patchdir=None): |
|
239 | 239 | self.basepath = path |
|
240 | 240 | try: |
|
241 | fh = open(os.path.join(path, '.queue')) | |
|
242 |
cur |
|
|
241 | fh = open(os.path.join(path, 'patches.queue')) | |
|
242 | cur = fh.read().rstrip() | |
|
243 | if not cur: | |
|
244 | curpath = os.path.join(path, 'patches') | |
|
245 | else: | |
|
246 | curpath = os.path.join(path, 'patches-' + cur) | |
|
243 | 247 | except IOError: |
|
244 | 248 | curpath = os.path.join(path, 'patches') |
|
245 | 249 | self.path = patchdir or curpath |
@@ -2562,11 +2566,14 b' def qqueue(ui, repo, name=None, **opts):' | |||
|
2562 | 2566 | q = repo.mq |
|
2563 | 2567 | |
|
2564 | 2568 | _defaultqueue = 'patches' |
|
2565 | _allqueues = '.queues' | |
|
2566 | _activequeue = '.queue' | |
|
2569 | _allqueues = 'patches.queues' | |
|
2570 | _activequeue = 'patches.queue' | |
|
2567 | 2571 | |
|
2568 | 2572 | def _getcurrent(): |
|
2569 |
|
|
|
2573 | cur = os.path.basename(q.path) | |
|
2574 | if cur.startswith('patches-'): | |
|
2575 | cur = cur[8:] | |
|
2576 | return cur | |
|
2570 | 2577 | |
|
2571 | 2578 | def _noqueues(): |
|
2572 | 2579 | try: |
@@ -2595,6 +2602,7 b' def qqueue(ui, repo, name=None, **opts):' | |||
|
2595 | 2602 | raise util.Abort(_('patches applied - cannot set new queue active')) |
|
2596 | 2603 | |
|
2597 | 2604 | fh = repo.opener(_activequeue, 'w') |
|
2605 | if name != 'patches': | |
|
2598 | 2606 | fh.write(name) |
|
2599 | 2607 | fh.close() |
|
2600 | 2608 | |
@@ -2603,6 +2611,12 b' def qqueue(ui, repo, name=None, **opts):' | |||
|
2603 | 2611 | fh.write('%s\n' % (name,)) |
|
2604 | 2612 | fh.close() |
|
2605 | 2613 | |
|
2614 | def _validname(name): | |
|
2615 | for n in name: | |
|
2616 | if n in ':\\/.': | |
|
2617 | return False | |
|
2618 | return True | |
|
2619 | ||
|
2606 | 2620 | if not name or opts.get('list'): |
|
2607 | 2621 | current = _getcurrent() |
|
2608 | 2622 | for queue in _getqueues(): |
@@ -2613,6 +2627,10 b' def qqueue(ui, repo, name=None, **opts):' | |||
|
2613 | 2627 | ui.write('\n') |
|
2614 | 2628 | return |
|
2615 | 2629 | |
|
2630 | if not _validname(name): | |
|
2631 | raise util.Abort( | |
|
2632 | _('invalid queue name, may not contain the characters ":\\/."')) | |
|
2633 | ||
|
2616 | 2634 | existing = _getqueues() |
|
2617 | 2635 | |
|
2618 | 2636 | if name not in existing and opts.get('delete'): |
@@ -2631,13 +2649,13 b' def qqueue(ui, repo, name=None, **opts):' | |||
|
2631 | 2649 | if name == current: |
|
2632 | 2650 | raise util.Abort(_('cannot delete currently active queue')) |
|
2633 | 2651 | |
|
2634 | fh = repo.opener('.queues.new', 'w') | |
|
2652 | fh = repo.opener('patches.queues.new', 'w') | |
|
2635 | 2653 | for queue in existing: |
|
2636 | 2654 | if queue == name: |
|
2637 | 2655 | continue |
|
2638 | 2656 | fh.write('%s\n' % (queue,)) |
|
2639 | 2657 | fh.close() |
|
2640 | util.rename(repo.join('.queues.new'), repo.join(_allqueues)) | |
|
2658 | util.rename(repo.join('patches.queues.new'), repo.join(_allqueues)) | |
|
2641 | 2659 | else: |
|
2642 | 2660 | _setactive(name) |
|
2643 | 2661 |
@@ -44,4 +44,17 b' hg qpop -a' | |||
|
44 | 44 | hg qqueue patches |
|
45 | 45 | hg qqueue foo --delete |
|
46 | 46 | hg qqueue |
|
47 | ||
|
48 | echo %% tricky cases | |
|
49 | hg qqueue store --create | |
|
50 | hg qnew test | |
|
51 | hg qqueue | |
|
52 | hg qpop -a | |
|
53 | hg qqueue patches | |
|
54 | hg qun | |
|
55 | ||
|
56 | echo %% invalid names | |
|
57 | hg qqueue test/../../bar --create | |
|
58 | hg qqueue . --create | |
|
59 | ||
|
47 | 60 | cd .. |
@@ -21,3 +21,12 b' abort: cannot delete currently active qu' | |||
|
21 | 21 | popping otherstuff |
|
22 | 22 | patch queue now empty |
|
23 | 23 | patches (active) |
|
24 | %% tricky cases | |
|
25 | patches | |
|
26 | store (active) | |
|
27 | popping test | |
|
28 | patch queue now empty | |
|
29 | somestuff | |
|
30 | %% invalid names | |
|
31 | abort: invalid queue name, may not contain the characters ":\/." | |
|
32 | abort: invalid queue name, may not contain the characters ":\/." |
General Comments 0
You need to be logged in to leave comments.
Login now