1. 16 Nov, 2021 1 commit
    • Arseniy Alekseyev's avatar
      rhg: add support for narrow clones and sparse checkouts · 005ae1a343f8
      Arseniy Alekseyev authored
      This adds a minimal support that can be implemented without parsing the narrowspec.
      We can parse the narrowspec and add support for more operations later.
      
      The reason we need so few code changes is as follows:
      
      Most operations need no special treatment of sparse because
      some of them only read dirstate (`rhg files` without `-r`),
      which bakes in the filtering,
      some of them only read store (`rhg files -r`, `rhg cat`),
      and some of them read no data at all (`rhg root`, `rhg debugrequirements`).
      
      `status` is the command that might care about sparse, so we just disable
      rhg on it.
      
      For narrow clones, `rhg files` clearly needs the narrowspec to work
      correctly, so we fall back.
      `rhg cat` seems to work consistently with `hg cat` if the file exists.
      If the file is hidden by narrow spec, the error message is different and confusing, so
      that's something that we should improve in follow-up patches.
      
      Differential Revision: https://phab.mercurial-scm.org/D11764
      005ae1a343f8
  2. 03 Dec, 2021 4 commits
  3. 22 Nov, 2021 1 commit
    • Raphaël Gomès's avatar
      backout: backed out changeset 5d83a40cd3f8 · 0ad593b60760
      Raphaël Gomès authored
      This is the re-send of the backout in D11757 that I accidentally queued. I'll
      rewrite the original commit message:
      
      ...sigh
      
      We do not have Python 3 packaging for thg on Windows where the vast majority of
      of users use the thg installer for Mercurial. Until this is done (hopefully
      this cycle), we're keeping Python.
      
      (end of the old commit message)
      
      On top of this, we have a solid lead to have competent people take care of this
      packaging issue for us in time for the 6.1 release, which is really the main
      reason for us to wait. We're trying our best to make this work, so please bear
      with us.
      
      Differential Revision: https://phab.mercurial-scm.org/D11770
      0ad593b60760
  4. 24 Nov, 2021 6 commits
  5. 23 Nov, 2021 4 commits
  6. 19 Nov, 2021 2 commits
    • Pierre-Yves David's avatar
      dirstate: cleanup remaining of "now" during write · 1a8a70b4b0ad
      Pierre-Yves David authored
      Since the whole `need_delay` have been removed, we no longer need this.
      
      Differential Revision: https://phab.mercurial-scm.org/D11797
      1a8a70b4b0ad
    • Pierre-Yves David's avatar
      dirstate: remove need_delay logic · 434de12918fd
      Pierre-Yves David authored
      Now that all¹ stored mtime are non ambiguous, we no longer need to apply the `need_delay` step.
      The need delay logic was not great are mtime gathered during longer operation
      could be ambiguous but younger than the `dirstate.write` call time.
      
      So, we don't need that logic anymore and can drop it
      
      This make the code much simpler. The code related to the test extension faking
      the dirstate write is now obsolete and associated test will be migrated as
      follow up. They currently do not break.
      
      [1] except the ones from `hg update`, but `need_delay` no longer help for them
      either.
      
      Differential Revision: https://phab.mercurial-scm.org/D11796
      434de12918fd
  7. 25 Oct, 2021 1 commit
  8. 18 Nov, 2021 2 commits
    • Pierre-Yves David's avatar
      status: use filesystem time boundary to invalidate racy mtime · 322525db4c98
      Pierre-Yves David authored
      We record the filesystem time at the start of the status walk and use that as a
      boundary to detect files that might be modified during (or right after) the
      status run without the mtime allowing that edition to be detected.  We
      currently do this at a second precision. In a later patch, we will use
      nanosecond precision when available.
      
      To cope with "broken" time on the file system where file could be in the
      future, we also keep mtime for file over one day in the future. See inline
      comment for details.
      
      Large file tests get a bit more confused as we reduce the odds for race
      condition.
      
      As a "side effect", the win32text extension is happy again.
      
      Differential Revision: https://phab.mercurial-scm.org/D11794
      322525db4c98
    • Pierre-Yves David's avatar
      test: use a different timestamp for the updated file · 03644a929d6e
      Pierre-Yves David authored
      In the test we want to trigger a write after the underlying dirstate changed. To
      do so, we need a write. And as we are about to make dirstate update smarter we
      need to meddle with the script a bit to make sure there will be a write.
      
      Differential Revision: https://phab.mercurial-scm.org/D11793
      03644a929d6e
  9. 23 Nov, 2021 1 commit
  10. 17 Nov, 2021 3 commits
  11. 22 Nov, 2021 1 commit
    • Pierre-Yves David's avatar
      dirstate: do no use `set_clean` in revert · 9f1b9e128788
      Pierre-Yves David authored
      The current `set_clean` usage is racy (the file might be modified between its
      restoration and the `set_clean` call).
      
      So we simply leave the file as ambiguous and the next status will fix that.
      
      We still have to make sure the copy information is dropped, so we teach dirstate
      how to do that.
      
      The win32txt extension is confused after this because current logic is broken in
      more location. However this series will ultimately fix that so we "ignore" it
      for now. Fixing it now is complicated without some extra fix landing later.
      
      Differential Revision: https://phab.mercurial-scm.org/D11788
      9f1b9e128788
  12. 18 Nov, 2021 2 commits
  13. 17 Nov, 2021 5 commits
  14. 25 Oct, 2021 1 commit
  15. 23 Nov, 2021 1 commit
  16. 17 Nov, 2021 1 commit
  17. 04 Nov, 2021 1 commit
  18. 30 Nov, 2021 1 commit
  19. 18 Oct, 2021 1 commit
  20. 23 Nov, 2021 1 commit