/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1 by mbp at sourcefrog
import from baz patch-364
1
# -*- coding: UTF-8 -*-
2
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
18
__copyright__ = "Copyright (C) 2005 Canonical Ltd."
19
__author__ = "Martin Pool <mbp@canonical.com>"
20
21
22
######################################################################
23
# exceptions 
24
class BzrError(StandardError):
25
    pass
26
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
27
1 by mbp at sourcefrog
import from baz patch-364
28
class BzrCheckError(BzrError):
29
    pass
30
31
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
32
class InvalidRevisionNumber(BzrError):
33
    def __init__(self, revno):
34
        self.args = [revno]
35
        
36
    def __str__(self):
37
        return 'invalid revision number: %r' % self.args[0]
38
39
40
class InvalidRevisionId(BzrError):
41
    pass
42
43
329 by Martin Pool
- refactor command functions into command classes
44
class BzrCommandError(BzrError):
45
    # Error from malformed user command
46
    pass
1 by mbp at sourcefrog
import from baz patch-364
47
48
573 by Martin Pool
- new exception NotBranchError
49
class NotBranchError(BzrError):
50
    """Specified path is not in a branch"""
51
    pass
52
53
753 by Martin Pool
- new exception NotVersionedError
54
class NotVersionedError(BzrError):
55
    """Specified object is not versioned."""
56
57
599 by Martin Pool
- better error reporting from smart_add
58
class BadFileKindError(BzrError):
59
    """Specified file is of a kind that cannot be added.
60
61
    (For example a symlink or device file.)"""
62
    pass
63
64
65
class ForbiddenFileError(BzrError):
66
    """Cannot operate on a file because it is a control file."""
67
    pass
68
69
614 by Martin Pool
- unify two defintions of LockError
70
class LockError(Exception):
71
    """All exceptions from the lock/unlock functions should be from
72
    this exception class.  They will be translated as necessary. The
73
    original exception is available as e.original_error
74
    """
75
    def __init__(self, e=None):
76
        self.original_error = e
77
        if e:
78
            Exception.__init__(self, e)
79
        else:
80
            Exception.__init__(self)
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
81
82
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
83
class PointlessCommit(Exception):
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
84
    """Commit failed because nothing was changed."""
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
85
86
87
class NoSuchRevision(BzrError):
88
    def __init__(self, branch, revision):
89
        self.branch = branch
90
        self.revision = revision
91
        msg = "Branch %s has no revision %s" % (branch, revision)
92
        BzrError.__init__(self, msg)
93
1034 by Martin Pool
- merge bzrlib.revision.is_ancestor from aaron
94
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
95
class DivergedBranches(BzrError):
96
    def __init__(self, branch1, branch2):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
97
        BzrError.__init__(self, "These branches have diverged.")
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
98
        self.branch1 = branch1
99
        self.branch2 = branch2
100
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
101
class UnrelatedBranches(BzrCommandError):
102
    def __init__(self):
103
        msg = "Branches have no common ancestor, and no base revision"\
104
            " specified."
105
        BzrCommandError.__init__(self, msg)
106
974.1.80 by Aaron Bentley
Improved merge error handling and testing
107
class NoCommonAncestor(BzrError):
108
    def __init__(self, revision_a, revision_b):
109
        msg = "Revisions have no common ancestor: %s %s." \
110
            % (revision_a, revision_b) 
111
        BzrError.__init__(self, msg)
112
113
class NoCommonRoot(BzrError):
114
    def __init__(self, revision_a, revision_b):
115
        msg = "Revisions are not derived from the same root: %s %s." \
116
            % (revision_a, revision_b) 
117
        BzrError.__init__(self, msg)
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
118
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
119
class NotAncestor(BzrError):
120
    def __init__(self, rev_id, not_ancestor_id):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
121
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
122
                                                        rev_id)
123
        BzrError.__init__(self, msg)
124
        self.rev_id = rev_id
125
        self.not_ancestor_id = not_ancestor_id
1185.1.12 by Robert Collins
merge in lsdiff/filterdiff friendliness
126
127
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
128
class InstallFailed(BzrError):
129
    def __init__(self, revisions):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
130
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
131
        BzrError.__init__(self, msg)
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
132
        self.revisions = revisions
1154 by Martin Pool
- fix imports for moved errors
133
134
135
class AmbiguousBase(BzrError):
136
    def __init__(self, bases):
137
        msg = "The correct base is unclear, becase %s are all equally close" %\
138
            ", ".join(bases)
139
        BzrError.__init__(self, msg)
140
        self.bases = bases
141
974.1.80 by Aaron Bentley
Improved merge error handling and testing
142
class NoCommits(BzrError):
143
    def __init__(self, branch):
144
        msg = "Branch %s has no commits." % branch
145
        BzrError.__init__(self, msg)
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
146
147
class TransportError(BzrError):
148
    """All errors thrown by Transport implementations should derive
149
    from this class.
150
    """
151
    def __init__(self, msg=None, orig_error=None):
152
        if msg is None and orig_error is not None:
153
            msg = str(orig_error)
154
        BzrError.__init__(self, msg)
155
        self.msg = msg
156
        self.orig_error = orig_error
157
158
# A set of semi-meaningful errors which can be thrown
159
class TransportNotPossible(TransportError):
160
    """This is for transports where a specific function is explicitly not
161
    possible. Such as pushing files to an HTTP server.
162
    """
163
    pass
164
165
class NonRelativePath(TransportError):
166
    """An absolute path was supplied, that could not be decoded into
167
    a relative path.
168
    """
169
    pass
170
171
class NoSuchFile(TransportError, IOError):
172
    """A get() was issued for a file that doesn't exist."""
173
    def __init__(self, msg=None, orig_error=None):
174
        import errno
175
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
176
        IOError.__init__(self, errno.ENOENT, self.msg)
177
178
class FileExists(TransportError, OSError):
179
    """An operation was attempted, which would overwrite an entry,
180
    but overwritting is not supported.
181
182
    mkdir() can throw this, but put() just overwites existing files.
183
    """
184
    def __init__(self, msg=None, orig_error=None):
185
        import errno
186
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
187
        OSError.__init__(self, errno.EEXIST, self.msg)
188
189
class PermissionDenied(TransportError):
190
    """An operation cannot succeed because of a lack of permissions."""
191
    pass
192
193
class ConnectionReset(TransportError):
194
    """The connection has been closed."""
195
    pass
196