Skip to content
Snippets Groups Projects
  1. Apr 07, 2017
    • Jun Wu's avatar
      test-flagprocessor: use changegroup3 in bundle2 · 77f746e5
      Jun Wu authored
      This will force "hg bundle" to use changegroup3 in the test. It is
      important since only changegroup3 preserves revlog flags.
      77f746e5
    • Jun Wu's avatar
      bundle: allow bundle command to use changegroup3 in tests · 1da9b2a4
      Jun Wu authored
      Since bundle2 writes changegroup version, we can just reuse the bundle2
      format for changegroup3.
      
      This won't enable the bundle command to write changegroup3 in the wild,
      since exchange.parsebundlespec only returns changegroup2. It unlocks tests
      to override exchange.parsebundlespec and get "hg bundle" write changegroup3.
      1da9b2a4
  2. Apr 06, 2017
    • Matt Harbison's avatar
      d34316ae
    • Matt Harbison's avatar
      run-tests: support per-line conditional output in tests · 4eec2f04
      Matt Harbison authored
      Duplicating entire tests just because the output is different is both error
      prone and can make the tests harder to read.  This harnesses the existing '(?)'
      infrastructure, both to improve readability, and because it seemed like the path
      of least resistance.
      
      The form is:
      
        $ test_cmd
        output (hghave-feature !) # required if hghave.has_feature(), else optional
        out2 (no-hghave-feature2 !) # req if not hghave.has_feature2(), else optional
      
      I originally extended the '(?)' syntax.  For example, this:
      
        2 r4/.hg/cache/checkisexec (execbit ?)
      
      pretty naturally reads as "checkisexec, if execbit".  In some ways though, this
      inverts the meaning of '?'.  For '(?)', the line is purely optional.  In the
      example, it is mandatory iff execbit.  Otherwise, it is carried forward as
      optional, to preserve the test output.  I tried it the other way, (listing
      'no-exec' in the example), but that is too confusing to read.  Kostia suggested
      using '!', and that seems fine.
      4eec2f04
    • Matt Harbison's avatar
      test-run-tests: pad the failure test to preserve the run order · ff604982
      Matt Harbison authored
      Test size seems to dictate the order in which the tests are run, and the next
      patch will add to test-success.t.  Similar to c0cecc153d25.
      ff604982
    • Matt Harbison's avatar
      run-tests: prevent a (glob) declaration from reordering (?) lines · 220d4bff
      Matt Harbison authored
      Previously, if a series of optional output lines marked with '(?)' had a (glob)
      in one of the first lines, the output would be reordered such that it came last
      if none of the lines were output.  The (re) declaration wasn't affected, which
      was helpful in figuring this out.  There were no tests for '(re) (?)' so add
      that to make sure everything plays nice.
      220d4bff
  3. Apr 07, 2017
  4. Apr 06, 2017
  5. Apr 05, 2017
  6. Apr 04, 2017
  7. Apr 03, 2017
  8. Apr 02, 2017
  9. Apr 01, 2017
  10. Apr 22, 2016
  11. Apr 02, 2017
  12. Apr 03, 2017
    • Jun Wu's avatar
      revlog: avoid applying delta chain on cache hit · 726f2412
      Jun Wu authored
      Previously, revlog.revision(raw=False) may try to apply the delta chain
      on _cache hit. That happens if flags are non-empty. This patch makes rawtext
      reused so delta chain application is avoided.
      
      "_cache" and "rev" are moved a bit to avoid unnecessary assignments.
      726f2412
    • Jun Wu's avatar
      revlog: indent block to make review easier · 2be73f97
      Jun Wu authored
      2be73f97
    • Jun Wu's avatar
      revlog: avoid calculating "flags" twice in revision() · ac9a5e89
      Jun Wu authored
      This is more consistent with other code in "revision()" - prefer performance
      to code length.
      ac9a5e89
    • Jun Wu's avatar
      revlog: use raw revision for rawsize · d22f29ab
      Jun Wu authored
      When writing the revlog-ng index, the third field is len(rawtext). See
      revlog._addrevision:
      
          textlen = len(rawtext)
          ....
          e = (offset_type(offset, flags), l, textlen,
               base, link, p1r, p2r, node)
          self.index.insert(-1, e)
      
      Therefore, revlog.index[rev][2] returned by revlog.rawsize should be
      len(rawtext), where "rawtext" is revlog.revision(raw=True).
      
      Unfortunately it's hard to add a test for this code path because "if l >= 0"
      catches most cases.
      d22f29ab
  13. May 14, 2016
  14. Apr 01, 2017
    • Gregory Szorc's avatar
      zstd: vendor python-zstandard 0.8.0 · e0dc4053
      Gregory Szorc authored
      Commit 81e1f5bbf1fc54808649562d3ed829730765c540 from
      https://github.com/indygreg/python-zstandard is imported without
      modifications (other than removing unwanted files).
      
      Updates relevant to Mercurial include:
      
      * Support for multi-threaded compression (we can use this for
        bundle and wire protocol compression).
      * APIs for batch compression and decompression operations using
        multiple threads and optimal memory allocation mechanism. (Can
        be useful for revlog perf improvements.)
      * A ``BufferWithSegments`` type that models a single memory buffer
        containing N discrete items of known lengths. This type can be
        used for very efficient 0-copy data operations.
      
      # no-check-commit
      e0dc4053
    • Gregory Szorc's avatar
      commands: update help for "unbundle" · 2b130e26
      Gregory Szorc authored
      Similar to the recent change to "bundle," this command no longer
      just deals with "changegroup" data.
      2b130e26
    • Gregory Szorc's avatar
      commands: update help for "bundle" · 54b1af73
      Gregory Szorc authored
      We now have a dedicated help topic to describe bundle specification
      strings. Let's update `hg bundle`'s documentation to reflect its
      existence.
      
      While I was hear, I also tweaked some wording which I felt was out
      of date and needed tweaking. Specifically, `hg bundle` no longer
      just deals with "changegroup" data: it can also generate files
      that have non-changegroup data.
      54b1af73
    • Gregory Szorc's avatar
      help: document bundle specifications · 69d8fcf2
      Gregory Szorc authored
      I softly formalized the concept of a "bundle specification" a while
      ago when I was working on clone bundles and stream clone bundles and
      wanted a more robust way to define what exactly is in a bundle file.
      
      The concept has existed for a while. Since it is part of the clone
      bundles feature and exposed to the user via the "-t" argument to
      `hg bundle`, it is something we need to support for the long haul.
      
      After the 4.1 release, I heard a few people comment that they didn't
      realize you could generate zstd bundles with `hg bundle`. I'm
      partially to blame for not documenting it in bundle's docstring.
      
      Additionally, I added a hacky, experimental feature for controlling
      the compression level of bundles in 76104a4899ad. As the commit
      message says, I went with a quick and dirty solution out of time
      constraints. Furthermore, I wanted to eventually store this
      configuration in the "bundlespec" so it could be made more flexible.
      
      Given:
      
      a) bundlespecs are here to stay
      b) we don't have great documentation over what they are, despite being
         a user-facing feature
      c) the list of available compression engines and their behavior isn't
         exposed
      d) we need an extensible place to modify behavior of compression
         engines
      
      I want to move forward with formalizing bundlespecs as a user-facing
      feature. This commit does that by introducing a "bundlespec" help
      page. Leaning on the just-added compression engine documentation
      and API, the topic also conveniently lists available compression
      engines and details about them. This makes features like zstd
      bundle compression more discoverable. e.g. you can now
      `hg help -k zstd` and it lists the "bundlespec" topic.
      69d8fcf2
    • Gregory Szorc's avatar
      util: document bundle compression · 55c0c91f
      Gregory Szorc authored
      An upcoming patch will add support for documenting bundle
      specifications in more detail. As part of this, we'd like to
      enumerate available bundle compression formats. In order to do
      this, we need to provide the help mechanism a dict of names
      and objects with docstrings.
      
      This patch adds docstrings to compengine.bundletype and adds
      a function for retrieving a dict of them. The code is not yet
      used.
      55c0c91f
    • Gregory Szorc's avatar
      tests: store ETag when using --headeronly · 39f6333e
      Gregory Szorc authored
      Previously, --headeronly would prevent --twice from working
      because the ETag wasn't stored when --headeronly was used.
      This feels like a bug. That feeling is reaffirmed by the fact
      that this change doesn't regress any tests.
      39f6333e
    • Gregory Szorc's avatar
      hgweb: extract path traversal checking into standalone function · 62f9679d
      Gregory Szorc authored
      A common exploit in web applications that access paths is to insert
      path separator strings like ".." to try to get the server to serve up
      files it shouldn't.
      
      We have code for detecting this in staticfile(). A subsequent commit
      will need to perform this test as well. Since this is security code,
      let's factor the check so we don't have to reinvent the wheel.
      62f9679d
Loading