Skip to content
Snippets Groups Projects
  1. Apr 12, 2014
  2. Apr 11, 2014
  3. Apr 10, 2014
    • Pierre-Yves David's avatar
      bundle2: extract a _payloadchunks method for part · 4cae06ae
      Pierre-Yves David authored
      We are preparing streaming capability for part. So the generation of payload
      chunk will becomes more complex. We extract this part in its own function before
      any changes.
      4cae06ae
    • Pierre-Yves David's avatar
      changegroup: move chunk extraction into a getchunks method of unbundle10 · 1e28ec97
      Pierre-Yves David authored
      This code used to be in `writebundle` only. We needs to make it more broadly
      available for bundle2. The "changegroup" bundle2 part has to retrieve the
      binary content of changegroup stream. We moved the chunks retrieving code into
      the `unbundle10` object directly and the `writebundle` code is now using that.
      
      This split is useful for bundle2 purpose, we want to be able to easily stream
      changegroup content in a part.
      
      To keep thing simples, we kept compression out of the new methods. If it make
      more sense in the future, compression may get included in this function too.
      1e28ec97
  4. Mar 25, 2014
  5. Apr 04, 2014
    • Pierre-Yves David's avatar
      bundle2: produce a bundle2 reply · d7df4b73
      Pierre-Yves David authored
      We do not know yet what kind of data future features and extensions will need to
      exchange. To handle that, bundle2 allows to send arbitrary content to the
      server. As a consequence, we need to be able to reply arbitrary content to the
      client. And, we can use bundle2 to transmit those arbitrary data.
      
      When a client will push a bundle2 to the server, the server will reply with a
      bundle2 itself.
      
      This changeset installs the first stone of this logic and test it.
      d7df4b73
  6. Apr 11, 2014
  7. Apr 01, 2014
    • Pierre-Yves David's avatar
      bundle2: add an integer id to part · e995d104
      Pierre-Yves David authored
      For sending response to a pushed bundle, we need to link reply parts to request
      part. We introduce a part id for this purpose. This is a 32 bit unique
      integer stored in the header.
      e995d104
  8. Apr 07, 2014
  9. Feb 25, 2014
  10. Apr 07, 2014
  11. Mar 20, 2014
  12. Apr 07, 2014
  13. Mar 08, 2014
  14. Apr 11, 2014
  15. Apr 10, 2014
    • Wei, Elson's avatar
      hgweb: override the charset attribute in the http request · 55543ee5
      Wei, Elson authored
      The default http request character set is UTF-8. If the message is not encoded
      in UTF-8, such as big5, it cannot be shown correctly. The 'charset' is
      overridden by the root document's, such that the user can select the proper
      encoding in the browser.
      55543ee5
  16. Apr 11, 2014
  17. Apr 05, 2014
    • Pierre-Yves David's avatar
      localrepo: add unbundle support · 7a679918
      Pierre-Yves David authored
      Localrepo now supports the unbundle method of pushing changegroups. We
      plan to use the unbundle call for bundle2 so it is important that all
      peers supports it. The `peer.unbundle` and `peer.addchangegroup` code
      path have small difference so cause some test output changes. None of those
      changes seems problematic.
      7a679918
    • Pierre-Yves David's avatar
      unbundle: extract the core logic in another function · 33d5fdd9
      Pierre-Yves David authored
      The `exchange` module now contains an `unbundle` function that holds the core
      unbundle logic. The wire protocol keeps its own unbundle function. It enforces
      wireprotocol-specific logic and then calls the extracted function.
      
      This aims at implementing unbundle for localrepo.
      33d5fdd9
    • Pierre-Yves David's avatar
      unbundle: extract checkheads in its own function · 98485027
      Pierre-Yves David authored
      We are going to refactor the unbundle function to have it working on
      a local repository too. Having this function extracted will ease the process.
      
      In the case of non-matching heads, the function now directly raises an
      exception. The top level of the function is catching it.
      98485027
  18. Apr 08, 2014
    • Pierre-Yves David's avatar
      phase: apply publishing enforcement for "serve" source · 63659b80
      Pierre-Yves David authored
      When a changegroup is added by a push on a publishing server, we ensure they
      are added as public. This is used to enforce publishing on server when the
      client is not aware of phases. It also prevents race conditions where a reader
      could see the changesets as draft before they get turned public by the client.
      Finally, this save rounds trip as the client does not need additional request to
      turn them public.
      
      However, this logic was only enforced when the changegroup was from a "push"
      source. And "push" is used for local pushes only. Wireprotocol push uses "serve"
      as source since Mercurial 1.9. We now enforce this logic for both "push" and
      "serve" sources.
      
      One could note that this logic was mainly useful during wireprotocol exchanges.
      So this code is finally put into good use, 9 versions after its introduction.
      63659b80
  19. Apr 10, 2014
  20. Dec 20, 2013
    • Stéphane Klein's avatar
      http: reuse authentication info after the first failed request (issue3567) · a939eeb9
      Stéphane Klein authored
      [This was applied in 181108726ea5 but backed out again in af02783dea65 because
      of Python 2.4 issues. This edition and test-http.t works with Python 2.4.]
      
      Context: mercurial access to repository server with http access, and this
      server is protected by basic auth.
      
      Before patch:
      
      * mercurial try an anonymous access to server, server return 401 response and
        mercurial resend request with login / password information
      
      After patch:
      
      * mercurial try an anonymous access to server, server return
        401 response. For all next requests, mercurial keep in memory this
        information (this server need basic auth information).
      
      This patch reduce the number of http access against mercurial server.
      
      Example, before patch:
      
      10.10.168.170 - - [25/Oct/2013:15:44:51 +0200] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:44:52 +0200] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:00 +0200] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:01 +0200] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:03 +0200] "GET /hg/testagt?cmd=batch
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:04 +0200] "GET /hg/testagt?cmd=batch
      HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:06 +0200] "GET /hg/testagt?cmd=getbundle
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:07 +0200] "GET /hg/testagt?cmd=getbundle
      HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:09 +0200] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:10 +0200] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
      
      Example after patch:
      
      10.10.168.170 - - [28/Oct/2013:11:49:14 +0100] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [28/Oct/2013:11:49:15 +0100] "GET /hg/testagt?cmd=capabilities
      HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [28/Oct/2013:11:49:17 +0100] "GET /hg/testagt?cmd=batch
      HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [28/Oct/2013:11:49:19 +0100] "GET /hg/testagt?cmd=getbundle
      HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [28/Oct/2013:11:49:22 +0100] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
      10.10.168.170 - - [28/Oct/2013:11:49:24 +0100] "GET /hg/testagt?cmd=listkeys
      HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
      
      In this last example, you can see only one 401 response.
      a939eeb9
  21. Apr 08, 2014
    • Durham Goode's avatar
      bundle2: use discard to remove bundle2 cap · ffddabb8
      Durham Goode authored
      caps.remove('bundle2') was throwing an exception if bundle2 wasn't present in
      the capabilities. This was causing test-static-http.t to hang. Let's just use
      discard, so we don't get an exception.
      ffddabb8
Loading