Example #1
0
 def _getfile(self, tmpfile, filename, hash):
     (baseurl, authinfo) = url_.getauthinfo(self.url)
     url = bfutil.urljoin(baseurl, hash)
     try:
         request = urllib2.Request(url)
         infile = self.opener.open(request)
     except urllib2.HTTPError, err:
         detail = _("HTTP error: %s %s") % (err.code, err.msg)
         raise basestore.StoreError(filename, hash, url, detail)
Example #2
0
 def _getfile(self, tmpfile, filename, hash):
     (baseurl, authinfo) = url_.getauthinfo(self.url)
     url = bfutil.urljoin(baseurl, hash)
     try:
         request = urllib2.Request(url)
         infile = self.opener.open(request)
     except urllib2.HTTPError, err:
         detail = _("HTTP error: %s %s") % (err.code, err.msg)
         raise basestore.StoreError(filename, hash, url, detail)
 def _activepath(self, remote):
     conf = config.config()
     try:
         rc = self.vfs.join('hgrc')
     except AttributeError:
         # old hg
         rc = self.join('hgrc')
     if os.path.exists(rc):
         with open(rc) as fp:
             conf.parse('.hgrc', fp.read(), include=conf.read)
     realpath = ''
     if 'paths' in conf:
         for path, uri in conf['paths'].items():
             for s in schemes.schemes.iterkeys():
                 if uri.startswith('%s://' % s):
                     # TODO: refactor schemes so we don't
                     # duplicate this logic
                     ui.note('performing schemes expansion with '
                             'scheme %s\n' % s)
                     scheme = hg.schemes[s]
                     parts = uri.split('://', 1)[1].split('/',
                                                          scheme.parts)
                     if len(parts) > scheme.parts:
                         tail = parts[-1]
                         parts = parts[:-1]
                     else:
                         tail = ''
                     context = dict((str(i+1), v) for i, v in
                                    enumerate(parts))
                     uri = ''.join(scheme.templater.process(
                         scheme.url, context)) + tail
             uri = self.ui.expandpath(uri)
             if remote.local():
                 uri = os.path.realpath(uri)
                 rpath = getattr(remote, 'root', None)
                 if rpath is None:
                     # Maybe a localpeer? (hg@1ac628cd7113, 2.3)
                     rpath = getattr(getattr(remote, '_repo', None),
                                     'root', None)
             else:
                 rpath = getattr(remote, 'url', lambda : remote._url)()
                 if uri.startswith('http'):
                     try:
                         uri = url.url(uri).authinfo()[0]
                     except AttributeError:
                         try:
                             uri = util.url(uri).authinfo()[0]
                         except AttributeError:
                             uri = url.getauthinfo(uri)[0]
             uri = uri.rstrip('/')
             rpath = rpath.rstrip('/')
             if uri == rpath:
                 realpath = path
                 # prefer a non-default name to default
                 if path != 'default':
                     break
     return realpath
Example #4
0
 def _activepath(self, remote):
     conf = config.config()
     try:
         rc = self.vfs.join('hgrc')
     except AttributeError:
         # old hg
         rc = self.join('hgrc')
     if os.path.exists(rc):
         with open(rc) as fp:
             conf.parse('.hgrc', fp.read(), include=conf.read)
     realpath = ''
     if 'paths' in conf:
         for path, uri in conf['paths'].items():
             for s in schemes.schemes.iterkeys():
                 if uri.startswith('%s://' % s):
                     # TODO: refactor schemes so we don't
                     # duplicate this logic
                     ui.note('performing schemes expansion with '
                             'scheme %s\n' % s)
                     scheme = hg.schemes[s]
                     parts = uri.split('://', 1)[1].split('/',
                                                          scheme.parts)
                     if len(parts) > scheme.parts:
                         tail = parts[-1]
                         parts = parts[:-1]
                     else:
                         tail = ''
                     context = dict((str(i+1), v) for i, v in
                                    enumerate(parts))
                     uri = ''.join(scheme.templater.process(
                         scheme.url, context)) + tail
             uri = self.ui.expandpath(uri)
             if remote.local():
                 uri = os.path.realpath(uri)
                 rpath = getattr(remote, 'root', None)
                 if rpath is None:
                     # Maybe a localpeer? (hg@1ac628cd7113, 2.3)
                     rpath = getattr(getattr(remote, '_repo', None),
                                     'root', None)
             else:
                 rpath = getattr(remote, 'url', lambda : remote._url)()
                 if uri.startswith('http'):
                     try:
                         uri = url.url(uri).authinfo()[0]
                     except AttributeError:
                         try:
                             uri = util.url(uri).authinfo()[0]
                         except AttributeError:
                             uri = url.getauthinfo(uri)[0]
             uri = uri.rstrip('/')
             rpath = rpath.rstrip('/')
             if uri == rpath:
                 realpath = path
                 # prefer a non-default name to default
                 if path != 'default':
                     break
     return realpath
