~abentley/bzrtools/bzrtools.dev

325.1.2 by Aaron Bentley
Merge shelf v2
1
# Copyright (C) 2005 Aaron Bentley, 2006 Michael Ellerman
2
# <aaron.bentley@utoronto.ca>
3
#
4
#    This program is free software; you can redistribute it and/or modify
5
#    it under the terms of the GNU General Public License as published by
6
#    the Free Software Foundation; either version 2 of the License, or
7
#    (at your option) any later version.
8
#
9
#    This program is distributed in the hope that it will be useful,
10
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
#    GNU General Public License for more details.
13
#
14
#    You should have received a copy of the GNU General Public License
15
#    along with this program; if not, write to the Free Software
16
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
471 by Aaron Bentley
Fixed handling of pipe errors when writing to patch
18
import os
19
325.1.2 by Aaron Bentley
Merge shelf v2
20
class NoPyBaz(Exception):
21
    def __init__(self):
22
        Exception.__init__(self, "PyBaz is not installed.")
0.2.3 by Michael Ellerman
Factor out bzrisms.
23
try:
24
    from bzrlib.errors import BzrCommandError as CommandError
471 by Aaron Bentley
Fixed handling of pipe errors when writing to patch
25
    from bzrlib.errors import BzrError
0.2.3 by Michael Ellerman
Factor out bzrisms.
26
except ImportError:
27
    class CommandError(Exception):
28
        pass
0.1.89 by Michael Ellerman
Add support for unshelving -p0 patches, for backward compatibility.
29
30
class PatchFailed(Exception):
31
    """Failed applying patch!"""
345 by Aaron Bentley
Added zap command
32
423.1.4 by Aaron Bentley
Add --no-color option to shelf
33
471 by Aaron Bentley
Fixed handling of pipe errors when writing to patch
34
class PatchInvokeError(BzrError):
35
36
    _fmt = """Error invoking patch: %(errstr)s\n%(stderr)s"""
37
    internal_error = False
38
39
    def __init__(self, e, stderr):
40
        self.exception = e
41
        self.errstr = os.strerror(e.errno)
42
        self.stderr = stderr
43
44
423.1.4 by Aaron Bentley
Add --no-color option to shelf
45
class NoColor(Exception):
46
    """Color not available on this terminal."""
47
48
49
class NoBzrtoolsColor(Exception):
50
    """Bzrtools is required for color display"""
51
52
345 by Aaron Bentley
Added zap command
53
class NotCheckout(CommandError):
54
    """Specified path is not a checkout."""
346 by Aaron Bentley
Text updates
55
    def __init__(self, path):
56
        CommandError.__init__(self, "%s is not a checkout" % path)
345 by Aaron Bentley
Added zap command
57
58
class UncommittedCheckout(CommandError):
59
    """This checkout contains uncommitted changes"""
346 by Aaron Bentley
Text updates
60
    def __init__(self):
61
        CommandError.__init__(self, "This checkout has uncommitted changes")
401 by Aaron Bentley
Add check whether branch has unique revisions
62
63
class ParentMissingRevisions(CommandError):
64
    """The parent branch is missing revisions."""
65
    def __init__(self, parent):
66
        CommandError.__init__(self, 
67
            "The parent branch %s is missing revisions from this branch." % 
68
            parent)
69
        self.parent = parent
407 by Aaron Bentley
Fix zap for checkouts of branches with no parents
70
71
class NoParent(CommandError):
72
    def __init__(self):
73
        CommandError.__init__(self, "There is no parent, so deleting the"
74
                                    " branch could destroy data.")