Subject: bug#33129: 26.1; `vc-hg-find-file-hook' can never detect files with conflicts

From: Daniel Pittman <[email-masked]>
Date: Tue, 23 Oct 2018 12:03:36 -0400

The `vc-hg-find-file-hook' tries to automatically invoke `smerge-mode'
when a file with conflicts is visited.  Unfortunately, due to incorrect
assumptions, it rarely -- possibly never -- actually manages to detect
the files.

There are two incorrect assumptions in the code that prevent this:

First, that `vc-state' will already be cached by the backend, which is
not true in at least the cases of visiting the file, reverting the file,
or using `vc-refresh-state'.

It is certainly possible that in some case or other the hook works, this
assumption means that it is almost never going to behave as intended.

Second, it assumes that a ".orig" backup file is created by Mercurial
next to the current file, which is only true by default: these files can
be redirected to an alternate path, or disabled entirely, by the user.

This is especially common when working on a network file-system, since
additional file operations can slow down the Mercurial merge process, or
when users have some other mechanism to handle the failure case.