safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
Mercurial evolves over time, some features, options, commands may be replaced by
better and more secure alternatives. This topic will help you migrating your
existing usage and/or configuration to newer features.
Commands
========
The following commands are still available but their use are not recommended:
``locate``
This command has been replaced by `hg files`.
``parents``
This command can be replaced by `hg summary` or `hg log` with appropriate
revsets. See `hg help revsets` for more information.
``tip``
The recommended alternative is `hg heads`.
Options
=======
``web.allowpull``
Renamed to `allow-pull`.
``web.allow_push``
Renamed to `allow-push`.