/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/git/server.py

  • Committer: Jelmer Vernooij
  • Date: 2018-06-14 17:59:16 UTC
  • mto: This revision was merged to the branch mainline in revision 7065.
  • Revision ID: jelmer@jelmer.uk-20180614175916-a2e2xh5k533guq1x
Move breezy.plugins.git to breezy.git.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
# along with this program; if not, write to the Free Software
17
17
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
 
 
19
from __future__ import absolute_import
 
20
 
19
21
from dulwich.server import TCPGitServer
20
22
 
21
23
import sys
31
33
 
32
34
from .mapping import (
33
35
    default_mapping,
34
 
    decode_git_path,
35
36
    )
36
37
from .object_store import (
37
 
    BazaarObjectStore,
38
38
    get_object_store,
39
39
    )
40
40
from .refs import (
49
49
    UploadPackHandler,
50
50
    )
51
51
 
52
 
 
53
52
class BzrBackend(Backend):
54
53
    """A git serve backend that can use a Bazaar repository."""
55
54
 
59
58
 
60
59
    def open_repository(self, path):
61
60
        # FIXME: More secure path sanitization
62
 
        transport = self.transport.clone(decode_git_path(path).lstrip("/"))
 
61
        transport = self.transport.clone(path.lstrip("/"))
63
62
        trace.mutter('client opens %r: %r', path, transport)
64
63
        return BzrBackendRepo(transport, self.mapping)
65
64
 
84
83
        return self.object_store.peel_sha(self.refs[name]).id
85
84
 
86
85
    def fetch_objects(self, determine_wants, graph_walker, progress,
87
 
                      get_tagged=None):
 
86
        get_tagged=None):
88
87
        """Yield git objects to send to client """
89
88
        with self.object_store.lock_read():
90
89
            wants = determine_wants(self.get_refs())
91
90
            have = self.object_store.find_common_revisions(graph_walker)
92
91
            if wants is None:
93
92
                return
94
 
            shallows = getattr(graph_walker, 'shallow', frozenset())
95
 
            if isinstance(self.object_store, BazaarObjectStore):
96
 
                return self.object_store.generate_pack_contents(
97
 
                    have, wants, shallow=shallows,
98
 
                    progress=progress, get_tagged=get_tagged, lossy=True)
99
 
            else:
100
 
                if shallows:
101
 
                    return self.object_store.generate_pack_contents(
102
 
                        have, wants, shallow=shallows, progress=progress)
103
 
                else:
104
 
                    return self.object_store.generate_pack_contents(
105
 
                        have, wants, progress=progress)
 
93
            return self.object_store.generate_pack_contents(have, wants, progress,
 
94
                get_tagged, lossy=(not self.mapping.roundtripping))
106
95
 
107
96
 
108
97
class BzrTCPGitServer(TCPGitServer):
138
127
    if handler is None:
139
128
        return None
140
129
    backend = BzrBackend(branch.user_transport)
141
 
 
142
130
    def git_call(environ, start_response):
143
131
        req = HTTPGitRequest(environ, start_response, dumb=False,
144
132
                             handlers=DEFAULT_HANDLERS)
170
158
 
171
159
def serve_git_receive_pack(transport, host=None, port=None, inet=False):
172
160
    if not inet:
173
 
        raise errors.CommandError(
 
161
        raise errors.BzrCommandError(
174
162
            "git-receive-pack only works in inetd mode")
175
163
    backend = BzrBackend(transport)
176
164
    sys.exit(serve_command(ReceivePackHandler, backend=backend))
178
166
 
179
167
def serve_git_upload_pack(transport, host=None, port=None, inet=False):
180
168
    if not inet:
181
 
        raise errors.CommandError(
 
169
        raise errors.BzrCommandError(
182
170
            "git-receive-pack only works in inetd mode")
183
171
    backend = BzrBackend(transport)
184
172
    sys.exit(serve_command(UploadPackHandler, backend=backend))