Example #5
0
 def __init__(self, ui, repo, remote):
     self.baseurl = bfutil.urljoin(remote.url(), 'bfile')
     try:
         # Mercurial >= 1.9
         self.baseurl, authinfo = util.url(self.baseurl).authinfo()
     except AttributeError:
         # Mercurial <= 1.8
         self.baseurl, authinfo = url_.getauthinfo(self.baseurl)
     self.opener = url_.opener(repo.ui, authinfo)
     super(kilnstore, self).__init__(ui, repo, remote.url())
Example #6
0
 def _verify(self, hash):
     baseurl, authinfo = url_.getauthinfo(self.url)
     store_path = bfutil.urljoin(baseurl, hash)
     request = urllib2.Request(store_path)
     request.add_header('SHA1-Request', hash)
     try:
         url = self.opener.open(request)
         if 'Content-SHA1' in url.info() and hash == url.info()['Content-SHA1']:
             return True
         else:
             return False
     except:
         return False
Example #7
0
 def _verify(self, hash):
     baseurl, authinfo = url_.getauthinfo(self.url)
     store_path = bfutil.urljoin(baseurl, hash)
     request = urllib2.Request(store_path)
     request.add_header('SHA1-Request', hash)
     try:
         url = self.opener.open(request)
         if 'Content-SHA1' in url.info() and hash == url.info(
         )['Content-SHA1']:
             return True
         else:
             return False
     except:
         return False
Example #8
0
 def _activepath(self, remote):
     conf = config.config()
     rc = self.join("hgrc")
     if os.path.exists(rc):
         fp = open(rc)
         conf.parse(".hgrc", fp.read())
         fp.close()
     realpath = ""
     if "paths" in conf:
         for path, uri in conf["paths"].items():
             for s in schemes.schemes.iterkeys():
                 if uri.startswith("%s://" % s):
                     # TODO: refactor schemes so we don't
                     # duplicate this logic
                     ui.note("performing schemes expansion with " "scheme %s\n" % s)
                     scheme = hg.schemes[s]
                     parts = uri.split("://", 1)[1].split("/", scheme.parts)
                     if len(parts) > scheme.parts:
                         tail = parts[-1]
                         parts = parts[:-1]
                     else:
                         tail = ""
                     context = dict((str(i + 1), v) for i, v in enumerate(parts))
                     uri = "".join(scheme.templater.process(scheme.url, context)) + tail
             uri = self.ui.expandpath(uri)
             if remote.local():
                 uri = os.path.realpath(uri)
                 rpath = getattr(remote, "root", None)
                 if rpath is None:
                     # Maybe a localpeer? (hg@1ac628cd7113, 2.3)
                     rpath = getattr(getattr(remote, "_repo", None), "root", None)
             else:
                 rpath = remote._url
                 if uri.startswith("http"):
                     try:
                         uri = url.url(uri).authinfo()[0]
                     except AttributeError:
                         try:
                             uri = util.url(uri).authinfo()[0]
                         except AttributeError:
                             uri = url.getauthinfo(uri)[0]
             uri = uri.rstrip("/")
             rpath = rpath.rstrip("/")
             if uri == rpath:
                 realpath = path
                 # prefer a non-default name to default
                 if path != "default":
                     break
     return realpath
Example #9
0
    def sendfile(self, filename, hash):
        if self._verify(hash):
            return

        self.ui.debug('httpstore.sendfile(%s, %s)\n' % (filename, hash))
        baseurl, authinfo = url_.getauthinfo(self.url)
        fd = None
        try:
            fd = url_.httpsendfile(filename, 'rb')
            request = urllib2.Request(bfutil.urljoin(baseurl, hash), fd)
            try:
                url = self.opener.open(request)
                self.ui.note(_('[OK] %s/%s\n') % (self.rawurl, url.geturl()))
            except urllib2.HTTPError, e:
                raise util.Abort(_('unable to POST: %s\n') % e.msg)
        except Exception, e:
            raise util.Abort(_('%s') % e)
