Page MenuHomePhabricator

Improve low-level branch resolution in Mercurial
ClosedPublic

Authored by epriestley on Apr 25 2015, 3:52 PM.
Tags
None
Referenced Files
F18811847: D12548.id30132.diff
Mon, Oct 20, 5:18 AM
F18782923: D12548.id30165.diff
Mon, Oct 13, 2:59 AM
F18778838: D12548.id30132.diff
Sat, Oct 11, 11:02 AM
F18628138: D12548.diff
Sep 16 2025, 5:40 AM
F18613041: D12548.id.diff
Sep 14 2025, 10:38 AM
F18606846: D12548.diff
Sep 13 2025, 10:39 PM
F18505481: D12548.id.diff
Sep 5 2025, 12:42 AM
F18497416: D12548.diff
Sep 4 2025, 6:01 PM
Subscribers

Details

Summary

Ref T7100. Ref T7108. Ref T6160. Several issues:

  • High load for mercurial repositories with huge numbers of branches (T7108).
    • In Mercurial, we resolve refs individually (one hg call per ref).
    • Each repository update also updates all refs, which requires resolving all of them.
    • For repositories with a huge number of branches,
  • We don't distinguish between closed branches (a Mercurial-only concept) and open branches (T6160).
    • In Git, when a branch is merged, it ceases to exist.
    • In Mercurial, when a branch is merged, it still exists, it's just "closed". Normally, no one cares about these branches.
    • In the low-level query, correctly identify which refs we resolve as branches.
    • In the low-level query, correctly mark closed branches as closed.
  • This marginally improves ref handling in general (see T7100).
Test Plan

Screen_Shot_2015-04-25_at_8.51.45_AM.png (144×791 px, 37 KB)

Screen_Shot_2015-04-25_at_8.51.22_AM.png (759×1 px, 137 KB)

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable