Mercurial > hg
view tests/test-ssh-batch.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 | 9c4204b7f3e4 |
children |
line wrap: on
line source
$ hg init a $ cd a $ touch a; hg commit -qAm_ $ hg bookmark $(for i in $($TESTDIR/seq.py 0 20); do echo b$i; done) $ hg clone . ../b -q $ cd ../b Checking that when lookup multiple bookmarks in one go, if one of them fails (thus causing the sshpeer to be stopped), the errors from the further lookups don't result in tracebacks. $ hg pull -r b0 -r nosuchbookmark $(for i in $($TESTDIR/seq.py 1 20); do echo -r b$i; done) ssh://user@dummy/$(pwd)/../a pulling from ssh://user@dummy/$TESTTMP/b/../a abort: unknown revision 'nosuchbookmark' [255]