~jelmer/bzr-git/index-based

19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
1
# Copyright (C) 2007 Canonical Ltd
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
439 by Jelmer Vernooij
Add exception for ghost revisions.
17
19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
18
"""A grouping of Exceptions for bzr-git"""
19
439 by Jelmer Vernooij
Add exception for ghost revisions.
20
292 by Jelmer Vernooij
Fix formatting.
21
from dulwich import errors as git_errors
22
19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
23
from bzrlib import errors as bzr_errors
24
439 by Jelmer Vernooij
Add exception for ghost revisions.
25
19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
26
class BzrGitError(bzr_errors.BzrError):
27
    """The base-level exception for bzr-git errors."""
28
29
30
class GitCommandError(BzrGitError):
31
    """Raised when spawning 'git' does not return normally."""
32
33
    _fmt = 'Command failed (%(returncode)s): command %(command)s\n%(stderr)s'
34
35
    def __init__(self, command, returncode, stderr):
36
        self.command = command
37
        self.returncode = returncode
38
        self.stderr = stderr
165 by Jelmer Vernooij
Give a proper error when the ref can not be found.
39
40
41
class NoSuchRef(BzrGitError):
677.1.18 by Jelmer Vernooij
Clean up trailing whitespace.
42
    """Raised when a ref can not be found."""
165 by Jelmer Vernooij
Give a proper error when the ref can not be found.
43
44
    _fmt = "The ref %(ref)s was not found."
677.1.18 by Jelmer Vernooij
Clean up trailing whitespace.
45
277 by Jelmer Vernooij
Allow passing in refs that *were* found in NoSuchRef.
46
    def __init__(self, ref, present_refs=None):
165 by Jelmer Vernooij
Give a proper error when the ref can not be found.
47
        self.ref = ref
277 by Jelmer Vernooij
Allow passing in refs that *were* found in NoSuchRef.
48
        self.present_refs = present_refs
49
210 by Jelmer Vernooij
properly error out about not support lightweight checkouts.
50
242 by Jelmer Vernooij
Add conversion function for dulwich errors.
51
def convert_dulwich_error(error):
52
    """Convert a Dulwich error to a Bazaar error."""
53
54
    if isinstance(error, git_errors.HangupException):
55
        raise bzr_errors.ConnectionReset(error.msg, "")
56
    raise error
291 by Jelmer Vernooij
Print proper error about not supporting push.
57
58
59
class NoPushSupport(bzr_errors.BzrError):
60
    _fmt = "Push is not yet supported for bzr-git. Try dpush instead."
319 by Jelmer Vernooij
Print proper error when trying unsupported operations against a git server.
61
62
63
class GitSmartRemoteNotSupported(bzr_errors.BzrError):
64
    _fmt = "This operation is not supported by the Git smart server protocol."