diff --git a/mercurial/bundlecaches.py b/mercurial/bundlecaches.py --- a/mercurial/bundlecaches.py +++ b/mercurial/bundlecaches.py @@ -25,8 +25,29 @@ urlreq = util.urlreq CB_MANIFEST_FILE = b'clonebundles.manifest' + def get_manifest(repo): - return repo.vfs.tryread(CB_MANIFEST_FILE) + """get the bundle manifest to be served to a client from a server""" + raw_text = repo.vfs.tryread(CB_MANIFEST_FILE) + entries = [e.split(b' ', 1) for e in raw_text.splitlines()] + + new_lines = [] + for e in entries: + url = alter_bundle_url(repo, e[0]) + if len(e) == 1: + line = url + b'\n' + else: + line = b"%s %s\n" % (url, e[1]) + new_lines.append(line) + return b''.join(new_lines) + + +def alter_bundle_url(repo, url): + """a function that exist to help extension and hosting to alter the url + + This will typically be used to inject authentication information in the url + of cached bundles.""" + return url @attr.s