Mercurial > hg
view tests/test-legacy-exit-code.t @ 48454:473af5cbc209
rhg: Add support for `rhg status --copies`
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
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Fri, 10 Dec 2021 16:18:58 +0100 |
parents | 95c4cca641f6 |
children | 55c6ebd11cb9 |
line wrap: on
line source
Tests that the exit code is as expected when ui.detailed-exit-code is *not* enabled. $ cat >> $HGRCPATH << EOF > [ui] > detailed-exit-code=no > EOF $ hg init $ echo a > a Expect exit code 0 on success $ hg ci -Aqm initial $ hg co nonexistent abort: unknown revision 'nonexistent' [255] $ hg co 'none()' abort: empty revision set [255] $ hg co 'invalid(' hg: parse error at 8: not a prefix: end (invalid( ^ here) [255] $ hg co 'invalid(' hg: parse error at 8: not a prefix: end (invalid( ^ here) [255] $ hg continue abort: no operation in progress [255] $ hg st --config a=b abort: malformed --config option: 'a=b' (use --config section.name=value) [255] $ echo b > a $ hg ci -m second $ echo c > a $ hg ci -m third $ hg --config extensions.rebase= rebase -r . -d 0 -q warning: conflicts while merging a! (edit, then use 'hg resolve --mark') unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') [1]