repoview: only pin obsolete wdir parents while there are unresolved conflicts
I noticed after doing an update from an obsolete revision with a dirty wdir that
the obsolete commit stayed visible for no obvious reason. It was decided in
85b03b1e4715 not to clear mergestate once all of the conflicts were resolved, in
order to allow re-resolving. Since the point of pinning the obsolete parents
was to allow resolving in the first place (
aaeccdb6e654), it makes sense to also
gate it on whether or not there are any remaining files to resolve. This might
result in pinning again if files are marked unresolved again, but that seems
reasonable, given that it still solves the original issue.
Note that this isn't purely cosmetic- pushing with a pinned obsolete revision is
likely to cause complaints about pushing multiple heads or other unexpected
errors. So the faster it comes out of that state, the better.
Differential Revision: https://phab.mercurial-scm.org/D9248
backout: don't assume that tip as what we just committed
Differential Revision: https://phab.mercurial-scm.org/D9256
url: do not continue HTTP authentication with user=None (
issue6425)
I initially thought this is a py3-compat bug of passwordmgr._writedebug(),
but actually returning (None, str) pair is wrong at all. HTTP authentication
would continue with user="None" in that case.
Since registering a password of user=None should also be wrong, this patch
simply adds early return.
ui: fix echo back of ui.prompt() to not concatenate None as bytes
Spotted while writing tests for the
issue6425. The default value may be
None.
commit: don't change phases for preexisting commits
I noticed when pulling with hg-git in a repository that already had
the changes, but pulled from another Mercurial repository. This meant
that hg-git would re-create exact matches of the changesets, and
if they were public, they'd get reverted to drafts.
Differential Revision: https://phab.mercurial-scm.org/D9253
demandimport: don't raise AttributeError if `exec_module` is missing
I assume this was meant to do the check gracefully. After shoveling a bunch of
modules into the ignore list in order to get keyring to work out of the box on
CentOS 8, I hit the following error accessing the password, which the change
fixes. Now the SecretStorage backend works out of the box, without any edits to
the ignore list.
** Unknown exception encountered with possibly-broken third-party extension mercurial_keyring
** which supports versions unknown of Mercurial.
** Please disable mercurial_keyring and try your action again.
** If that fixes the bug please report it to https://foss.heptapod.net/mercurial/mercurial_keyring/issues
** Python 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1
20191121 (Red Hat 8.3.1-5)]
** Mercurial Distributed SCM (version 5.5.2)
** Extensions loaded: evolve, topic, rebase, absorb, mercurial_keyring
Traceback (most recent call last):
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/mercurial_keyring.py", line 230, in _read_password_from_keyring
password = keyring.get_password(KEYRING_SERVICE, pwdkey)
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/core.py", line 53, in get_password
return _keyring_backend.get_password(service_name, username)
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/backends/chainer.py", line 51, in get_password
password = keyring.get_password(service, username)
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/backends/SecretService.py", line 79, in get_password
return item.get_secret().decode('utf-8')
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/secretstorage/item.py", line 105, in get_secret
decryptor = Cipher(aes, modes.CBC(aes_iv), default_backend()).decryptor()
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/__init__.py", line 15, in default_backend
from cryptography.hazmat.backends.openssl.backend import backend
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 53, in exec_module
self.loader.exec_module(module)
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/openssl/__init__.py", line 7, in <module>
from cryptography.hazmat.backends.openssl.backend import backend
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 53, in exec_module
self.loader.exec_module(module)
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 14, in <module>
from six.moves import range
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 894, in _find_spec
File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 117, in find_spec
and getattr(spec.loader, "exec_module")
AttributeError: '_SixMetaPathImporter' object has no attribute 'exec_module'
Differential Revision: https://phab.mercurial-scm.org/D9243