rust: simplify pattern file parsing
Previously we kept the pattern syntax as a &[u8] until the last
possible moment, which meant we had to handle potential errors when
parsing that &[u8]. But such errors could never actually occur, given
the structure of the code.
Now we parse it eagerly (in two places) and pass it around as a
PatternSyntax, so we can delete some error handling code.
parse_one_pattern is in particular useful for parsing patterns passed
on the command line, as we'll support later in this series.
#testcases dirstate-v1 dirstate-v2
#if dirstate-v2
$ cat >> $HGRCPATH << EOF
> [format]
> use-dirstate-v2=1
> [storage]
> dirstate-v2.slow-path=allow
> EOF
#endif
The proliferation of status implementations can be confusing:
- The pure python implementation:
(no-rhg pure !)
- The C implementation:
(no-rhg no-rust no-pure !)
- The two rust implementations:
(rhg !)
(no-rhg rust !)
$ hg init repo1
$ cd repo1
$ mkdir d1
$ touch d1/x
$ hg commit -Am.
adding d1/x
$ touch d1/y
$ chmod -r d1
$ hg status
d1: $EACCES$
! d1/x (rhg !)
! d1/x (no-rhg rust !)
$ hg status
d1: $EACCES$
! d1/x (rust !)
! d1/x (no-rust rhg !)
$ chmod +r d1
$ hg status
? d1/y
$ touch d1/z
$ hg status
? d1/y
? d1/z