Skip to content
  • Simon Sapin's avatar
    rhg: Add support for `rhg status --copies` · 473af5cbc209
    Simon Sapin authored
    Copy sources are collected during `status()` rather than after the fact like
    in Python, because `status()` takes a `&mut` exclusive reference to the dirstate map
    (in order to potentially mutate it for directory mtimes) and returns `Cow<'_, HgPath>`
    that borrow the dirstate map.
    
    Even though with `Cow` only some shared borrows remain, the still extend the same
    lifetime of the initial `&mut` so the dirstate map cannot be borrowed again
    to access copy sources after the fact:
    
    https://doc.rust-lang.org/nomicon/lifetime-mismatch.html#limits-of-lifetimes
    
    Additionally, collecting copy sources during the dirstate tree traversal that
    `status()` already does avoids the cost of another traversal or other lookups
    (though I haven’t benchmarked that cost).
    
    Differential Revision: https://phab.mercurial-scm.org/D11899
    473af5cbc209