typing: attempt to remove @overloads in the platform module for stdlib methods
This is mostly successful, as examining util.pyi, posix.pyi, and windows.pyi
after a pytype run shows that the type overloads for `oslink`, `readlink`,
`removedirs`, `rename`, `split`, and `unlink` have been removed. (Some of these
still have an @overload, but the differences are the variable names, not the
types.) However, @overloads remain for `abspath` and `normpath` for some
reason.
It's useful to redefine these methods for the type checking phase because in
addition to excluding str and PathLike variants, some of these functions have
optional args in stdlib that aren't implemented in the custom implementation on
Windows, and we want the type checking to flag that instead of assuming it's an
allowable overload everywhere.
One last quirk I noticed that I can't explain- `pycompat.TYPE_CHECKING` is
always False, so the conditionals need to check `typing.TYPE_CHECKING` directly.
I tried dropping the custom code for assigning `pycompat.TYPE_CHECKING` and
simply did `from typing import TYPE_CHECKING` directly in pycompat.py, and used
`pycompat.TYPE_CHECKING` for the conditional here... and pytype complained that
`pycompat` doesn't have the `TYPE_CHECKING` variable.
$ hg init repo
$ cd repo
$ echo This is file a1 > a
$ hg add a
$ hg commit -m "commit #0"
$ echo This is file b1 > b
$ hg add b
$ hg commit -m "commit #1"
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo This is file c1 > c
$ hg add c
$ hg commit -m "commit #2"
created new head
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm b
$ echo This is file c22 > c
Test hg behaves when committing with a missing file added by a merge
$ hg commit -m "commit #3"
abort: cannot commit merge with missing files
[255]
Test conflict*() revsets
# Bad usage
$ hg log -r 'conflictlocal(foo)'
hg: parse error: conflictlocal takes no arguments
[10]
$ hg log -r 'conflictother(foo)'
hg: parse error: conflictother takes no arguments
[10]
$ hg co -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
# No merge parents when not merging
$ hg log -r 'conflictlocal() + conflictother()'
# No merge parents when there is no conflict
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg log -r 'conflictlocal() + conflictother()'
$ hg co -C .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo conflict > b
$ hg ci -Aqm 'conflicting change to b'
$ hg merge 1
merging b
warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
# Shows merge parents when there is a conflict
$ hg log -r 'conflictlocal()' -T '{rev} {desc}\n'
3 conflicting change to b
$ hg log -r 'conflictother()' -T '{rev} {desc}\n'
1 commit #1