Skip to content
Snippets Groups Projects
  1. Dec 14, 2015
  2. Dec 13, 2015
    • Gregory Szorc's avatar
      setup.py: use bytes literals · 83a8219f
      Gregory Szorc authored
      The b() helper was needed because Python < 2.6 didn't support bytes
      literals (b''). Now that we don't support Python < 2.6, we no longer
      need this helper.
      83a8219f
  3. Dec 15, 2015
  4. Dec 14, 2015
  5. Dec 12, 2015
    • Martin von Zweigbergk's avatar
      treemanifest: don't iterate entire matching submanifests on match() · c59647c6
      Martin von Zweigbergk authored
      Before 2773540c3650 (match: remove unnecessary optimization where
      visitdir() returns 'all', 2015-05-06), match.visitdir() used to return
      the special value 'all' to indicate that it was known that all
      subdirectories would also be included in the match. The purpose for
      that value was to avoid calling the matcher on all the paths. It
      turned out that calling the matcher was not a problem, so the special
      return value was removed and the code was simplified. However, if we
      use the same special value for not just avoiding calling the matcher
      on each file, but to avoid iterating over each file, it's a much
      bigger win. On commands like
      
        hg st --rev .^ --rev . dom/
      
      we run the matcher (dom/) on the two manifests, then diff the narrowed
      manifest. If the size of the match is much larger than the size of the
      diff, this is wasteful. In the above case, we would end up iterating
      over the 15k-or-so files in dom/ for each of the manifests, only to
      later discover that they are mostly the same. This means that runningt
      the command above is usually slower than getting the status for the
      entire repo, because that code avoids calling treemanifest.match() and
      only calls treemanifest.diff(), which loads only what's needed for the
      diff.
      
      Let's fix this by reintroducing the 'all' value in match.visitdir()
      and making treemanifest.match() return a lazy copy of the manifest
      from dom/ and down (in the above case). This speeds up the above
      command on the Firefox repo from 0.357s to 0.137s (best of 5). The
      wider the match, the bigger the speedup.
      c59647c6
  6. Dec 13, 2015
  7. Dec 12, 2015
  8. Dec 11, 2015
  9. Dec 09, 2015
  10. Nov 30, 2015
  11. Dec 10, 2015
  12. Dec 07, 2015
  13. Dec 03, 2015
    • Pierre-Yves David's avatar
      discovery: properly filter changeset in 'peer.known' (issue4982) · b64b6fdc
      Pierre-Yves David authored
      The 'peer.known' call (handled at the repository level) was applying its own
      manual filtering (looking at phases) instead of relying on the repoview
      mechanism. This led to the discovery finding more "common" node that
      'getbundle' was willing to recognised. From there, bad things happen, issue4982
      is a symptom of it. While situations like described in issue4982 can still
      happen because of race conditions, fixing 'peer.known' is important for
      consistency in all cases.
      
      We update the code to use 'repoview' filtering. This lead to small changes in
      the tests for exchanging obsolescence marker because the discovery yields
      different results.
      
      The test affected in 'test-obsolete-changeset-exchange.t' is a test for
      issue4982 getting back to its expected state.
      b64b6fdc
  14. Dec 09, 2015
    • Pierre-Yves David's avatar
      test: add an extra base changeset in test-obsolete.t · 95a54824
      Pierre-Yves David authored
      A fix to issue4982 (not fixed in this patch) will reinforce the filtering
      during discovery. This will makes two of our test repositories appear
      unrelated (because all common content is properly hidden). To avoid this, we
      introduce an extra base changeset that will not get obsoleted. This affects
      various test output so we put this addition in its own changeset.
      95a54824
  15. Dec 08, 2015
Loading