Subject: bug#39380: 26.3: Opening files in vc-dir-mode with differing root and working dir fails

From: Wolfgang Scherer <[email-masked]>
Date: Tue, 4 Feb 2020 17:04:10 +0100

Am 03.02.20 um 14:11 schrieb Dmitry Gutov:
> On 03.02.2020 1:35, Wolfgang Scherer wrote:
>>
>> Am 01.02.20 um 08:20 schrieb Dmitry Gutov:
>>> On 01.02.2020 3:13, Wolfgang Scherer wrote:
>>>> 3. Press `C-x v d RET`, which will show a "Working dir" different from "Root":
>>>>
>>>>      .. code-block:: text
>>>>
>>>>         Working dir: check-hgs/sub1/
>>>>         Root       : check-hgs
>>>>
>>>>                              ./
>>>>                              sub1/
>>>>         unregistered         sub1/a
>>>>                              sub2/
>>>>         unregistered         sub2/x
>>>
>>> Maybe this should be fixed in vc-hg-status-files by not showing "outside" files and using proper relative names.
>>>
>>> Compare how VC-Dir works with Git: when you open it in a subdirectory, it only shows changed files in that directory, and with proper relative names.
>>
>> The behavior should be consistent.
>
> Right.
>
>> In Emacs 24/25 vc-dir-mode for Mercurial behaved exactly like Git. Since the behavior for Mercurial changed some time after Emacs 24, I just assumed (probably because of my bias towards `dvc`) that the new behavior was intended.
>
> In 25 or 26 Daniel added a Lisp-based faster implementation for some commands (de76a167dc09dc695a5acebabb7ab354a6bf556e) since apparently Hg itself was too slow.
>
> So this bug must have arrived with that implementation.

Reverting de76a167dc09dc695a5acebabb7ab354a6bf556e does not change anything for me.

I had to revert 06083cf41c473404d246de9b91a0116f38c5485f to restore the correct behavior:

Author: Dmitry Gutov <[email-masked]>
Date:   Sat Jan 30 06:55:32 2016 +0300

    Don't pass DIR to 'hg status'
   
    * lisp/vc/vc-hg.el (vc-hg-dir-status-files):
    Don't pass DIR to 'hg status' (bug#22481).