/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):
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
25
    def __str__(self):
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
26
        # XXX: Should we show the exception class in 
27
        # exceptions that don't provide their own message?  
28
        # maybe it should be done at a higher level
29
        ## n = self.__class__.__name__ + ': '
30
        n = ''
1195 by Martin Pool
- better error display
31
        if len(self.args) == 1:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
32
            return n + self.args[0]
1195 by Martin Pool
- better error display
33
        elif len(self.args) == 2:
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
34
            # further explanation or suggestions
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
35
            try:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
36
                return n + '\n  '.join([self.args[0]] + self.args[1])
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
37
            except TypeError:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
38
                return n + "%r" % self
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
39
        else:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
40
            return n + `self.args`
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
41
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
42
1 by mbp at sourcefrog
import from baz patch-364
43
class BzrCheckError(BzrError):
44
    pass
45
46
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
47
class InvalidRevisionNumber(BzrError):
48
    def __str__(self):
49
        return 'invalid revision number: %r' % self.args[0]
50
51
52
class InvalidRevisionId(BzrError):
53
    pass
54
55
329 by Martin Pool
- refactor command functions into command classes
56
class BzrCommandError(BzrError):
57
    # Error from malformed user command
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
58
    def __str__(self):
59
        return self.args[0]
1 by mbp at sourcefrog
import from baz patch-364
60
61
573 by Martin Pool
- new exception NotBranchError
62
class NotBranchError(BzrError):
63
    """Specified path is not in a branch"""
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
64
    def __str__(self):
65
        return 'not a branch: %s' % self.args[0]
573 by Martin Pool
- new exception NotBranchError
66
67
753 by Martin Pool
- new exception NotVersionedError
68
class NotVersionedError(BzrError):
69
    """Specified object is not versioned."""
70
71
599 by Martin Pool
- better error reporting from smart_add
72
class BadFileKindError(BzrError):
73
    """Specified file is of a kind that cannot be added.
74
75
    (For example a symlink or device file.)"""
76
    pass
77
78
79
class ForbiddenFileError(BzrError):
80
    """Cannot operate on a file because it is a control file."""
81
    pass
82
83
614 by Martin Pool
- unify two defintions of LockError
84
class LockError(Exception):
85
    """All exceptions from the lock/unlock functions should be from
86
    this exception class.  They will be translated as necessary. The
87
    original exception is available as e.original_error
88
    """
89
    def __init__(self, e=None):
90
        self.original_error = e
91
        if e:
92
            Exception.__init__(self, e)
93
        else:
94
            Exception.__init__(self)
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
95
96
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
97
class CommitNotPossible(LockError):
98
    """A commit was attempted but we do not have a write lock open."""
99
100
101
class AlreadyCommitted(LockError):
102
    """A rollback was requested, but is not able to be accomplished."""
103
104
1417.1.8 by Robert Collins
use transactions in the weave store interface, which enables caching for log
105
class ReadOnlyError(LockError):
106
    """A write attempt was made in a read only transaction."""
107
108
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
109
class PointlessCommit(Exception):
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
110
    """Commit failed because nothing was changed."""
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
111
112
113
class NoSuchRevision(BzrError):
114
    def __init__(self, branch, revision):
115
        self.branch = branch
116
        self.revision = revision
117
        msg = "Branch %s has no revision %s" % (branch, revision)
118
        BzrError.__init__(self, msg)
119
1034 by Martin Pool
- merge bzrlib.revision.is_ancestor from aaron
120
1192 by Martin Pool
- clean up code for retrieving stored inventories
121
class HistoryMissing(BzrError):
122
    def __init__(self, branch, object_type, object_id):
123
        self.branch = branch
124
        BzrError.__init__(self,
125
                          '%s is missing %s {%s}'
126
                          % (branch, object_type, object_id))
127
128
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
129
class DivergedBranches(BzrError):
130
    def __init__(self, branch1, branch2):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
131
        BzrError.__init__(self, "These branches have diverged.")
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
132
        self.branch1 = branch1
133
        self.branch2 = branch2
134
1390 by Robert Collins
pair programming worx... merge integration and weave
135
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
136
class UnrelatedBranches(BzrCommandError):
137
    def __init__(self):
138
        msg = "Branches have no common ancestor, and no base revision"\
139
            " specified."
140
        BzrCommandError.__init__(self, msg)
141
974.1.80 by Aaron Bentley
Improved merge error handling and testing
142
class NoCommonAncestor(BzrError):
143
    def __init__(self, revision_a, revision_b):
144
        msg = "Revisions have no common ancestor: %s %s." \
