Mercurial > hg
comparison hgext/mq.py @ 12281:d9cf0d1d0d0f
mq: consistently use opts.get() to prevent potential KeyError
author | Christian Ebert <blacktrash@gmx.net> |
---|---|
date | Tue, 14 Sep 2010 22:11:46 +0200 |
parents | 00658492e2aa |
children | 9e457c3f47d9 |
comparison
equal
deleted
inserted
replaced
12280:6ee719f56f01 | 12281:d9cf0d1d0d0f |
---|---|
769 | 769 |
770 numrevs = 0 | 770 numrevs = 0 |
771 if opts.get('rev'): | 771 if opts.get('rev'): |
772 if not self.applied: | 772 if not self.applied: |
773 raise util.Abort(_('no patches applied')) | 773 raise util.Abort(_('no patches applied')) |
774 revs = cmdutil.revrange(repo, opts['rev']) | 774 revs = cmdutil.revrange(repo, opts.get('rev')) |
775 if len(revs) > 1 and revs[0] > revs[1]: | 775 if len(revs) > 1 and revs[0] > revs[1]: |
776 revs.reverse() | 776 revs.reverse() |
777 revpatches = self._revpatches(repo, revs) | 777 revpatches = self._revpatches(repo, revs) |
778 realpatches += revpatches | 778 realpatches += revpatches |
779 numrevs = len(revpatches) | 779 numrevs = len(revpatches) |
1829 | 1829 |
1830 hg qimport -e existing-patch -n new-name | 1830 hg qimport -e existing-patch -n new-name |
1831 """ | 1831 """ |
1832 q = repo.mq | 1832 q = repo.mq |
1833 try: | 1833 try: |
1834 q.qimport(repo, filename, patchname=opts['name'], | 1834 q.qimport(repo, filename, patchname=opts.get('name'), |
1835 existing=opts['existing'], force=opts['force'], rev=opts['rev'], | 1835 existing=opts.get('existing'), force=opts.get('force'), |
1836 git=opts['git']) | 1836 rev=opts.get('rev'), git=opts.get('git')) |
1837 finally: | 1837 finally: |
1838 q.save_dirty() | 1838 q.save_dirty() |
1839 | 1839 |
1840 if opts.get('push') and not opts.get('rev'): | 1840 if opts.get('push') and not opts.get('rev'): |
1841 return q.push(repo, None) | 1841 return q.push(repo, None) |
1874 an unversioned patch repository into a versioned one). You can use | 1874 an unversioned patch repository into a versioned one). You can use |
1875 qcommit to commit changes to this queue repository. | 1875 qcommit to commit changes to this queue repository. |
1876 | 1876 |
1877 This command is deprecated. Without -c, it's implied by other relevant | 1877 This command is deprecated. Without -c, it's implied by other relevant |
1878 commands. With -c, use :hg:`init --mq` instead.""" | 1878 commands. With -c, use :hg:`init --mq` instead.""" |
1879 return qinit(ui, repo, create=opts['create_repo']) | 1879 return qinit(ui, repo, create=opts.get('create_repo')) |
1880 | 1880 |
1881 def clone(ui, source, dest=None, **opts): | 1881 def clone(ui, source, dest=None, **opts): |
1882 '''clone main and patch repository at same time | 1882 '''clone main and patch repository at same time |
1883 | 1883 |
1884 If source is local, destination will have no patches applied. If | 1884 If source is local, destination will have no patches applied. If |
1899 url = url[:-1] | 1899 url = url[:-1] |
1900 return url + '/.hg/patches' | 1900 return url + '/.hg/patches' |
1901 if dest is None: | 1901 if dest is None: |
1902 dest = hg.defaultdest(source) | 1902 dest = hg.defaultdest(source) |
1903 sr = hg.repository(hg.remoteui(ui, opts), ui.expandpath(source)) | 1903 sr = hg.repository(hg.remoteui(ui, opts), ui.expandpath(source)) |
1904 if opts['patches']: | 1904 if opts.get('patches'): |
1905 patchespath = ui.expandpath(opts['patches']) | 1905 patchespath = ui.expandpath(opts.get('patches')) |
1906 else: | 1906 else: |
1907 patchespath = patchdir(sr) | 1907 patchespath = patchdir(sr) |
1908 try: | 1908 try: |
1909 hg.repository(ui, patchespath) | 1909 hg.repository(ui, patchespath) |
1910 except error.RepoError: | 1910 except error.RepoError: |
1923 qbase = sr.lookup('qbase') | 1923 qbase = sr.lookup('qbase') |
1924 except error.RepoError: | 1924 except error.RepoError: |
1925 pass | 1925 pass |
1926 ui.note(_('cloning main repository\n')) | 1926 ui.note(_('cloning main repository\n')) |
1927 sr, dr = hg.clone(ui, sr.url(), dest, | 1927 sr, dr = hg.clone(ui, sr.url(), dest, |
1928 pull=opts['pull'], | 1928 pull=opts.get('pull'), |
1929 rev=destrev, | 1929 rev=destrev, |
1930 update=False, | 1930 update=False, |
1931 stream=opts['uncompressed']) | 1931 stream=opts.get('uncompressed')) |
1932 ui.note(_('cloning patch repository\n')) | 1932 ui.note(_('cloning patch repository\n')) |
1933 hg.clone(ui, opts['patches'] or patchdir(sr), patchdir(dr), | 1933 hg.clone(ui, opts.get('patches') or patchdir(sr), patchdir(dr), |
1934 pull=opts['pull'], update=not opts['noupdate'], | 1934 pull=opts.get('pull'), update=not opts.get('noupdate'), |
1935 stream=opts['uncompressed']) | 1935 stream=opts.get('uncompressed')) |
1936 if dr.local(): | 1936 if dr.local(): |
1937 if qbase: | 1937 if qbase: |
1938 ui.note(_('stripping applied patches from destination ' | 1938 ui.note(_('stripping applied patches from destination ' |
1939 'repository\n')) | 1939 'repository\n')) |
1940 dr.mq.strip(dr, [qbase], update=False, backup=None) | 1940 dr.mq.strip(dr, [qbase], update=False, backup=None) |
1941 if not opts['noupdate']: | 1941 if not opts.get('noupdate'): |
1942 ui.note(_('updating destination repository\n')) | 1942 ui.note(_('updating destination repository\n')) |
1943 hg.update(dr, dr.changelog.tip()) | 1943 hg.update(dr, dr.changelog.tip()) |
1944 | 1944 |
1945 def commit(ui, repo, *pats, **opts): | 1945 def commit(ui, repo, *pats, **opts): |
1946 """commit changes in the queue repository (DEPRECATED) | 1946 """commit changes in the queue repository (DEPRECATED) |
1952 raise util.Abort('no queue repository') | 1952 raise util.Abort('no queue repository') |
1953 commands.commit(r.ui, r, *pats, **opts) | 1953 commands.commit(r.ui, r, *pats, **opts) |
1954 | 1954 |
1955 def series(ui, repo, **opts): | 1955 def series(ui, repo, **opts): |
1956 """print the entire series file""" | 1956 """print the entire series file""" |
1957 repo.mq.qseries(repo, missing=opts['missing'], summary=opts['summary']) | 1957 repo.mq.qseries(repo, missing=opts.get('missing'), summary=opts.get('summary')) |
1958 return 0 | 1958 return 0 |
1959 | 1959 |
1960 def top(ui, repo, **opts): | 1960 def top(ui, repo, **opts): |
1961 """print the name of the current patch""" | 1961 """print the name of the current patch""" |
1962 q = repo.mq | 1962 q = repo.mq |
2019 is important for preserving permission changes and copy/rename | 2019 is important for preserving permission changes and copy/rename |
2020 information. | 2020 information. |
2021 """ | 2021 """ |
2022 msg = cmdutil.logmessage(opts) | 2022 msg = cmdutil.logmessage(opts) |
2023 def getmsg(): | 2023 def getmsg(): |
2024 return ui.edit(msg, opts['user'] or ui.username()) | 2024 return ui.edit(msg, opts.get('user') or ui.username()) |
2025 q = repo.mq | 2025 q = repo.mq |
2026 opts['msg'] = msg | 2026 opts['msg'] = msg |
2027 if opts.get('edit'): | 2027 if opts.get('edit'): |
2028 opts['msg'] = getmsg | 2028 opts['msg'] = getmsg |
2029 else: | 2029 else: |
2052 and renames. See the diffs help topic for more information on the | 2052 and renames. See the diffs help topic for more information on the |
2053 git diff format. | 2053 git diff format. |
2054 """ | 2054 """ |
2055 q = repo.mq | 2055 q = repo.mq |
2056 message = cmdutil.logmessage(opts) | 2056 message = cmdutil.logmessage(opts) |
2057 if opts['edit']: | 2057 if opts.get('edit'): |
2058 if not q.applied: | 2058 if not q.applied: |
2059 ui.write(_("no patches applied\n")) | 2059 ui.write(_("no patches applied\n")) |
2060 return 1 | 2060 return 1 |
2061 if message: | 2061 if message: |
2062 raise util.Abort(_('option "-e" incompatible with "-m" or "-l"')) | 2062 raise util.Abort(_('option "-e" incompatible with "-m" or "-l"')) |
2108 if not q.check_toppatch(repo)[0]: | 2108 if not q.check_toppatch(repo)[0]: |
2109 raise util.Abort(_('no patches applied')) | 2109 raise util.Abort(_('no patches applied')) |
2110 q.check_localchanges(repo) | 2110 q.check_localchanges(repo) |
2111 | 2111 |
2112 message = cmdutil.logmessage(opts) | 2112 message = cmdutil.logmessage(opts) |
2113 if opts['edit']: | 2113 if opts.get('edit'): |
2114 if message: | 2114 if message: |
2115 raise util.Abort(_('option "-e" incompatible with "-m" or "-l"')) | 2115 raise util.Abort(_('option "-e" incompatible with "-m" or "-l"')) |
2116 | 2116 |
2117 parent = q.lookup('qtip') | 2117 parent = q.lookup('qtip') |
2118 patches = [] | 2118 patches = [] |
2142 for msg in messages: | 2142 for msg in messages: |
2143 message.append('* * *') | 2143 message.append('* * *') |
2144 message.extend(msg) | 2144 message.extend(msg) |
2145 message = '\n'.join(message) | 2145 message = '\n'.join(message) |
2146 | 2146 |
2147 if opts['edit']: | 2147 if opts.get('edit'): |
2148 message = ui.edit(message, user or ui.username()) | 2148 message = ui.edit(message, user or ui.username()) |
2149 | 2149 |
2150 diffopts = q.patchopts(q.diffopts(), *patches) | 2150 diffopts = q.patchopts(q.diffopts(), *patches) |
2151 q.refresh(repo, msg=message, git=diffopts.git) | 2151 q.refresh(repo, msg=message, git=diffopts.git) |
2152 q.delete(repo, patches, opts) | 2152 q.delete(repo, patches, opts) |
2155 def goto(ui, repo, patch, **opts): | 2155 def goto(ui, repo, patch, **opts): |
2156 '''push or pop patches until named patch is at top of stack''' | 2156 '''push or pop patches until named patch is at top of stack''' |
2157 q = repo.mq | 2157 q = repo.mq |
2158 patch = q.lookup(patch) | 2158 patch = q.lookup(patch) |
2159 if q.isapplied(patch): | 2159 if q.isapplied(patch): |
2160 ret = q.pop(repo, patch, force=opts['force']) | 2160 ret = q.pop(repo, patch, force=opts.get('force')) |
2161 else: | 2161 else: |
2162 ret = q.push(repo, patch, force=opts['force']) | 2162 ret = q.push(repo, patch, force=opts.get('force')) |
2163 q.save_dirty() | 2163 q.save_dirty() |
2164 return ret | 2164 return ret |
2165 | 2165 |
2166 def guard(ui, repo, *args, **opts): | 2166 def guard(ui, repo, *args, **opts): |
2167 '''set or print guards for a patch | 2167 '''set or print guards for a patch |
2203 ui.write('\n') | 2203 ui.write('\n') |
2204 q = repo.mq | 2204 q = repo.mq |
2205 applied = set(p.name for p in q.applied) | 2205 applied = set(p.name for p in q.applied) |
2206 patch = None | 2206 patch = None |
2207 args = list(args) | 2207 args = list(args) |
2208 if opts['list']: | 2208 if opts.get('list'): |
2209 if args or opts['none']: | 2209 if args or opts.get('none'): |
2210 raise util.Abort(_('cannot mix -l/--list with options or arguments')) | 2210 raise util.Abort(_('cannot mix -l/--list with options or arguments')) |
2211 for i in xrange(len(q.series)): | 2211 for i in xrange(len(q.series)): |
2212 status(i) | 2212 status(i) |
2213 return | 2213 return |
2214 if not args or args[0][0:1] in '-+': | 2214 if not args or args[0][0:1] in '-+': |
2217 patch = q.applied[-1].name | 2217 patch = q.applied[-1].name |
2218 if patch is None and args[0][0:1] not in '-+': | 2218 if patch is None and args[0][0:1] not in '-+': |
2219 patch = args.pop(0) | 2219 patch = args.pop(0) |
2220 if patch is None: | 2220 if patch is None: |
2221 raise util.Abort(_('no patch to work with')) | 2221 raise util.Abort(_('no patch to work with')) |
2222 if args or opts['none']: | 2222 if args or opts.get('none'): |
2223 idx = q.find_series(patch) | 2223 idx = q.find_series(patch) |
2224 if idx is None: | 2224 if idx is None: |
2225 raise util.Abort(_('no patch named %s') % patch) | 2225 raise util.Abort(_('no patch named %s') % patch) |
2226 q.set_guards(idx, args) | 2226 q.set_guards(idx, args) |
2227 q.save_dirty() | 2227 q.save_dirty() |
2274 will be lost. | 2274 will be lost. |
2275 """ | 2275 """ |
2276 q = repo.mq | 2276 q = repo.mq |
2277 mergeq = None | 2277 mergeq = None |
2278 | 2278 |
2279 if opts['merge']: | 2279 if opts.get('merge'): |
2280 if opts['name']: | 2280 if opts.get('name'): |
2281 newpath = repo.join(opts['name']) | 2281 newpath = repo.join(opts.get('name')) |
2282 else: | 2282 else: |
2283 newpath, i = lastsavename(q.path) | 2283 newpath, i = lastsavename(q.path) |
2284 if not newpath: | 2284 if not newpath: |
2285 ui.warn(_("no saved queues found, please use -n\n")) | 2285 ui.warn(_("no saved queues found, please use -n\n")) |
2286 return 1 | 2286 return 1 |
2287 mergeq = queue(ui, repo.join(""), newpath) | 2287 mergeq = queue(ui, repo.join(""), newpath) |
2288 ui.warn(_("merging with queue at: %s\n") % mergeq.path) | 2288 ui.warn(_("merging with queue at: %s\n") % mergeq.path) |
2289 ret = q.push(repo, patch, force=opts['force'], list=opts['list'], | 2289 ret = q.push(repo, patch, force=opts.get('force'), list=opts.get('list'), |
2290 mergeq=mergeq, all=opts.get('all'), move=opts.get('move')) | 2290 mergeq=mergeq, all=opts.get('all'), move=opts.get('move')) |
2291 return ret | 2291 return ret |
2292 | 2292 |
2293 def pop(ui, repo, patch=None, **opts): | 2293 def pop(ui, repo, patch=None, **opts): |
2294 """pop the current patch off the stack | 2294 """pop the current patch off the stack |
2296 By default, pops off the top of the patch stack. If given a patch | 2296 By default, pops off the top of the patch stack. If given a patch |
2297 name, keeps popping off patches until the named patch is at the | 2297 name, keeps popping off patches until the named patch is at the |
2298 top of the stack. | 2298 top of the stack. |
2299 """ | 2299 """ |
2300 localupdate = True | 2300 localupdate = True |
2301 if opts['name']: | 2301 if opts.get('name'): |
2302 q = queue(ui, repo.join(""), repo.join(opts['name'])) | 2302 q = queue(ui, repo.join(""), repo.join(opts.get('name'))) |
2303 ui.warn(_('using patch queue: %s\n') % q.path) | 2303 ui.warn(_('using patch queue: %s\n') % q.path) |
2304 localupdate = False | 2304 localupdate = False |
2305 else: | 2305 else: |
2306 q = repo.mq | 2306 q = repo.mq |
2307 ret = q.pop(repo, patch, force=opts['force'], update=localupdate, | 2307 ret = q.pop(repo, patch, force=opts.get('force'), update=localupdate, |
2308 all=opts['all']) | 2308 all=opts.get('all')) |
2309 q.save_dirty() | 2309 q.save_dirty() |
2310 return ret | 2310 return ret |
2311 | 2311 |
2312 def rename(ui, repo, patch, name=None, **opts): | 2312 def rename(ui, repo, patch, name=None, **opts): |
2313 """rename a patch | 2313 """rename a patch |
2377 """restore the queue state saved by a revision (DEPRECATED) | 2377 """restore the queue state saved by a revision (DEPRECATED) |
2378 | 2378 |
2379 This command is deprecated, use rebase --mq instead.""" | 2379 This command is deprecated, use rebase --mq instead.""" |
2380 rev = repo.lookup(rev) | 2380 rev = repo.lookup(rev) |
2381 q = repo.mq | 2381 q = repo.mq |
2382 q.restore(repo, rev, delete=opts['delete'], | 2382 q.restore(repo, rev, delete=opts.get('delete'), |
2383 qupdate=opts['update']) | 2383 qupdate=opts.get('update')) |
2384 q.save_dirty() | 2384 q.save_dirty() |
2385 return 0 | 2385 return 0 |
2386 | 2386 |
2387 def save(ui, repo, **opts): | 2387 def save(ui, repo, **opts): |
2388 """save current queue state (DEPRECATED) | 2388 """save current queue state (DEPRECATED) |
2392 message = cmdutil.logmessage(opts) | 2392 message = cmdutil.logmessage(opts) |
2393 ret = q.save(repo, msg=message) | 2393 ret = q.save(repo, msg=message) |
2394 if ret: | 2394 if ret: |
2395 return ret | 2395 return ret |
2396 q.save_dirty() | 2396 q.save_dirty() |
2397 if opts['copy']: | 2397 if opts.get('copy'): |
2398 path = q.path | 2398 path = q.path |
2399 if opts['name']: | 2399 if opts.get('name'): |
2400 newpath = os.path.join(q.basepath, opts['name']) | 2400 newpath = os.path.join(q.basepath, opts.get('name')) |
2401 if os.path.exists(newpath): | 2401 if os.path.exists(newpath): |
2402 if not os.path.isdir(newpath): | 2402 if not os.path.isdir(newpath): |
2403 raise util.Abort(_('destination %s exists and is not ' | 2403 raise util.Abort(_('destination %s exists and is not ' |
2404 'a directory') % newpath) | 2404 'a directory') % newpath) |
2405 if not opts['force']: | 2405 if not opts.get('force'): |
2406 raise util.Abort(_('destination %s exists, ' | 2406 raise util.Abort(_('destination %s exists, ' |
2407 'use -f to force') % newpath) | 2407 'use -f to force') % newpath) |
2408 else: | 2408 else: |
2409 newpath = savename(path) | 2409 newpath = savename(path) |
2410 ui.warn(_("copy %s to %s\n") % (path, newpath)) | 2410 ui.warn(_("copy %s to %s\n") % (path, newpath)) |
2411 util.copyfiles(path, newpath) | 2411 util.copyfiles(path, newpath) |
2412 if opts['empty']: | 2412 if opts.get('empty'): |
2413 try: | 2413 try: |
2414 os.unlink(q.join(q.status_path)) | 2414 os.unlink(q.join(q.status_path)) |
2415 except: | 2415 except: |
2416 pass | 2416 pass |
2417 return 0 | 2417 return 0 |
2437 | 2437 |
2438 Use the --nobackup option to discard the backup bundle once the | 2438 Use the --nobackup option to discard the backup bundle once the |
2439 operation completes. | 2439 operation completes. |
2440 """ | 2440 """ |
2441 backup = 'all' | 2441 backup = 'all' |
2442 if opts['backup']: | 2442 if opts.get('backup'): |
2443 backup = 'strip' | 2443 backup = 'strip' |
2444 elif opts['nobackup']: | 2444 elif opts.get('nobackup'): |
2445 backup = 'none' | 2445 backup = 'none' |
2446 | 2446 |
2447 cl = repo.changelog | 2447 cl = repo.changelog |
2448 revs = set(cl.rev(repo.lookup(r)) for r in revs) | 2448 revs = set(cl.rev(repo.lookup(r)) for r in revs) |
2449 | 2449 |
2477 break | 2477 break |
2478 del q.applied[start:end] | 2478 del q.applied[start:end] |
2479 q.save_dirty() | 2479 q.save_dirty() |
2480 | 2480 |
2481 repo.mq.strip(repo, list(rootnodes), backup=backup, update=update, | 2481 repo.mq.strip(repo, list(rootnodes), backup=backup, update=update, |
2482 force=opts['force']) | 2482 force=opts.get('force')) |
2483 return 0 | 2483 return 0 |
2484 | 2484 |
2485 def select(ui, repo, *args, **opts): | 2485 def select(ui, repo, *args, **opts): |
2486 '''set or print guarded patches to push | 2486 '''set or print guarded patches to push |
2487 | 2487 |
2515 Use -s/--series to print a list of all guards in the series file | 2515 Use -s/--series to print a list of all guards in the series file |
2516 (no other arguments needed). Use -v for more information.''' | 2516 (no other arguments needed). Use -v for more information.''' |
2517 | 2517 |
2518 q = repo.mq | 2518 q = repo.mq |
2519 guards = q.active() | 2519 guards = q.active() |
2520 if args or opts['none']: | 2520 if args or opts.get('none'): |
2521 old_unapplied = q.unapplied(repo) | 2521 old_unapplied = q.unapplied(repo) |
2522 old_guarded = [i for i in xrange(len(q.applied)) if | 2522 old_guarded = [i for i in xrange(len(q.applied)) if |
2523 not q.pushable(i)[0]] | 2523 not q.pushable(i)[0]] |
2524 q.set_active(args) | 2524 q.set_active(args) |
2525 q.save_dirty() | 2525 q.save_dirty() |
2526 if not args: | 2526 if not args: |
2527 ui.status(_('guards deactivated\n')) | 2527 ui.status(_('guards deactivated\n')) |
2528 if not opts['pop'] and not opts['reapply']: | 2528 if not opts.get('pop') and not opts.get('reapply'): |
2529 unapplied = q.unapplied(repo) | 2529 unapplied = q.unapplied(repo) |
2530 guarded = [i for i in xrange(len(q.applied)) | 2530 guarded = [i for i in xrange(len(q.applied)) |
2531 if not q.pushable(i)[0]] | 2531 if not q.pushable(i)[0]] |
2532 if len(unapplied) != len(old_unapplied): | 2532 if len(unapplied) != len(old_unapplied): |
2533 ui.status(_('number of unguarded, unapplied patches has ' | 2533 ui.status(_('number of unguarded, unapplied patches has ' |
2535 (len(old_unapplied), len(unapplied))) | 2535 (len(old_unapplied), len(unapplied))) |
2536 if len(guarded) != len(old_guarded): | 2536 if len(guarded) != len(old_guarded): |
2537 ui.status(_('number of guarded, applied patches has changed ' | 2537 ui.status(_('number of guarded, applied patches has changed ' |
2538 'from %d to %d\n') % | 2538 'from %d to %d\n') % |
2539 (len(old_guarded), len(guarded))) | 2539 (len(old_guarded), len(guarded))) |
2540 elif opts['series']: | 2540 elif opts.get('series'): |
2541 guards = {} | 2541 guards = {} |
2542 noguards = 0 | 2542 noguards = 0 |
2543 for gs in q.series_guards: | 2543 for gs in q.series_guards: |
2544 if not gs: | 2544 if not gs: |
2545 noguards += 1 | 2545 noguards += 1 |
2562 ui.note(_('active guards:\n')) | 2562 ui.note(_('active guards:\n')) |
2563 for g in guards: | 2563 for g in guards: |
2564 ui.write(g, '\n') | 2564 ui.write(g, '\n') |
2565 else: | 2565 else: |
2566 ui.write(_('no active guards\n')) | 2566 ui.write(_('no active guards\n')) |
2567 reapply = opts['reapply'] and q.applied and q.appliedname(-1) | 2567 reapply = opts.get('reapply') and q.applied and q.appliedname(-1) |
2568 popped = False | 2568 popped = False |
2569 if opts['pop'] or opts['reapply']: | 2569 if opts.get('pop') or opts.get('reapply'): |
2570 for i in xrange(len(q.applied)): | 2570 for i in xrange(len(q.applied)): |
2571 pushable, reason = q.pushable(i) | 2571 pushable, reason = q.pushable(i) |
2572 if not pushable: | 2572 if not pushable: |
2573 ui.status(_('popping guarded patches\n')) | 2573 ui.status(_('popping guarded patches\n')) |
2574 popped = True | 2574 popped = True |
2599 | 2599 |
2600 This can be especially useful if your changes have been applied to | 2600 This can be especially useful if your changes have been applied to |
2601 an upstream repository, or if you are about to push your changes | 2601 an upstream repository, or if you are about to push your changes |
2602 to upstream. | 2602 to upstream. |
2603 """ | 2603 """ |
2604 if not opts['applied'] and not revrange: | 2604 if not opts.get('applied') and not revrange: |
2605 raise util.Abort(_('no revisions specified')) | 2605 raise util.Abort(_('no revisions specified')) |
2606 elif opts['applied']: | 2606 elif opts.get('applied'): |
2607 revrange = ('qbase::qtip',) + revrange | 2607 revrange = ('qbase::qtip',) + revrange |
2608 | 2608 |
2609 q = repo.mq | 2609 q = repo.mq |
2610 if not q.applied: | 2610 if not q.applied: |
2611 ui.status(_('no patches applied\n')) | 2611 ui.status(_('no patches applied\n')) |