Skip to content
Snippets Groups Projects
  1. Sep 25, 2019
  2. May 20, 2019
  3. Sep 18, 2019
  4. Sep 17, 2019
    • Kyle Lippincott's avatar
      transaction: detect an attempt to truncate-to-extend on playback, raise error · 8502f76dbfd7
      Kyle Lippincott authored
      On some networked filesystems, writes can have delayed finalization/confirmation
      and write races can occur such that a remote modification will "win" and
      modifications will be lost. There is no functionality for providing this
      feedback to userspace programs (in fact, there's not even functionality for
      providing this information to the Linux kernel...), so these programs may see
      the files suddenly change.
      
      We've noticed that there have been cases where Mercurial has detected something
      has gone wrong and attempts to abort (rolling back the transaction), which is
      good. However, when rolling back the transaction, for the append-only files,
      we attempt to "truncate" the file back to the size it was in before the hg
      transaction started, but end up *extending* it. This may be harmless, but if
      this happens to the 00changelog.i file, we get a bunch of nulls on the end of
      the file and this causes hg to become *really* confused. :)
      
      If we detect that some modification of the file outside of this Mercurial
      process has caused the file to be smaller than the size we are attempting to
      truncate to, let's just exit and stop trying to clean up the repository -
      continuing will likely just cause more damage.
      
      Differential Revision: https://phab.mercurial-scm.org/D6867
      8502f76dbfd7
    • Kyle Lippincott's avatar
      d6227c6c0814
    • Kyle Lippincott's avatar
      osutil: allow disabling setprocname via a define passed to the compiler · 460f8bf58020
      Kyle Lippincott authored
      In some situations, we run a custom python launcher that appears to not set up
      Py_GetArgcArgv correctly. We then proceed to promptly crash when we attempt to
      dereference NULL. Being able to completely disable setprocname is beneficial in
      these situations, since we won't even attempt to use it, even if the case that
      causes the crash is fixed.
      
      Right now, if I compile osutil.so with -DSETPROCNAME_USE_NONE, the compilation
      fails on python3 due to SETPROCNAME_USE_NONE redefinition. I could possibly
      work around that, but it's likely helpful to have a way of disabling this
      completely without it being brittle (i.e. if python3 ever gains the ability to
      perform this operation).
      
      Differential Revision: https://phab.mercurial-scm.org/D6865
      460f8bf58020
  5. Sep 22, 2019
    • Anton Shestakov's avatar
      stack: use repo.revs() instead of revsetlang.formatspec() + scmutil.revrange() · 763028fc6a69
      Anton Shestakov authored
      Using scmutil.revrange() it's possible to use multiple revsets at the same
      time, but we're not using that functionality in stack.
      
      I thought maybe that function could be used to make stack definition
      customizable (by combining various parts into one set), but scmutil.revrange()
      gives the union of all provided revsets, which is not very useful in stack's
      case (we want "and" between parts, not "or").
      763028fc6a69
  6. Sep 23, 2019
  7. Sep 20, 2019
  8. Sep 01, 2019
  9. Sep 18, 2019
  10. Sep 17, 2019
  11. Sep 13, 2019
    • Martin von Zweigbergk's avatar
      narrow: add option for automatically removing unused includes · 40f78072fda9
      Martin von Zweigbergk authored
      It's been a somewhat common request among our users to have Mercurial
      automatically pick includes to remove. This patch adds an option for
      that: `hg tracked --auto-remove-includes`. I'm not sure if this is the
      right name and semantics for it. Perhaps the feature should also add
      excludes of large subdirectories even if other files in the include
      are needed? Narrow clones are experimental, so we can change the name
      and/or semantics later if necessary.
      
      Differential Revision: https://phab.mercurial-scm.org/D6848
      40f78072fda9
    • Martin von Zweigbergk's avatar
      narrow: don't hexify paths and double-hexify known nodes on wire (BC) · c2676b5a9f59
      Martin von Zweigbergk authored
      It isn't obvious, but wireprototypes.encodelist() is meant only for
      binary nodeids. So when we used it for encoding hex nodeids and paths,
      the encoded result was surprising and hard to read.
      
      This patch changes the encoding to make the list of paths a
      comma-separated list and the list of common nodes to be a
      encodelist()-encoded list of binary nodeids (so the result is just
      singly-hexified nodeids).
      
      This is clearly a breaking change, but the feature is experimental and
      we're not aware of anyone running a server using this command yet.
      
      Differential Revision: https://phab.mercurial-scm.org/D6851
      c2676b5a9f59
  12. Sep 11, 2019
    • Boris Feld's avatar
      remotefilelog: replace repack lock to solve race condition · 5fadf6103790
      Boris Feld authored
      2c74337e6483 reduced the probability of race-conditions when starting
      background repack and prefetch and we saw the difference in our CI instance
      with all failures disappearing except one where one call to waitonrepack seems
      to returns too early.
      
      I'm not sure what exactly goes wrong but I realized that while the prefetch
      operation uses a standard Mercurial lock, the repack operation is using a
      custom lock based on `fcntl.flock` on available platforms. As `extutil.flock`
      fallback on traditional Mercurial locks on other platforms and the tests are
      stable on my laptop, our CI environment and GCC112, I'm sending this patch to
      standardize the behavior across environments.
      
      Differential Revision: https://phab.mercurial-scm.org/D6844
      5fadf6103790
  13. Sep 17, 2019
  14. Sep 15, 2019
  15. Sep 14, 2019
    • Matt Harbison's avatar
      tests: stabilize test-fix.t on Windows · a2dffe68b4ea
      Matt Harbison authored
      `pwd` prints /tmp/... style paths, not C:\... needed for $TESTTMP to be
      substituted.
      
      In the final test, for whatever reason, Windows was missing EOL in the files and
      printing:
      
          [wdir] changedlines: printf: warning: ignoring excess arguments, starting
             with 'printf'
      
      even though it was trying to run:
      
          printf "Line ranges:\n"; printf "2 through 2\n";
      
      I tried wrapping both :command and :linerange in `sh -c "..."`, and while that
      fixed the missing EOL, it missed the "2 through 2" output.
      
      Differential Revision: https://phab.mercurial-scm.org/D6852
      a2dffe68b4ea
  16. Sep 16, 2019
    • Gregory Szorc's avatar
      zstandard: vendor python-zstandard 0.12 · 69de49c4e39c
      Gregory Szorc authored
      The upstream source distribution from PyPI was extracted. Unwanted
      files were removed.
      
      The clang-format ignore list was updated to reflect the new source
      of files.
      
      test-repo-compengines.t was updated to reflect a change in behavior
      of the zstd library.
      
      The project contains a vendored copy of zstandard 1.4.3. The old
      version was 1.3.8. This should result in some minor performance wins.
      
      # no-check-commit because 3rd party code has different style guidelines
      
      Differential Revision: https://phab.mercurial-scm.org/D6858
      69de49c4e39c
  17. Sep 15, 2019
  18. Sep 14, 2019
  19. Sep 11, 2019
  20. Sep 13, 2019
Loading