145
            % (revision_a, revision_b) 
146
        BzrError.__init__(self, msg)
147
148
class NoCommonRoot(BzrError):
149
    def __init__(self, revision_a, revision_b):
150
        msg = "Revisions are not derived from the same root: %s %s." \
151
            % (revision_a, revision_b) 
152
        BzrError.__init__(self, msg)
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
153
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
154
class NotAncestor(BzrError):
155
    def __init__(self, rev_id, not_ancestor_id):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
156
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
157
                                                        rev_id)
158
        BzrError.__init__(self, msg)
159
        self.rev_id = rev_id
160
        self.not_ancestor_id = not_ancestor_id
1185.1.12 by Robert Collins
merge in lsdiff/filterdiff friendliness
161
162
1092.3.4 by Robert Collins
update symlink branch to integration
163
class NotAncestor(BzrError):
164
    def __init__(self, rev_id, not_ancestor_id):
165
        self.rev_id = rev_id
166
        self.not_ancestor_id = not_ancestor_id
167
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
168
                                                        rev_id)
169
        BzrError.__init__(self, msg)
170
171
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
172
class InstallFailed(BzrError):
173
    def __init__(self, revisions):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
174
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
175
        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
176
        self.revisions = revisions
1154 by Martin Pool
- fix imports for moved errors
177
178
179
class AmbiguousBase(BzrError):
180
    def __init__(self, bases):
181
        msg = "The correct base is unclear, becase %s are all equally close" %\
182
            ", ".join(bases)
183
        BzrError.__init__(self, msg)
184
        self.bases = bases
185
974.1.80 by Aaron Bentley
Improved merge error handling and testing
186
class NoCommits(BzrError):
187
    def __init__(self, branch):
188
        msg = "Branch %s has no commits." % branch
189
        BzrError.__init__(self, msg)
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
190
191
class UnlistableStore(BzrError):
192
    def __init__(self, store):
193
        BzrError.__init__(self, "Store %s is not listable" % store)
194
195
class UnlistableBranch(BzrError):
196
    def __init__(self, br):
197
        BzrError.__init__(self, "Stores for branch %s are not listable" % br)
1392 by Robert Collins
reinstate testfetch test case
198
199
1185.13.4 by Robert Collins
make reweave visible as a weave method, and quickly integrate into fetch
200
from bzrlib.weave import WeaveError, WeaveParentMismatch
1393.2.1 by John Arbash Meinel
Merged in split-storage-2 branch. Need to cleanup a little bit more still.
201
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
202
class TransportError(BzrError):
203
    """All errors thrown by Transport implementations should derive
204
    from this class.
205
    """
206
    def __init__(self, msg=None, orig_error=None):
207
        if msg is None and orig_error is not None:
208
            msg = str(orig_error)
209
        BzrError.__init__(self, msg)
210
        self.msg = msg
211
        self.orig_error = orig_error
212
213
# A set of semi-meaningful errors which can be thrown
214
class TransportNotPossible(TransportError):
215
    """This is for transports where a specific function is explicitly not
216
    possible. Such as pushing files to an HTTP server.
217
    """
218
    pass
219
220
class NonRelativePath(TransportError):
221
    """An absolute path was supplied, that could not be decoded into
222
    a relative path.
223
    """
224
    pass
225
226
class NoSuchFile(TransportError, IOError):
227
    """A get() was issued for a file that doesn't exist."""
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
228
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
229
    # XXX: Is multiple inheritance for exceptions really needed?
230
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
231
    def __str__(self):
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
232
        return 'no such file: ' + self.msg
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
233
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
234
    def __init__(self, msg=None, orig_error=None):
235
        import errno
236
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
237
        IOError.__init__(self, errno.ENOENT, self.msg)
238
239
class FileExists(TransportError, OSError):
240
    """An operation was attempted, which would overwrite an entry,
241
    but overwritting is not supported.
242
243
    mkdir() can throw this, but put() just overwites existing files.
244
    """
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
245
    # XXX: Is multiple inheritance for exceptions really needed?
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
246
    def __init__(self, msg=None, orig_error=None):
247
        import errno
248
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
249
        OSError.__init__(self, errno.EEXIST, self.msg)
250
251
class PermissionDenied(TransportError):
252
    """An operation cannot succeed because of a lack of permissions."""
253
    pass
254
255
class ConnectionReset(TransportError):
256
    """The connection has been closed."""
257
    pass
258
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
259
class ConflictsInTree(BzrError):
260
    def __init__(self):
261
        BzrError.__init__(self, "Working tree has conflicts.")