228
275
"""Cannot operate on a file because it is a control file."""
231
class LockError(Exception):
278
class LockError(BzrNewError):
279
"""Lock error: %(message)s"""
233
280
# All exceptions from the lock/unlock functions should be from
234
281
# this exception class. They will be translated as necessary. The
235
282
# original exception is available as e.original_error
284
# New code should prefer to raise specific subclasses
285
def __init__(self, message):
286
self.message = message
238
289
class CommitNotPossible(LockError):
239
290
"""A commit was attempted but we do not have a write lock open."""
242
295
class AlreadyCommitted(LockError):
243
296
"""A rollback was requested, but is not able to be accomplished."""
246
301
class ReadOnlyError(LockError):
247
"""A write attempt was made in a read only transaction."""
302
"""A write attempt was made in a read only transaction on %(obj)s"""
303
def __init__(self, obj):
307
class OutSideTransaction(BzrNewError):
308
"""A transaction related operation was attempted after the transaction finished."""
311
class ObjectNotLocked(LockError):
312
"""%(obj)r is not locked"""
313
# this can indicate that any particular object is not locked; see also
314
# LockNotHeld which means that a particular *lock* object is not held by
315
# the caller -- perhaps they should be unified.
316
def __init__(self, obj):
320
class ReadOnlyObjectDirtiedError(ReadOnlyError):
321
"""Cannot change object %(obj)r in read only transaction"""
322
def __init__(self, obj):
326
class UnlockableTransport(LockError):
327
"""Cannot lock: transport is read only: %(transport)s"""
328
def __init__(self, transport):
329
self.transport = transport
332
class LockContention(LockError):
333
"""Could not acquire lock %(lock)s"""
334
# TODO: show full url for lock, combining the transport and relative bits?
335
def __init__(self, lock):
339
class LockBroken(LockError):
340
"""Lock was broken while still open: %(lock)s - check storage consistency!"""
341
def __init__(self, lock):
345
class LockBreakMismatch(LockError):
346
"""Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"""
347
def __init__(self, lock, holder, target):
353
class LockNotHeld(LockError):
354
"""Lock not held: %(lock)s"""
355
def __init__(self, lock):
250
359
class PointlessCommit(BzrNewError):
251
360
"""No changes to commit"""
363
class UpgradeReadonly(BzrNewError):
364
"""Upgrade URL cannot work with readonly URL's."""
367
class UpToDateFormat(BzrNewError):
368
"""The branch format %(format)s is already at the most recent format."""
370
def __init__(self, format):
371
BzrNewError.__init__(self)
253
376
class StrictCommitFailed(Exception):
254
377
"""Commit refused because there are unknowns in the tree."""
256
380
class NoSuchRevision(BzrError):
257
381
def __init__(self, branch, revision):
258
382
self.branch = branch
283
407
BzrCommandError.__init__(self, msg)
285
410
class NoCommonAncestor(BzrError):
286
411
def __init__(self, revision_a, revision_b):
287
412
msg = "Revisions have no common ancestor: %s %s." \
288
413
% (revision_a, revision_b)
289
414
BzrError.__init__(self, msg)
291
417
class NoCommonRoot(BzrError):
292
418
def __init__(self, revision_a, revision_b):
293
419
msg = "Revisions are not derived from the same root: %s %s." \
294
420
% (revision_a, revision_b)
295
421
BzrError.__init__(self, msg)
297
425
class NotAncestor(BzrError):
298
426
def __init__(self, rev_id, not_ancestor_id):
299
427
msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id,
317
445
BzrError.__init__(self, msg)
318
446
self.bases = bases
320
449
class NoCommits(BzrError):
321
450
def __init__(self, branch):
322
451
msg = "Branch %s has no commits." % branch
323
452
BzrError.__init__(self, msg)
325
455
class UnlistableStore(BzrError):
326
456
def __init__(self, store):
327
457
BzrError.__init__(self, "Store %s is not listable" % store)
329
461
class UnlistableBranch(BzrError):
330
462
def __init__(self, br):
331
463
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
466
class BoundBranchOutOfDate(BzrNewError):
467
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
468
def __init__(self, branch, master):
469
BzrNewError.__init__(self)
474
class CommitToDoubleBoundBranch(BzrNewError):
475
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
476
def __init__(self, branch, master, remote):
477
BzrNewError.__init__(self)
483
class OverwriteBoundBranch(BzrNewError):
484
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
485
def __init__(self, branch):
486
BzrNewError.__init__(self)
490
class BoundBranchConnectionFailure(BzrNewError):
491
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
492
def __init__(self, branch, target, error):
493
BzrNewError.__init__(self)
334
499
class WeaveError(BzrNewError):
335
500
"""Error in processing weave: %(message)s"""
336
502
def __init__(self, message=None):
337
503
BzrNewError.__init__(self)
338
504
self.message = message
365
534
"""Parents are mismatched between two revisions."""
537
class WeaveInvalidChecksum(WeaveError):
538
"""Text did not match it's checksum: %(message)s"""
541
class WeaveTextDiffers(WeaveError):
542
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
544
def __init__(self, revision_id, weave_a, weave_b):
545
WeaveError.__init__(self)
546
self.revision_id = revision_id
547
self.weave_a = weave_a
548
self.weave_b = weave_b
551
class WeaveTextDiffers(WeaveError):
552
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
554
def __init__(self, revision_id, weave_a, weave_b):
555
WeaveError.__init__(self)
556
self.revision_id = revision_id
557
self.weave_a = weave_a
558
self.weave_b = weave_b
561
class VersionedFileError(BzrNewError):
562
"""Versioned file error."""
565
class RevisionNotPresent(VersionedFileError):
566
"""Revision {%(revision_id)s} not present in %(file_id)s."""
568
def __init__(self, revision_id, file_id):
569
VersionedFileError.__init__(self)
570
self.revision_id = revision_id
571
self.file_id = file_id
574
class RevisionAlreadyPresent(VersionedFileError):
575
"""Revision {%(revision_id)s} already present in %(file_id)s."""
577
def __init__(self, revision_id, file_id):
578
VersionedFileError.__init__(self)
579
self.revision_id = revision_id
580
self.file_id = file_id
583
class KnitError(BzrNewError):
587
class KnitHeaderError(KnitError):
588
"""Knit header error: %(badline)r unexpected"""
590
def __init__(self, badline):
591
KnitError.__init__(self)
592
self.badline = badline
595
class KnitCorrupt(KnitError):
596
"""Knit %(filename)s corrupt: %(how)s"""
598
def __init__(self, filename, how):
599
KnitError.__init__(self)
600
self.filename = filename
368
604
class NoSuchExportFormat(BzrNewError):
369
605
"""Export format %(format)r not supported"""
370
606
def __init__(self, format):
416
655
(filename, ('\n'.join(e.message for e in errors)))
417
656
BzrError.__init__(self, message)
419
659
class SigningFailed(BzrError):
420
660
def __init__(self, command_line):
421
661
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
424
665
class WorkingTreeNotRevision(BzrError):
425
666
def __init__(self, tree):
426
667
BzrError.__init__(self, "The working tree for %s has changed since"
427
668
" last commit, but weave merge requires that it be"
428
669
" unchanged." % tree.basedir)
430
672
class CantReprocessAndShowBase(BzrNewError):
431
673
"""Can't reprocess and show base.
432
674
Reprocessing obscures relationship of conflicting lines to base."""
434
677
class GraphCycleError(BzrNewError):
435
678
"""Cycle in graph %(graph)r"""
436
679
def __init__(self, graph):
437
680
BzrNewError.__init__(self)
438
681
self.graph = graph
440
684
class NotConflicted(BzrNewError):
441
685
"""File %(filename)s is not conflicted."""
442
687
def __init__(self, filename):
443
688
BzrNewError.__init__(self)
444
689
self.filename = filename
446
692
class MustUseDecorated(Exception):
447
693
"""A decorating function has requested its original command be used.
449
695
This should never escape bzr, so does not need to be printable.
452
699
class MissingText(BzrNewError):
453
700
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
454
702
def __init__(self, branch, text_revision, file_id):
703
BzrNewError.__init__(self)
455
704
self.branch = branch
456
705
self.base = branch.base
457
706
self.text_revision = text_revision
458
707
self.file_id = file_id
710
class DuplicateKey(BzrNewError):
711
"""Key %(key)s is already present in map"""
714
class MalformedTransform(BzrNewError):
715
"""Tree transform is malformed %(conflicts)r"""
718
class BzrBadParameter(BzrNewError):
719
"""A bad parameter : %(param)s is not usable.
721
This exception should never be thrown, but it is a base class for all
722
parameter-to-function errors.
724
def __init__(self, param):
725
BzrNewError.__init__(self)
729
class BzrBadParameterNotUnicode(BzrBadParameter):
730
"""Parameter %(param)s is neither unicode nor utf8."""
733
class ReusingTransform(BzrNewError):
734
"""Attempt to reuse a transform that has already been applied."""
737
class CantMoveRoot(BzrNewError):
738
"""Moving the root directory is not supported at this time"""
741
class BzrBadParameterNotString(BzrBadParameter):
742
"""Parameter %(param)s is not a string or unicode string."""
745
class BzrBadParameterMissing(BzrBadParameter):
746
"""Parameter $(param)s is required but not present."""
749
class DependencyNotPresent(BzrNewError):
750
"""Unable to import library "%(library)s": %(error)s"""
752
def __init__(self, library, error):
753
BzrNewError.__init__(self, library=library, error=error)
756
class ParamikoNotPresent(DependencyNotPresent):
757
"""Unable to import paramiko (required for sftp support): %(error)s"""
759
def __init__(self, error):
760
DependencyNotPresent.__init__(self, 'paramiko', error)
763
class UninitializableFormat(BzrNewError):
764
"""Format %(format)s cannot be initialised by this version of bzr."""
766
def __init__(self, format):
767
BzrNewError.__init__(self)
771
class NoDiff3(BzrNewError):
772
"""Diff3 is not installed on this machine."""
775
class ExistingLimbo(BzrNewError):
776
"""This tree contains left-over files from a failed operation.
777
Please examine %(limbo_dir)s to see if it contains any files you wish to
778
keep, and delete it when you are done.
780
def __init__(self, limbo_dir):
781
BzrNewError.__init__(self)
782
self.limbo_dir = limbo_dir
785
class ImmortalLimbo(BzrNewError):
786
"""Unable to delete transform temporary directory $(limbo_dir)s.
787
Please examine %(limbo_dir)s to see if it contains any files you wish to
788
keep, and delete it when you are done.
790
def __init__(self, limbo_dir):
791
BzrNewError.__init__(self)
792
self.limbo_dir = limbo_dir
795
class OutOfDateTree(BzrNewError):
796
"""Working tree is out of date, please run 'bzr update'."""
798
def __init__(self, tree):
799
BzrNewError.__init__(self)
803
class MergeModifiedFormatError(BzrNewError):
804
"""Error in merge modified format"""
807
class CorruptRepository(BzrNewError):
808
"""An error has been detected in the repository %(repo_path)s.
809
Please run bzr reconcile on this repository."""
811
def __init__(self, repo):
812
BzrNewError.__init__(self)
813
self.repo_path = repo.bzrdir.root_transport.base
816
class UpgradeRequired(BzrNewError):
817
"""To use this feature you must upgrade your branch at %(path)s."""
819
def __init__(self, path):
820
BzrNewError.__init__(self)
824
class LocalRequiresBoundBranch(BzrNewError):
825
"""Cannot perform local-only commits on unbound branches."""
828
class MissingProgressBarFinish(BzrNewError):
829
"""A nested progress bar was not 'finished' correctly."""