Subject: bug#37189: 25.4.1: vc-hg-ignore implementation is missing

From: Eli Zaretskii <[email-masked]>
Date: Sat, 08 Feb 2020 22:05:18 +0200

> Cc: [email-masked]
> From: Wolfgang Scherer <[email-masked]>
> Date: Sat, 8 Feb 2020 20:45:34 +0100
> 
> The status quo before Emacs 27 is:
> 
> 1. The argument FILE of `vc-ignore` is documented to accept a wildcard specification. This is the use case "pattern".
> 
> 2. `vc-ignore` is called from `vc-dir-ignore` with either an absolute or relative filename. This is the use case "file path".
> 
> 3. Some backends expect a file path, some backends expect a pattern. This cannot be fixed without adding a parameter to `vc-ignore`, `vc-<backend>-ignore`.
> 
> +-----------------------+-------------+-----------+
> | function              | file path   | pattern   |
> +=======================+=============+===========+
> | :func:`vc-ignore`     | strong hint | yes       |
> +-----------------------+-------------+-----------+
> | :func:`vc-dir-ignore` | mandatory   | no        |
> +-----------------------+-------------+-----------+
> | :func:`vc-cvs-ignore` | no          | mandatory |
> +-----------------------+-------------+-----------+
> | :func:`vc-svn-ignore` | mandatory   | no        |
> +-----------------------+-------------+-----------+
> | :func:`vc-src-ignore` | --          | --        |
> +-----------------------+-------------+-----------+
> | :func:`vc-bzr-ignore` | no          | mandatory |
> +-----------------------+-------------+-----------+
> | :func:`vc-git-ignore` | no          | mandatory |
> +-----------------------+-------------+-----------+
> | :func:`vc-hg-ignore`  | no          | mandatory |
> +-----------------------+-------------+-----------+
> | :func:`vc-mtn-ignore` | --          | --        |
> +-----------------------+-------------+-----------+

This shows that (ignoring mtn for now) all of the functions support
the "pattern" case, except vc-svn-ignore.  However, the doc string of
vc-svn-ignore says

    "Ignore FILE under Subversion.
  FILE is a wildcard specification, either relative to
  DIRECTORY or absolute."

So it looks like it, too, supports the "pattern" use case, or what am
I missing?

Now, vc-dir-ignore indeed ignores only one file, but since a file name
is a special case of a wildcard, I wonder why you say there's a need
in an additional argument.  Can you elaborate?

> I have already implemented the core handler `vc-default-ignore` replacing the defunct handlers for CVS, Git, Hg, Bzr by parameter sets. The additional parameter set for SRC is also available. I am planning on implementing Mtn. I do not plan on implementing or fixing SVN (or maybe I will).

>From my POV, it is much more important to support SVN than to support
Monotone.  But that's me.

> I would really like to close this thread and open one about the correct implementation of `vc-ignore`.

Feel free to start a new thread, but I really don't see how that could
be of any help.  In particular, this thread discusses a specific bug
(or several related ones), and the new thread will discuss those same
bugs, right?  Then it makes little sense to start a new thread about
the same bug.

Thanks.