1. 02 Dec, 2020 6 commits
  2. 01 Dec, 2020 1 commit
    • Georges Racinet's avatar
      Git: caching read of Git(Lab) default branch · 57f18c4ee1df
      Georges Racinet authored
      Part of heptapod#351
      
      Suprisingly, reading HEAD with dulwich takes 25ms, and we
      were doing that for all branch/topic combination. The penalty
      is harsh when running for repositories with hundreds
      of branch/topic combinations.
      
      Caching this gets the time to perform a push on PyPy in my dev
      setup from 45s to about 4s.
      
      We could have avoided the caching, but there are some other callers,
      why spending occasional 25ms when we can avoid it?
      
      This is the occasion to move the setting logic in a separate method,
      awaiting the later refactorings for separation of "native" case
      from hg_git case.
      57f18c4ee1df
  3. 30 Nov, 2020 1 commit
  4. 29 Nov, 2020 10 commits
  5. 28 Nov, 2020 1 commit
    • Georges Racinet's avatar
      take over single head enforcement · 834eb9379d73
      Georges Racinet authored
      See heptapod#351
      
      This prevents the expensive `_filter_obsolete_heads`
      to be called twice on each transaction: the first in
      evolve's `enforcesinglehead`, the second in our analysis
      code for GitLab branches.
      
      In 1.1 versions, we don't want to change the
      meaning of configuration flags, hence we still react
      to `experimental.single-head-per-branch`.
      
      In the future 1.2 versions, however, we will ignore that
      flag and base everything on `heptapod.allow-multiple-heads`,
      hence sparing us the monkey patching.
      834eb9379d73
  6. 27 Nov, 2020 5 commits
    • Georges Racinet's avatar
      GitRefChange: switched to attr.s and kwargs init · cc52bc54d463
      Georges Racinet authored
      This almost data class is a typical use-case for `attr.s` (just
      had a debugging session where a `repr()` implementation would
      have been handy).
      
      I would never be confident about positional args in constructor
      with that declarative style, so changed the
      constructor arguments usage in main code, even if more verbose.
      cc52bc54d463
    • Georges Racinet's avatar
      hg-native: back conversion error case · 6982b5005e9a
      Georges Racinet authored
      This was detected by the `test_push_corrupted` functional
      test. It is a bit irritating to still have to take care
      of that with native projects, but the truth is that all
      the analysis logic really needs to be based on Git SHAs
      because Git actually plays the role of the GitLab branch
      map that we don't have.
      6982b5005e9a
    • Georges Racinet's avatar
      Excluding dulwich backport from coverage · 66ae6a19fb10
      Georges Racinet authored
      the backport is released in dulwich 0.20.14 and our
      unit test proves that it has indeed been included, as
      expected.
      
      Not removing the backport yet because py-heptapod is
      still pinned to an older dulwich, but will do as soon
      as I have time to check the changes that bumping to the
      new release will also bring (expecting bugfixes only).
      66ae6a19fb10
    • Georges Racinet's avatar
      Added tag 1.1.1 for changeset 1086f24bfc6d · 442fde8a7180
      Georges Racinet authored
      442fde8a7180
    • Georges Racinet's avatar
      Setting version for release · 1086f24bfc6d
      Georges Racinet authored
      Forgot to commit/tag yesterday
      1086f24bfc6d
  7. 24 Nov, 2020 1 commit
    • Georges Racinet's avatar
      dulwich: backporting fix for bytes problem in alternates · a3d8f1eb9232
      Georges Racinet authored
      Sub-classing Dulwich whole testcase brings in all the tests
      from that class, but we don't care: they pass in less than a
      second.
      
      Given the release rate of dulwich, a new version should be
      available soon, but we haven't tested anything from 0.20.5.
      It doesn't look like the best time to update. In any case
      the backport gives us more options.
      
      Closes heptapod#370
      a3d8f1eb9232
  8. 23 Nov, 2020 1 commit
  9. 22 Nov, 2020 2 commits
    • Georges Racinet's avatar
      testhelpers: shortened LocalRepoWrapper as RepoWrapper · 3026eeb6ab92
      Georges Racinet authored
      This is of the same spirit as in mercurial-testhelpers.
      
      We keep a compatibility alias for downstream projects,
      such as HGitaly and hg-loggingmod, but we should be able to
      get rid of it soon.
      3026eeb6ab92
    • Georges Racinet's avatar
      testhelpers: using new external package · 5708f06346e1
      Georges Racinet authored
      These testhelpers have been externalized as the
      `mercurial_testhelpers` package.
      
      The latter being meant to be identical to a future
      `mercurial.testhelpers` in Mercurial core, they don't
      have facilities for topics nor evolve specific commands.
      
      But the commit options extensibility can be used to
      specify topics in `commit_file`. As for the `prune` helper
      method, it can be implemented by direct subclassing.
      
      This is what `hg-evolve` could later do, if that project
      were to adopt those test helpers. Downstream extensions
      of evolve and topic could then just use a base class
      provided by evolve.
      
      Also, the `RepoWrapper` from `mercurial_testhelpers` has
      two different method names, that we remap directly to
      make the whole test suite pass.
      5708f06346e1
  10. 21 Nov, 2020 1 commit
  11. 11 Nov, 2020 5 commits
  12. 21 Nov, 2020 5 commits
  13. 19 Nov, 2020 1 commit