Example #10
0
    def sendfile(self, filename, hash):
        if self._verify(hash):
            return

        self.ui.debug('httpstore.sendfile(%s, %s)\n' % (filename, hash))
        baseurl, authinfo = url_.getauthinfo(self.url)
        fd = None
        try:
            fd = url_.httpsendfile(filename, 'rb')
            request = urllib2.Request(bfutil.urljoin(baseurl, hash), fd)
            try:
                url = self.opener.open(request)
                self.ui.note(_('[OK] %s/%s\n') % (self.rawurl, url.geturl()))
            except urllib2.HTTPError, e:
                raise util.Abort(_('unable to POST: %s\n') % e.msg)
        except Exception, e:
            raise util.Abort(_('%s') % e)
Example #11
0
    def _verifyfile(self, cctx, cset, contents, standin, verified):
        baseurl, authinfo = url_.getauthinfo(self.url)
        filename = bfutil.split_standin(standin)
        if not filename:
            return False
        fctx = cctx[standin]
        key = (filename, fctx.filenode())
        if key in verified:
            return False

        expect_hash = fctx.data()[0:40]
        store_path = bfutil.urljoin(baseurl, expect_hash)
        verified.add(key)

        request = urllib2.Request(store_path)
        request.add_header('SHA1-Request', expect_hash)
        try:
            url = self.opener.open(request)
            if 'Content-SHA1' in url.info():
                rhash = url.info()['Content-SHA1']
                if rhash == expect_hash:
                    return False
                else:
                    self.ui.warn(
                        _('changeset %s: %s: contents differ\n (%s)\n') %
                        (cset, filename, store_path))
                    return True  # failed
            else:
                self.ui.warn(
                    _('remote did not send a hash, '
                      'it probably does not understand this protocol\n'))
                return False
        except urllib2.HTTPError, e:
            if e.code == 404:
                self.ui.warn(
                    _('changeset %s: %s missing\n (%s)\n') %
                    (cset, filename, store_path))
                return True  # failed
            else:
                raise util.Abort(
                    _('check failed, unexpected response'
                      'status: %d: %s') % (e.code, e.msg))
Example #12
0
    def _verifyfile(self, cctx, cset, contents, standin, verified):
        baseurl, authinfo = url_.getauthinfo(self.url)
        filename = bfutil.split_standin(standin)
        if not filename:
            return False
        fctx = cctx[standin]
        key = (filename, fctx.filenode())
        if key in verified:
            return False

        expect_hash = fctx.data()[0:40]
        store_path = bfutil.urljoin(baseurl, expect_hash)
        verified.add(key)

        request = urllib2.Request(store_path)
        request.add_header('SHA1-Request',expect_hash)
        try:
            url = self.opener.open(request)
            if 'Content-SHA1' in url.info():
                rhash = url.info()['Content-SHA1']
                if rhash == expect_hash:
                    return False
                else:
                    self.ui.warn(
                        _('changeset %s: %s: contents differ\n (%s)\n')
                        % (cset, filename, store_path))
                    return True             # failed
            else:
                self.ui.warn(_('remote did not send a hash, '
                    'it probably does not understand this protocol\n'))
                return False
        except urllib2.HTTPError, e:
            if e.code == 404:
                self.ui.warn(
                    _('changeset %s: %s missing\n (%s)\n')
                    % (cset, filename, store_path))
                return True                 # failed
            else:
                raise util.Abort(_('check failed, unexpected response'
                                   'status: %d: %s') % (e.code, e.msg))
Example #13
0
 def spliturl(url):
     return url_.getauthinfo(url)
Example #14
0
 def __init__(self, ui, repo, url):
     url = bfutil.urljoin(url, 'bfile')
     super(httpstore, self).__init__(ui, repo, url)
     self.rawurl, self.path = urlparse.urlsplit(self.url)[1:3]
     (baseurl, authinfo) = url_.getauthinfo(self.url)
     self.opener = url_.opener(self.ui, authinfo)
Example #15
0
 def __init__(self, ui, repo, url):
     url = bfutil.urljoin(url, 'bfile')
     super(httpstore, self).__init__(ui, repo, url)
     self.rawurl, self.path = urlparse.urlsplit(self.url)[1:3]
     (baseurl, authinfo) = url_.getauthinfo(self.url)
     self.opener = url_.opener(self.ui, authinfo)