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

From: Eli Zaretskii <[email-masked]>
Date: Tue, 04 Feb 2020 20:55:03 +0200

> Cc: [email-masked], [email-masked]
> From: Wolfgang Scherer <[email-masked]>
> Date: Mon, 3 Feb 2020 02:16:43 +0100
> 
> Just to be clear that my original intention was only a simple bugfix
> ...

I'm okay with limiting these discussions only to a particular bug.  I
believe it was you who introduced the design issue into the
discussion.  We can drop that part if you don't think it's important
enough.

Having said that...

> Per-directory vs. per-tree
> ==========================

...I don't feel I understand better your view of what you describe as
fundamental design problems in this area.  I'm saying that after
reading your description at least twice.  You make many assertions and
tell what these features _should_ do, but there's little explanation
of _why_ these assertions are true or why the commands should do this
or that.  Even the first step of your argument: that there's a
fundamental difference between per-directory and per-tree ignore specs
is left with almost no description of these fundamental differences.
I don't think I have a clear idea of why you think so.

> Use cases
> 
> 1. Ignore a file in `vc-dir-mode`.
> 
>    Write basename of absolute filepath into ignore file for directory.
> 
> 2. Ignore marked files in `vc-dir-mode`.
> 
>    Write basename of relative filepath into ignore file for directory.
> 
> 3. Ignore absolute/relative filepath with `vc-ignore`.
> 
>    Write basename of filepath into ignore file for directory.
> 
> 4. Ignore pattern with `vc-ignore`.
> 
>    Write pattern unaltered into ignore file of directory.

This enumerates use cases and states their requirements, but doesn't
explain those requirements.  I don't think I understand why sometimes
the file specs need to be relative and sometimes absolute, because you
just say so without any explanations.

> The reference backend implementation is `vc-default-ignore`. Although
> the documentation already specifies what the function should do in a
> per-tree context, the original implementation strangely follows the
> description of `vc-ignore` which is still per-directory.

See, I don't even understand why you say vc-ignore is per-directory.
That it accepts a directory as its argument doesn't yet mean it cannot
support all of its subdirectories, recursively, which will make it
per-tree.  I'm probably missing something, but what?

Once again, feel free to tell the discussion about the design is not
useful and should be abandoned.  I'm okay with discussing just the
specific bug you have.  But if we are to continue talking about design
aspects, may I suggest that you explain your opinions more than you
did until now?

Thanks.