@charliermarsh Unified testing (as we coined it at the time) is a big big part of Mercurial's testing strategy. It does have it's drawbacks, but if I had to choose between this and unit tests, I'll choose e2e snapshot any day.
@Lucretiel Fwiw being snapshot-based does not mean that you can't do copy/rename tracing. Mercurial does explicit (and heuristic if you want) tracking and integrates it relevant graph algorithms.
@psluaces@chacon@Microsoft You need 1 stat per tracked file + 1 opendir/getdents/closedir per directory only if you're listing unknown/ignored... but you can skip the readdir if you keep track of the unknown files and the directory mtime carefully (depending on platform, racy status etc)
@psluaces@chacon@Microsoft Sorry I didn't see this. It's a bespoke datastructure + parallel algorithm, making as few allocations and syscalls as possible (sometimes skipping some that look required but aren't given some situations).
@chacon@Microsoft Still looks slow. You're probably not using dirstate-v2. Sorry, lots of hoops to jump through 😅
I think "hg help rust" has a section on dirstate-v2 and how to upgrade to it
@chacon@Microsoft Also (replying out of order), almost any command that needs to boot up Python will lose to Git. We're doing a lot of things that are really fast, but most of it is not available by default, and we've covered only a few commands.
@chacon@Microsoft Take a look at the README in the rust folder or in rhg and it'll probably be a bit helpful. If not, I can get back to a computer tomorrow and figure this out. :)
@chacon@Microsoft However, you're probably not testing 'rhg', which is the pure rust version. Long story short : we've basically been less than 1 full-time at any point in time to develop it, hence the manual setup and Linux-only business.