Mercurial > hg
comparison hgext/shelve.py @ 26587:56b2bcea2529
error: get Abort from 'error' instead of 'util'
The home of 'Abort' is 'error' not 'util' however, a lot of code seems to be
confused about that and gives all the credit to 'util' instead of the
hardworking 'error'. In a spirit of equity, we break the cycle of injustice and
give back to 'error' the respect it deserves. And screw that 'util' poser.
For great justice.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 08 Oct 2015 12:55:45 -0700 |
parents | 8f2ff40fe9c9 |
children | c062a9c0293c |
comparison
equal
deleted
inserted
replaced
26586:d51c658d3f04 | 26587:56b2bcea2529 |
---|---|
88 try: | 88 try: |
89 return self.vfs(self.fname, mode) | 89 return self.vfs(self.fname, mode) |
90 except IOError as err: | 90 except IOError as err: |
91 if err.errno != errno.ENOENT: | 91 if err.errno != errno.ENOENT: |
92 raise | 92 raise |
93 raise util.Abort(_("shelved change '%s' not found") % self.name) | 93 raise error.Abort(_("shelved change '%s' not found") % self.name) |
94 | 94 |
95 def applybundle(self): | 95 def applybundle(self): |
96 fp = self.opener() | 96 fp = self.opener() |
97 try: | 97 try: |
98 gen = exchange.readbundle(self.repo.ui, fp, self.fname, self.vfs) | 98 gen = exchange.readbundle(self.repo.ui, fp, self.fname, self.vfs) |
133 fp = repo.vfs(cls._filename) | 133 fp = repo.vfs(cls._filename) |
134 try: | 134 try: |
135 version = int(fp.readline().strip()) | 135 version = int(fp.readline().strip()) |
136 | 136 |
137 if version != cls._version: | 137 if version != cls._version: |
138 raise util.Abort(_('this version of shelve is incompatible ' | 138 raise error.Abort(_('this version of shelve is incompatible ' |
139 'with the version used in this repo')) | 139 'with the version used in this repo')) |
140 name = fp.readline().strip() | 140 name = fp.readline().strip() |
141 wctx = fp.readline().strip() | 141 wctx = fp.readline().strip() |
142 pendingctx = fp.readline().strip() | 142 pendingctx = fp.readline().strip() |
143 parents = [bin(h) for h in fp.readline().split()] | 143 parents = [bin(h) for h in fp.readline().split()] |
237 visit.append(parent) | 237 visit.append(parent) |
238 | 238 |
239 wctx = repo[None] | 239 wctx = repo[None] |
240 parents = wctx.parents() | 240 parents = wctx.parents() |
241 if len(parents) > 1: | 241 if len(parents) > 1: |
242 raise util.Abort(_('cannot shelve while merging')) | 242 raise error.Abort(_('cannot shelve while merging')) |
243 parent = parents[0] | 243 parent = parents[0] |
244 | 244 |
245 # we never need the user, so we use a generic user for all shelve operations | 245 # we never need the user, so we use a generic user for all shelve operations |
246 user = 'shelve@localhost' | 246 user = 'shelve@localhost' |
247 label = repo._activebookmark or parent.branch() or 'default' | 247 label = repo._activebookmark or parent.branch() or 'default' |
288 # pull races. ensure we don't print the abort message to stderr. | 288 # pull races. ensure we don't print the abort message to stderr. |
289 tr = repo.transaction('commit', report=lambda x: None) | 289 tr = repo.transaction('commit', report=lambda x: None) |
290 | 290 |
291 if name: | 291 if name: |
292 if shelvedfile(repo, name, 'hg').exists(): | 292 if shelvedfile(repo, name, 'hg').exists(): |
293 raise util.Abort(_("a shelved change named '%s' already exists") | 293 raise error.Abort(_("a shelved change named '%s' already exists" |
294 % name) | 294 ) % name) |
295 else: | 295 else: |
296 for n in gennames(): | 296 for n in gennames(): |
297 if not shelvedfile(repo, n, 'hg').exists(): | 297 if not shelvedfile(repo, n, 'hg').exists(): |
298 name = n | 298 name = n |
299 break | 299 break |
300 else: | 300 else: |
301 raise util.Abort(_("too many shelved changes named '%s'") % | 301 raise error.Abort(_("too many shelved changes named '%s'") % |
302 label) | 302 label) |
303 | 303 |
304 # ensure we are not creating a subdirectory or a hidden file | 304 # ensure we are not creating a subdirectory or a hidden file |
305 if '/' in name or '\\' in name: | 305 if '/' in name or '\\' in name: |
306 raise util.Abort(_('shelved change names may not contain slashes')) | 306 raise error.Abort(_('shelved change names may not contain slashes')) |
307 if name.startswith('.'): | 307 if name.startswith('.'): |
308 raise util.Abort(_("shelved change names may not start with '.'")) | 308 raise error.Abort(_("shelved change names may not start with '.'")) |
309 interactive = opts.get('interactive', False) | 309 interactive = opts.get('interactive', False) |
310 | 310 |
311 def interactivecommitfunc(ui, repo, *pats, **opts): | 311 def interactivecommitfunc(ui, repo, *pats, **opts): |
312 match = scmutil.match(repo['.'], pats, {}) | 312 match = scmutil.match(repo['.'], pats, {}) |
313 message = opts['message'] | 313 message = opts['message'] |
357 lockmod.release(wlock) | 357 lockmod.release(wlock) |
358 | 358 |
359 def deletecmd(ui, repo, pats): | 359 def deletecmd(ui, repo, pats): |
360 """subcommand that deletes a specific shelve""" | 360 """subcommand that deletes a specific shelve""" |
361 if not pats: | 361 if not pats: |
362 raise util.Abort(_('no shelved changes specified!')) | 362 raise error.Abort(_('no shelved changes specified!')) |
363 wlock = repo.wlock() | 363 wlock = repo.wlock() |
364 try: | 364 try: |
365 for name in pats: | 365 for name in pats: |
366 for suffix in 'hg patch'.split(): | 366 for suffix in 'hg patch'.split(): |
367 shelvedfile(repo, name, suffix).movetobackup() | 367 shelvedfile(repo, name, suffix).movetobackup() |
368 cleanupoldbackups(repo) | 368 cleanupoldbackups(repo) |
369 except OSError as err: | 369 except OSError as err: |
370 if err.errno != errno.ENOENT: | 370 if err.errno != errno.ENOENT: |
371 raise | 371 raise |
372 raise util.Abort(_("shelved change '%s' not found") % name) | 372 raise error.Abort(_("shelved change '%s' not found") % name) |
373 finally: | 373 finally: |
374 lockmod.release(wlock) | 374 lockmod.release(wlock) |
375 | 375 |
376 def listshelves(repo): | 376 def listshelves(repo): |
377 """return all shelves in repo as list of (time, filename)""" | 377 """return all shelves in repo as list of (time, filename)""" |
439 fp.close() | 439 fp.close() |
440 | 440 |
441 def singlepatchcmds(ui, repo, pats, opts, subcommand): | 441 def singlepatchcmds(ui, repo, pats, opts, subcommand): |
442 """subcommand that displays a single shelf""" | 442 """subcommand that displays a single shelf""" |
443 if len(pats) != 1: | 443 if len(pats) != 1: |
444 raise util.Abort(_("--%s expects a single shelf") % subcommand) | 444 raise error.Abort(_("--%s expects a single shelf") % subcommand) |
445 shelfname = pats[0] | 445 shelfname = pats[0] |
446 | 446 |
447 if not shelvedfile(repo, shelfname, 'patch').exists(): | 447 if not shelvedfile(repo, shelfname, 'patch').exists(): |
448 raise util.Abort(_("cannot find shelf %s") % shelfname) | 448 raise error.Abort(_("cannot find shelf %s") % shelfname) |
449 | 449 |
450 listcmd(ui, repo, pats, opts) | 450 listcmd(ui, repo, pats, opts) |
451 | 451 |
452 def checkparents(repo, state): | 452 def checkparents(repo, state): |
453 """check parent while resuming an unshelve""" | 453 """check parent while resuming an unshelve""" |
454 if state.parents != repo.dirstate.parents(): | 454 if state.parents != repo.dirstate.parents(): |
455 raise util.Abort(_('working directory parents do not match unshelve ' | 455 raise error.Abort(_('working directory parents do not match unshelve ' |
456 'state')) | 456 'state')) |
457 | 457 |
458 def pathtofiles(repo, files): | 458 def pathtofiles(repo, files): |
459 cwd = repo.getcwd() | 459 cwd = repo.getcwd() |
460 return [repo.pathto(f, cwd) for f in files] | 460 return [repo.pathto(f, cwd) for f in files] |
525 lock = None | 525 lock = None |
526 try: | 526 try: |
527 checkparents(repo, state) | 527 checkparents(repo, state) |
528 ms = merge.mergestate(repo) | 528 ms = merge.mergestate(repo) |
529 if [f for f in ms if ms[f] == 'u']: | 529 if [f for f in ms if ms[f] == 'u']: |
530 raise util.Abort( | 530 raise error.Abort( |
531 _("unresolved conflicts, can't continue"), | 531 _("unresolved conflicts, can't continue"), |
532 hint=_("see 'hg resolve', then 'hg unshelve --continue'")) | 532 hint=_("see 'hg resolve', then 'hg unshelve --continue'")) |
533 | 533 |
534 lock = repo.lock() | 534 lock = repo.lock() |
535 | 535 |
608 if not abortf and not continuef: | 608 if not abortf and not continuef: |
609 cmdutil.checkunfinished(repo) | 609 cmdutil.checkunfinished(repo) |
610 | 610 |
611 if abortf or continuef: | 611 if abortf or continuef: |
612 if abortf and continuef: | 612 if abortf and continuef: |
613 raise util.Abort(_('cannot use both abort and continue')) | 613 raise error.Abort(_('cannot use both abort and continue')) |
614 if shelved: | 614 if shelved: |
615 raise util.Abort(_('cannot combine abort/continue with ' | 615 raise error.Abort(_('cannot combine abort/continue with ' |
616 'naming a shelved change')) | 616 'naming a shelved change')) |
617 | 617 |
618 try: | 618 try: |
619 state = shelvedstate.load(repo) | 619 state = shelvedstate.load(repo) |
620 except IOError as err: | 620 except IOError as err: |
621 if err.errno != errno.ENOENT: | 621 if err.errno != errno.ENOENT: |
622 raise | 622 raise |
623 raise util.Abort(_('no unshelve operation underway')) | 623 raise error.Abort(_('no unshelve operation underway')) |
624 | 624 |
625 if abortf: | 625 if abortf: |
626 return unshelveabort(ui, repo, state, opts) | 626 return unshelveabort(ui, repo, state, opts) |
627 elif continuef: | 627 elif continuef: |
628 return unshelvecontinue(ui, repo, state, opts) | 628 return unshelvecontinue(ui, repo, state, opts) |
629 elif len(shelved) > 1: | 629 elif len(shelved) > 1: |
630 raise util.Abort(_('can only unshelve one change at a time')) | 630 raise error.Abort(_('can only unshelve one change at a time')) |
631 elif not shelved: | 631 elif not shelved: |
632 shelved = listshelves(repo) | 632 shelved = listshelves(repo) |
633 if not shelved: | 633 if not shelved: |
634 raise util.Abort(_('no shelved changes to apply!')) | 634 raise error.Abort(_('no shelved changes to apply!')) |
635 basename = util.split(shelved[0][1])[1] | 635 basename = util.split(shelved[0][1])[1] |
636 ui.status(_("unshelving change '%s'\n") % basename) | 636 ui.status(_("unshelving change '%s'\n") % basename) |
637 else: | 637 else: |
638 basename = shelved[0] | 638 basename = shelved[0] |
639 | 639 |
640 if not shelvedfile(repo, basename, 'patch').exists(): | 640 if not shelvedfile(repo, basename, 'patch').exists(): |
641 raise util.Abort(_("shelved change '%s' not found") % basename) | 641 raise error.Abort(_("shelved change '%s' not found") % basename) |
642 | 642 |
643 oldquiet = ui.quiet | 643 oldquiet = ui.quiet |
644 wlock = lock = tr = None | 644 wlock = lock = tr = None |
645 try: | 645 try: |
646 wlock = repo.wlock() | 646 wlock = repo.wlock() |
806 ] | 806 ] |
807 def checkopt(opt): | 807 def checkopt(opt): |
808 if opts[opt]: | 808 if opts[opt]: |
809 for i, allowable in allowables: | 809 for i, allowable in allowables: |
810 if opts[i] and opt not in allowable: | 810 if opts[i] and opt not in allowable: |
811 raise util.Abort(_("options '--%s' and '--%s' may not be " | 811 raise error.Abort(_("options '--%s' and '--%s' may not be " |
812 "used together") % (opt, i)) | 812 "used together") % (opt, i)) |
813 return True | 813 return True |
814 if checkopt('cleanup'): | 814 if checkopt('cleanup'): |
815 if pats: | 815 if pats: |
816 raise util.Abort(_("cannot specify names when using '--cleanup'")) | 816 raise error.Abort(_("cannot specify names when using '--cleanup'")) |
817 return cleanupcmd(ui, repo) | 817 return cleanupcmd(ui, repo) |
818 elif checkopt('delete'): | 818 elif checkopt('delete'): |
819 return deletecmd(ui, repo, pats) | 819 return deletecmd(ui, repo, pats) |
820 elif checkopt('list'): | 820 elif checkopt('list'): |
821 return listcmd(ui, repo, pats, opts) | 821 return listcmd(ui, repo, pats, opts) |