diff --git a/news/hg_permission_error.rst b/news/hg_permission_error.rst new file mode 100644 index 000000000..4a1b6dc25 --- /dev/null +++ b/news/hg_permission_error.rst @@ -0,0 +1,24 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* Fixed issue which occurs when user doesn't have access to parent directory and + xonsh scan all parents directory to find if we are in a Hg repository. + +**Security:** + +* diff --git a/xonsh/prompt/vc.py b/xonsh/prompt/vc.py index 263ff0678..a3bb49505 100644 --- a/xonsh/prompt/vc.py +++ b/xonsh/prompt/vc.py @@ -60,14 +60,17 @@ def _get_hg_root(q): while True: if not os.path.isdir(_curpwd): return False - if any([b.name == ".hg" for b in xt.scandir(_curpwd)]): - q.put(_curpwd) - break - else: - _oldpwd = _curpwd - _curpwd = os.path.split(_curpwd)[0] - if _oldpwd == _curpwd: - return False + try: + if any([b.name == ".hg" for b in xt.scandir(_curpwd)]): + q.put(_curpwd) + break + else: + _oldpwd = _curpwd + _curpwd = os.path.split(_curpwd)[0] + if _oldpwd == _curpwd: + return False + except OSError: + return False def get_hg_branch(root=None):