GNU bug report logs - #37189
25.4.1: vc-hg-ignore implementation is missing

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>; dated Mon, 26 Aug 2019 00:55:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 3 Jul 2020 21:50:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 03 17:50:05 2020
Received: from localhost ([127.0.0.1]:57796 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jrTZN-00013Z-6f
	for submit <at> debbugs.gnu.org; Fri, 03 Jul 2020 17:50:05 -0400
Received: from mail-wr1-f41.google.com ([209.85.221.41]:42207)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1jrTZL-00012R-2E
 for 37189 <at> debbugs.gnu.org; Fri, 03 Jul 2020 17:50:03 -0400
Received: by mail-wr1-f41.google.com with SMTP id o11so34151186wrv.9
 for <37189 <at> debbugs.gnu.org>; Fri, 03 Jul 2020 14:50:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=PrdnJlwQgUy5yyvo9V7kWwJ1nlynd+YXef0jy2HBkGc=;
 b=SJ2yJ3TfZWhmmYevZLF4g6b0opcOZa/6D8Wt4MuPFmVhPZ6bF2Xm3qfa1b9hRfcYOG
 VYq+77v+apEvihfAiXkypekCXKqubK3oGbd2Ssst+MMq9ycKnNUFBoXgxT3kzJ4xwC/R
 L6j/GztbOTRXAuGR9KxGiCbCIs3uTfLkrYhW9xIeKyihgmDwXvAHKtoWPcQI0o7ZGxEp
 hzhcI5qKY/UCx9sriHFuSQQ7Q4hRW86pXeCLf6u3VBL4Cp8gLSBPZscUtwr4RWZcSWeL
 UqtHFg6Aqg7pATmRFQVp8Xk99IsqNtK8qhJJQMV4M2Gb5SaTjGWFfvHbD9Nl5LYLbuff
 /t4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=PrdnJlwQgUy5yyvo9V7kWwJ1nlynd+YXef0jy2HBkGc=;
 b=IPDAMTllaX8OZbb/RKUTVLOvUhr4DOHS1XgsrdaJQbdaxjQzO2WJX6TGIVMSWVc15W
 ffntcJEy/vC+IuwcmS3JEaB0YZ6FAHPMJ+/PVCIm0G+AS6seiHg0MKUazpQTZSiYaaME
 ylIE5XtNBqfVxGFmpktUfzHYb3ArM+GgUvyJUPmNnYWbCeFc1U4+f5zjT2xOUvyzm2JV
 ajZem+MxXup9hzcXd0qS7PIfXl0dx2YrZonZ8nzY+GIBTtmhwVTbEy70yzIq3oVC3EVq
 k+i/ZontEoJmH8zTibZcitMnEncCvUb+XKp9N+mOEiSfsHeUPUHvQZPOLLEbBv2GoCZT
 oFYw==
X-Gm-Message-State: AOAM532gydYEzTU+MhXDPN3yK8MVkkr6JVB6/hZag0FzF+YimFpN31M2
 1ApVkfIrUcTyk7/50inmCWbazN5e
X-Google-Smtp-Source: ABdhPJwY5QnQ52pTcXj7G6TWvA6kKOPN3QGnqtqXF4/VCg32rtszie6xgIIeKJ/FplP105+xMGnj2Q==
X-Received: by 2002:adf:c551:: with SMTP id s17mr37096163wrf.330.1593812996900; 
 Fri, 03 Jul 2020 14:49:56 -0700 (PDT)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id
 l190sm14578555wml.12.2020.07.03.14.49.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 03 Jul 2020 14:49:56 -0700 (PDT)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
 <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
 <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
 <fe7a1f3e-1140-bf6d-f91a-39703ee6b52a@HIDDEN>
 <4aea6148-9673-bb80-4904-2b75b9e1bef3@HIDDEN>
 <f31d5204-7090-f479-5ae6-745f46b82474@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <87a932be-7ab1-5edf-068b-0dd174fdab8d@HIDDEN>
Date: Sat, 4 Jul 2020 00:49:53 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.8.0
MIME-Version: 1.0
In-Reply-To: <f31d5204-7090-f479-5ae6-745f46b82474@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.2 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.8 (/)

Hi Wolfgang,

On 03.07.2020 23:53, Wolfgang Scherer wrote:
> I did not see your mail until just yet. My window for doing other work has unfortunately closed until September/October 2020.

Let's pick it up then, there's no big hurry.

Thanks,
Dmitry.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 3 Jul 2020 20:53:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 03 16:53:14 2020
Received: from localhost ([127.0.0.1]:57718 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jrSgM-00088x-L7
	for submit <at> debbugs.gnu.org; Fri, 03 Jul 2020 16:53:14 -0400
Received: from mout.gmx.net ([212.227.15.19]:49317)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1jrSgJ-00088g-Eq
 for 37189 <at> debbugs.gnu.org; Fri, 03 Jul 2020 16:53:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1593809585;
 bh=0NgzsyPrhR7ENJIsikLHTA9a35aWhaPj3mXmsVj+Q2s=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=KvyaYQC8tMwcqwLyn2NGlQl+l4fJBUjKTQFNcjGhjWXicjdcNAdFJC9GYHTNk5XjD
 F4GoegleqBIgf3P2gpUl5AvAXjbf+g7s3toPgxO+2soDbXIvIoUsi/WeHa1yPK4iFZ
 ilD97Qc0YAj4ZEIIP5Qh0l7Foh2BLzMRSc1zcAmo=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.211.151]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M3DO3-1jnsqa03vp-003aHB; Fri, 03
 Jul 2020 22:53:05 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id E7E3F19400FF;
 Fri,  3 Jul 2020 22:53:03 +0200 (CEST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
 <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
 <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
 <fe7a1f3e-1140-bf6d-f91a-39703ee6b52a@HIDDEN>
 <4aea6148-9673-bb80-4904-2b75b9e1bef3@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgptUUdpQkViNDZJZ1JCQUNN
 SE9BYjFLTm8xWWxrK2VicmkrNFIrYkc0dHlLbHFCbHJwdjhEOS9ad1JkWFNHdCswCkR5Q0hv
 YUFkN0tXN25vSGFwTGU4N0R1bkFCT2pLRzRucVRHditkUmlXdVVCbHAzSTRhWVJGRFZhM0Rh
 K1huSVkKa01IS3FoSzU5VkVIUUNkcEttNDJudUxTN1RTK245OWF0OVl3elRHNlZCZE9sQktU
 bFJGbmdPalZMd0NnMVJHWApKNlgzRWpTMUZLQ1FlWHppVVJWcFdsa0QvMnpZNkF5aHhpNjJU
 Uzg0Vmppa1hycm1qWHlrQUFhQW1NVkV5S0tZCmI5TDVwR2xxaVp6OWcvSzl4dzFFVW9aVFl1
 YXVmcXVEdjRyQUdSNThLLzNWNENZZkpMRWVzaE1XaWFYSHZNbWwKeE16bmxHMTYvdW00TXZt
 UjhCM3IrY3gwbk9QSzFKQmREMnFya05uRk13OEZCK3pvdUxGQjRHdDJJVUM1SWxPbQpaOE9R
 QS80cWRVNTNDSXR6V3NDcjlOdXg0TDBxVWxSd2VTbUNuVjh4R1Eyd1A1WElNYXdJUXh4UkV2
 U3JzWURHCjhjTm5ZRVRNZzRpUUZmSWt0d0FveENKdnVGQXdJQjZaeEhHRjRGY0VabTY0Q1hj
 MnU3Q21GTHF0clZoWGhJZk0KejlvRVlDK0hoR2N6R2FtbjlvZmJHVEZkMmhKRXRQY1FnV05S
 NGY3K2FLa25taTIrT0xRcVYyOXNabWRoYm1jZwpVMk5vWlhKbGNpQThWMjlzWm1kaGJtY3VV
 Mk5vWlhKbGNrQm5iWGd1WkdVK2lHQUVFeEVDQUNBRkFrYjQ2SWdDCkd5TUdDd2tJQndNQ0JC
 VUNDQU1FRmdJREFRSWVBUUlYZ0FBS0NSQ0ZBcTl4cTlkZGxlblJBS0RTSHprN2VzYncKZG84
 dUdWUDhuWnRkR0E3L3lRQ2VMb0J4NHhURkFTaUZkTkU3TFFvU0ZBQVJSbkMwSDFkdmJHWm5Z
 VzVuSUZOagphR1Z5WlhJZ1BIZHpRSE4zTFdGdGRDNTNjejZJWVFRVEVRSUFJUVVDV0pzOTJB
 SWJJd1VMQ1FnSEFnWVZDQWtLCkN3SUVGZ0lEQVFJZUFRSVhnQUFLQ1JDRkFxOXhxOWRkbFdX
 YUFLQzB3VWs2ZGFocmpZUzNWMk5PSW1sZ2pHSmgKd2dDZUpCejdVT3AwOEpCS3ZhZ2g0RllG
 dzJtTzhJNjVBUTBFUnZqb2lCQUVBSVl0TUkzTWJ3T0xjbklZTmpVTApzQVNIL1MxLytPcGZ1
 K1BrRzNzQXAydUd2cHNQL2JPU21LaXhyV0RMcnQveW1LdmNnWGVkem1IT3kxa3l6TWJCCmpp
 QUUwamtFWVhRaW1GdFFHcDdxV0t3djJ5alZ2L0l0a0JGM095eUhtSW1pQ05FNUZYVUUxV2Nh
 NFBaQ2kwUGwKWCtzOU9DMjM3L2RiRlFwQnlpUFk4WUZUQUFNRkEvOUpwQTNqZExaWlR4L2pU
 bzI1SktwVG8rbERzTThDR0lGNQpnQzRiZ0JCUmwxU3pOaDMwVmZVN1NXdGpxQm1Zcm9jaGwy
 cmR5WmZVQ3ZUVGIzZnllQjBtcGZkMlIxckxUMU9HCkNFWE9ib1NkWG5sc0NySDA1ajcyMlZ6
 Q2pKSWZvUVFTZC9VbVo1c1g2SGxNNUN0QkVEUk5xVDJROG93SmM5TjYKanNlZzlBeDUyWWhK
 QkJnUkFnQUpCUUpHK09pSUFoc01BQW9KRUlVQ3IzR3IxMTJWUEQ4QW5ScGxCK1ptNFhiQwoy
 TXNlNnJZWHVJVGxwMXVlQUtDVURINWh6K0xsQ09vNHZGWkhaYnp2Q3lyU3p3PT0KPUI3QWEK
 LS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQo=
Message-ID: <f31d5204-7090-f479-5ae6-745f46b82474@HIDDEN>
Date: Fri, 3 Jul 2020 22:53:03 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <4aea6148-9673-bb80-4904-2b75b9e1bef3@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:ut3pM0daeWg8GzIBXF2ZxZHhGYlE43vcsMenOtYrLU9MdMZbG8F
 /1U93CLyhAQiXFsf1s4DaEZ0eLOoThM8aoMDDH2NM0jUVEQS5bck7wnSHBTbNSGLsbUARZy
 hbno5Ilh/ZlF1PS4pdH2MKduSenBSLluGjsBHk3Wx1HtprHBWMuyulffe0aNb+Q65BdOs1d
 /rOjtYMPfMzOu6rG7E7bw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:t2n2YgfN0oc=:rJ2uyMicrd0js+p+dtNEHL
 9RR90Z1AVqDAsqKqR0X7kZyyN3bzvOEvmuC/R4sYE4vs4hPG3wscmlIRxchfiqGZ0Zf0ID1aX
 5SD0V3QSOcnoCHyeNl1snIglRFf2jFBfeZjerYYacZCh6xUvCiQPs0EhD+BsjwquKe4xo2ZwJ
 C6fmAbs+n+auxOQIUpYnyU/L1aNW8IRbklz5Bql6DtxEHlHbzEw8IoIGEWOQbP8G8rYnwImLE
 KfjF9ffir5Tr9+pF6BYrcAV9OqQCH4m1UEVwK9Q1HVDPpAReibTjeQFYkx8HgaJFpo4OhPcoi
 n4zYpPHPAm8TQpTy+f8+BCES6PDTHXIDVzGT/dBlRWgXHs6AqVvDolSRtIEpjRnxJtoCqPc6l
 XE14VCSOMqQl1uirhN7HIj2hi9nn0b+ZkWoQCQhI8xWfw7/ggJ0hEIUFxUdO+032dkWGgy7Qy
 AUQgyBeJ03MO2qbwOF2OhX7+qAy7h2LSjd2g/H5QMtFfqNpsySqaxDvfXxIyi99LMSeEEaBtK
 QSZWnAre1MMJqA3iY/ADMkHm2qaAavZESFx2ctxHe32pPIV79KvTidsTn9uSHFzIGc3JehY2t
 60tvOg8IClQgpMV3hjk5BB9hDkkctvbV6DXzevkU5cfsl2gwJpfYnF6gnFeHGshzb4LR8cZy4
 MKM+MKqBFthuWKD096G7bdy4mSWmPJf95V0DppG6T/NKtov9CewGgVU+0YlnGgBhPb/b0PDS7
 L/LWYJVvzsklO0M4ZChl9Aagn8pSnMMYzcwbtFlllsJ5RbmgXVfn8em48iGaODQc8nI9TpHla
 I/jj+Vj4TKLhb29wAcNzfoB2McUDSxh/7CgX/2eh0HUDUpNyf6s35Llp5qnmW4cEBU8gLZ+2C
 WEQ/oOa/867WWpnp65hcVvkFNI8qaNwnHnP17D5N+2g9lGbH8pliyzrkpGsXOVBgoLf1EWjMl
 0+qIZ9o0DjmmXrWo+hSWpTeZ2/uJsZm6k9G1EKKP52SAcqawMTybpvoqB33SJs10Lf8gJ/lPm
 1G+3lhaET5SUbzCJaxN5c/Ax00RP4RIsL8Jds5YvEuQZ5HXnJEUkHvj0bnsgQPNkoWY8OQPxU
 arP6iXokwz6J1Bmuz3aU7zGl8vXV/UIWr4sDofTb1BvZduVqF5ghjC42XARm/0TKYlthBjA1T
 rsyBrJj+Dhh7wehDpDCtulXyuxQVmz4U7QxeB5pzzO7u2nDM7BeuADcGvioPQJDGbXe3Gncr/
 nqIhLWCnMlJNYmZvgt/mq87egoShIMCswnLWxgA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Sorry Dmitry,

I did not see your mail until just yet. My window for doing other work has unfortunately closed until September/October 2020.

I am using the modified package on a daily basis and it works satisfactorily. I have not come across any errors, and I no longer have to use other methods than the vc package.

I will still try to get the MELPA package accepted -- since it covers older Emacsen -- and then come back to the topic for current Emacs development.

Cheers, Wolfgang





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 19 Mar 2020 23:42:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 19 19:42:55 2020
Received: from localhost ([127.0.0.1]:43773 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jF4oR-0001Rs-Kr
	for submit <at> debbugs.gnu.org; Thu, 19 Mar 2020 19:42:55 -0400
Received: from mail-wr1-f47.google.com ([209.85.221.47]:41689)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1jF4oQ-0001Rf-IU
 for 37189 <at> debbugs.gnu.org; Thu, 19 Mar 2020 19:42:54 -0400
Received: by mail-wr1-f47.google.com with SMTP id h9so5421317wrc.8
 for <37189 <at> debbugs.gnu.org>; Thu, 19 Mar 2020 16:42:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=n4Jv6LiCOY+c9L/5ZXIhPpb/Gf+NsxlPqYN+zgaHHfI=;
 b=Z8SCm6eIvxSOWlQ9RQFYebcVg8MtHQuTasU7am9GaMWTL9JbKnl7db6MLwAAhO8MV3
 krq/Pz7OjnWIdHBlpxStlUfzz1fxDycDHMuNUAs4PaOKBWWr+9qfGmTfNGv8mSUFDNmr
 j1OyFYdk2q6PlRYfBQe2lNXj1Fu4A9N/vt87LbddA6PEJWaKZSh0utQ/GnMBsGfSoyw8
 CEBvKbRJl0NPVreey6oqSQZzRvWGE2jfAM438o3SE2yWPOn/BnJmhX/orOEQwIAM/l5Q
 ekuRyPgUnN+7CutrARwjmC1jilu504qMyMcX4g88cZO5uEiTun74GfthXxvMszeEDww+
 erTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=n4Jv6LiCOY+c9L/5ZXIhPpb/Gf+NsxlPqYN+zgaHHfI=;
 b=UGBFRtZEvOSiqS4l/sGSlntPRYrZksLfObh2h3PQ1f/b6yYYYAEHZR7SCIL80FRH6a
 SJA5Wd/kHjjF29eV5Z4C6Iypc7Lts2T0cypaXXHRYuUWUL31FdqnHQwQs8m7HX4t692R
 FEt9St8/IjW9ZVmAnpQIvzUI9OD2WbW4TcbaRRYVLqYULlW1UAE0wGrv0a+//3nRAexM
 u7NuR73z4eDIeSKV4PB9y+HTWRgu/M2LUQ7dLVKLEGBUdI3OI50OsHTqQf+/wfzEO0FJ
 r3T9G2owjRFpPitl+CY2x3Og0Gadwwjm2rj1P7HdqqME4RCNsS69XydWVE2D1+55dRuO
 z2NQ==
X-Gm-Message-State: ANhLgQ0BExsDDzEmGjmTEqe9zU4xDvfkFUakU9x4U1engLNgPldVEoim
 DwT+VzPfbe0stJf02UZsxFruLT0v
X-Google-Smtp-Source: ADFU+vsVs2zErXL1AahAxquoze4Mzl4CdTLAC1se5MhmKhDlyRU1Sj/8yYDGXnqtTtt8gJt6MWdbbQ==
X-Received: by 2002:adf:9dc6:: with SMTP id q6mr7023732wre.70.1584661368173;
 Thu, 19 Mar 2020 16:42:48 -0700 (PDT)
Received: from [192.168.0.2] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id f15sm5839290wrt.9.2020.03.19.16.42.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 19 Mar 2020 16:42:47 -0700 (PDT)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <83sgjkdev5.fsf@HIDDEN> <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
 <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
 <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
 <fe7a1f3e-1140-bf6d-f91a-39703ee6b52a@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <4aea6148-9673-bb80-4904-2b75b9e1bef3@HIDDEN>
Date: Fri, 20 Mar 2020 01:42:45 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.4.1
MIME-Version: 1.0
In-Reply-To: <fe7a1f3e-1140-bf6d-f91a-39703ee6b52a@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

Hi Wolfgang,

On 25.02.2020 04:22, Wolfgang Scherer wrote:
> I would like to discuss overall strategy first.  Since I have a fully
> working implementation for all supported backends at
> https://github.com/wolfmanx/vc-ign  that does not interfere with the
> current vc commands, it would be helpful, if you could load it and
> evaluate the use cases 'z i' and 'z p' in 'vc-dir-mode', 'C-x v z i'
> and 'C-x v z p' in 'dired-mode' and in a file buffer, just to see if
> we can agree on a direction before discussing details.

I've read the patch you posted to this discussion, and there are some 
definitely good things in there, but I wonder if we can make some 
progress first without redoing everything quite as much.

The majority of backends don't support regexp ignores (AFAIK), so maybe 
it's not worth bringing that notion at the top of the API. If we can let 
individual backends handle this case in their implementations correctly, 
that would be better. Then the ignore-param-regexp and ignore-param 
generics might not be necessary. Though we could add some other(s).

> I think a good point to start is the elimination of all
> backend-specific 'vc-ignore' implementations ('vc-cvs-ignore',
> 'vc-svn-ignore').  That is one goal which is easily achievable.  The
> benefit is a uniform implementation across all backends with
> 'vc-default-ignore' as the central implementation of algorithms,
> without duplication of code in backends.

First: the name of 'vc-default-ignore' itself implies that there have to 
be backend-specific implementations. That's what the -default- in the 
name is for. Likewise for vc-default-get-ignore-file-and-pattern.

Some other thoughts:

* Why go to this much indirection with 'ignore-param' when we could have 
a backend method that would escape and anchor file name? It doesn't look 
like that option would take more code.

* Since when AS-IS is t vc-default-get-ignore-file-and-pattern is not 
doing much, maybe vc-ignore-file and vc-ignore-file shouldn't carry this 
distinction this long through the call stack.

If vc-ignore-file calls a backend method that turns the file name into a 
pattern which doesn't need any further special handling, it even could 
call vc-ignore-pattern with the resulting value.

* Shouldn't vc-ignore-fileset takes the fileset and loop through it 
calling vc-ignore-file with each value?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 25 Feb 2020 02:22:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 24 21:22:14 2020
Received: from localhost ([127.0.0.1]:54307 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j6PrS-0008PF-Mk
	for submit <at> debbugs.gnu.org; Mon, 24 Feb 2020 21:22:14 -0500
Received: from mout.gmx.net ([212.227.15.15]:42983)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j6PrR-0008P1-0Q
 for 37189 <at> debbugs.gnu.org; Mon, 24 Feb 2020 21:22:13 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582597325;
 bh=AG+0kgvNIHseZHao6GUFeQig8uzcRCTtkSLMFMrEskk=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=POY7zBPqo9gkApyDHN277MUYgtFyC49rHBG12pNs1H52LgDGbh3EORay25+jJogYa
 QycMb32//nZliKDv0jFqssde6OtK/ysIKEq8AVv+Fbfq/MbH6xz9Vhd9N0KqNttno1
 x+pGjCUV6eX/2r+s1YE44R3Wtz5pe/pjANByLegA=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MacSe-1jiEiN1vuU-00c8sW; Tue, 25
 Feb 2020 03:22:05 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 1679B19431F5;
 Tue, 25 Feb 2020 03:22:02 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
 <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
 <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <fe7a1f3e-1140-bf6d-f91a-39703ee6b52a@HIDDEN>
Date: Tue, 25 Feb 2020 03:22:02 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:R9UCPscJFRdWRgxs9GppRP1MzQFhWDB8O0nf3cDocc7de9w5Gs1
 br3yPhGR1+vmQ1iPDVjaXqYKQBLHIEA+/XtqmAlcpJhgIRp1ntW6S+ahhNKcc8/5FZZO6XG
 ShB7wDTkxcqHsaoFPmHldmf0qksOBWLRFd1KpKgXlBZaPYJNYd0FHSGn66Mv4VKmaOe4MoA
 Zq65Pnrv2qxMDxS7CbocQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:biVCvsM9k/s=:MDQwOQQVQS6I/nF4jxuvn2
 a518TAtXEv0t1cZoT59OWMQLtOjErg5M7kkQ9EYCgE/HdKI/ZYPFqm0+XUhPD9MshpyX4/fSS
 0+X5plIIKL5cQQbFBSIqdUXwimdM9BQUgCd+7sdJaI44HJoFZQCbbcHNEcmrnqLZ69aZqc+m3
 Pw8pU8Bc+s/kymgOLSScoU9t69fKaJDqAwIeg1k4iiAW9e0XREK5/KOWkYYX6Tk7SmVC96XTh
 zAQSAnoKLPSn7o7SEBAAqWF3rr+LQO1vbXK5sISdCJX2a5W3Bw3FVnPJaGpK473avbbtN3jIL
 7Sls/zPdR/6TlCnOD+0a1PLt8fLt8FRS8PqN4o9VZTW3/aM4nowjxQRIgl4N5Zqe8yH3COef5
 AHG9/X/XLmgmgjtAV6m1By9uSYV1hpr89v1lc09IKJ79xRVof955mzFzZL7oLcMkM4jycgcSV
 MAPKKTSjAHJhk+S9SWKd7iN7fUkS4S4JG5iljpr7RY32C6O/GqefPp2ZkAlWl6ThVFqhqyDgI
 JkMw36F641kd8SSRsNU0BTRONzGaSP7hVtLRmq21wbER0MBEOobwlnv5LxDP3B3ovVIotayc2
 u/1Nh+OyR/nBCeSgJlPLu7A+YSQlOeiRVWbGgmy/1/NqpNO9GEshORuAfwuBVNNaHUvly9v8z
 N4uI0QUZhEmSZvn8hA6r35VudlAZ43tfbzP5dheupTX2OGkw5RpqPOOpoCHMeIy4h9FgAvIuy
 sKmCPjg7TuntBaHPcKXVELdMOLmsQiB55eKC0EBck1dffISjiuNEz2dQV4SMrkOCqsbry9mHX
 +svbqCOksCt898rn45P3YKRmQL9CCpDZ8DS6yaKpHpuxIJ9BORBF0O1u55TCaQMMpcs8Z7qGJ
 1sjDZ+MBy6Po/DNSlFE1c0TfazkLLzRwQA9S7bwdVCBdM/vDf61TggrnoPm9LfkJ0z9J3nHkN
 VYaVIeF5YadRC82PAJ0/F9bQ6AStkLiI5xjYhJ9+jy8PYksgpAzVqCgsHWmeeIdkJR8jrGNQk
 LMHzolrE9hE7TZFiZMMZO70uUoF2m4lcMsZefcnq0skelRzYfakfOwy9gWyn2NTF3+1jsUpW8
 oPHr+BwARL3jhvDA+rYI3qZgQEYpnCX7+17rSFsEbVYK8zM9SpHKxC0ZhexPC6hDImiBNG5Xn
 JfRM36TGLHeGRVqUqxFzlwkalusyGaVkcVmL8J+YzbTHjTza5oS8fDtXjCJkupfQEkHrK9Sm1
 aB+3wLwINeKmM6jzd
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 25.02.20 um 00:07 schrieb Dmitry Gutov:
> On 23.02.2020 2:29, Wolfgang Scherer wrote:
>>>> What will be the time frame for starting Emacs 28 topics?
>>>
>>> Since the discussion of vc-ignore in Emacs 27 seems finished, we can g=
o on ahead with that right now.
>> Good.
>
> Okay then. Would you like to update the patch for vc-hg-ignore that this=
 bug report started from? I think it can be simplified a little, and other=
wise it looks good to me (for Emacs 28, at least).
>
> Or do you want to go straight for the API redesign?
I would like to discuss overall strategy first.=C2=A0 Since I have a fully
working implementation for all supported backends at
https://github.com/wolfmanx/vc-ign that does not interfere with the
current vc commands, it would be helpful, if you could load it and
evaluate the use cases 'z i' and 'z p' in 'vc-dir-mode', 'C-x v z i'
and 'C-x v z p' in 'dired-mode' and in a file buffer, just to see if
we can agree on a direction before discussing details.

I think a good point to start is the elimination of all
backend-specific 'vc-ignore' implementations ('vc-cvs-ignore',
'vc-svn-ignore').=C2=A0 That is one goal which is easily achievable.=C2=A0=
 The
benefit is a uniform implementation across all backends with
'vc-default-ignore' as the central implementation of algorithms,
without duplication of code in backends.
j=15=04




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 24 Feb 2020 23:07:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 24 18:07:51 2020
Received: from localhost ([127.0.0.1]:54254 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j6MpK-0001rx-PN
	for submit <at> debbugs.gnu.org; Mon, 24 Feb 2020 18:07:50 -0500
Received: from mail-wr1-f49.google.com ([209.85.221.49]:33237)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j6MpI-0001rj-QB
 for 37189 <at> debbugs.gnu.org; Mon, 24 Feb 2020 18:07:49 -0500
Received: by mail-wr1-f49.google.com with SMTP id u6so12471268wrt.0
 for <37189 <at> debbugs.gnu.org>; Mon, 24 Feb 2020 15:07:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=rE67gEKqb7y29y8jd1JTAgGkRNe9TlI6inQFg2xwrOg=;
 b=TKPow+hevSg9TeGdzPJi/lAmUODn70zLZsbfsEgdP2NaFQghVjK9ARYjd1yUBJ8Q9H
 Vpql7qT0Nuu4xbGp9CKskZo49GE9+D3FeoCH0UPpkeIBuxo3Oag9D4sF1WHoWku3ijlb
 S4TAgo6A2bZbemvmvbex/3wC5ove4Dtlqsv1QDw0IgF5girKj6/RGzbH5wSyVw1iyN2s
 rYTM9lq+lnpRslFt136N6JXo7QhazRDy8l51+c3UNfaZhMywXxmofvl03p98wlNeNson
 p0g7qRdIl2PsT4P+OG6cDn4soP+hP5laEg8nbUyhQWaQmHTS1ZRdPMk4scJyNhLnmYmJ
 iavA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=rE67gEKqb7y29y8jd1JTAgGkRNe9TlI6inQFg2xwrOg=;
 b=XB5NgW+SMGxFaU7zYUZNvZPxJSuIaRRbZ5RpLSGBvHLkYcLoiAwFx/p7hAYvjVHUMc
 /ucIv3vvQ4MXNzoWkWSYTv+Jql16F6TQEgos7ZQCB8VB3RkN8BgPMddiLOz3alVZfjow
 iYRL1gky8vdDUW/bI4n/vXudMhSWxdy5ZMJrM6QI/LhvKBp+FBUu17IIBCq4hbTlWSOi
 Hoel2Ier/YmVZAaL5i1p3I89Gf3LtRqXvfFPwgzzuO38bW/xWaNOtDQq7/bqxz1FjFH1
 vgX2eQGV/QyqVheovB8ToY741KYlyNFSZl7BKD75bJnCD0ljvfGPLwZDhehImAtwAlj/
 lpfQ==
X-Gm-Message-State: APjAAAUxLt2A39ichb7zAK0ulgPWmL8xxfL/tvwJhsO9usuo5H9o0hy7
 qjPy0peQ8rn2BjgbVeali4qtGXgC
X-Google-Smtp-Source: APXvYqwvPPwUpVx9QnHkN3rRBXWBGGMebWy0CHWFtOVJ9pSEqU46PGr/oK7L6kKF7EgiKLsFKsp34w==
X-Received: by 2002:adf:f7c6:: with SMTP id a6mr72191243wrq.164.1582585662377; 
 Mon, 24 Feb 2020 15:07:42 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id z1sm1301083wmf.42.2020.02.24.15.07.40
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 24 Feb 2020 15:07:41 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
 <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <1eb63b4b-d6db-81fb-20ab-bd1d46535d3e@HIDDEN>
Date: Tue, 25 Feb 2020 01:07:40 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.2 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.8 (/)

On 23.02.2020 2:29, Wolfgang Scherer wrote:

>> Please let us know if you see any unexpected problems.
> OK, here is one: Since vc-default-ignore no longer normalizes the
> relative file names, vc-dir-ignore should do the entire processing,
> just as vc-ignore in interactive mode does.
> 
> When calling vc-dir with a sub-directory of the repository root, the
> relative file names against default-directory are not equivalent to
> the relative file names against the root. I.e., the file names written
> to the root ignore file are wrong.

Thanks, should be fixed now in commit 9ec6eb1065.

>>> What will be the time frame for starting Emacs 28 topics?
>>
>> Since the discussion of vc-ignore in Emacs 27 seems finished, we can go on ahead with that right now.
> Good.

Okay then. Would you like to update the patch for vc-hg-ignore that this 
bug report started from? I think it can be simplified a little, and 
otherwise it looks good to me (for Emacs 28, at least).

Or do you want to go straight for the API redesign?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 23 Feb 2020 19:16:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 23 14:16:21 2020
Received: from localhost ([127.0.0.1]:51609 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5wjk-0004Hp-Pv
	for submit <at> debbugs.gnu.org; Sun, 23 Feb 2020 14:16:20 -0500
Received: from mout.gmx.net ([212.227.15.15]:41443)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5wji-0004Hb-Uk
 for 37189 <at> debbugs.gnu.org; Sun, 23 Feb 2020 14:16:19 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582485372;
 bh=a0VC13UlzfSQs34rECVpLzZLFUplWwppnRbbkF2ucJo=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=J66qDwQKZkgBxNNU3HYH/AGey2ERcffB6jZ6C2mSYI69/qYzE6VQw2K0tje14AmFH
 Zsb5vcoPmT+MS3GsoQ/k9anzFCY88HgTUKLXgUUfwxuKicpy7hGEofluhgoyg17Kks
 792v4ZMYvmwbxFNnGDNhroOHlOQEEIXZtxklNxqs=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MIwzA-1ipux42giA-00KOMa; Sun, 23
 Feb 2020 20:16:12 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 47A78194318A;
 Sun, 23 Feb 2020 20:16:10 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> <83lfouitis.fsf@HIDDEN>
 <399989e5-33b5-ae00-6f29-16bc7dfa674c@HIDDEN> <835zfxib3z.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <0ca9e497-611a-6fe3-faf2-416518dde081@HIDDEN>
Date: Sun, 23 Feb 2020 20:16:10 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <835zfxib3z.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:zoOiXDivJcnNB0y2g0ac3WzJiLjzFlKdhlntXo52dfujGPKP21x
 MSgQXY2DtjGmwu+/r+aQBZXmpqvpkU5dqAXVgV9sx6JSpP/s++SDFFlvG4PEKcNtZWyajAy
 oGDwGEgg7B5qSOYgTjf2zDqxdg5yqtB+O80x/Olnp5X5R4Kjz/0EX1B8lKdXGXF9mJmQ0wv
 j/HYd7gs4ni5IUNYwoT9Q==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:8cyOcO5CwMU=:6kGHtZERM5LKzRHzC9f3Jk
 4cvtUuFrPoJXaXfVlcbLZT9y7XaNIzkTdf8Jc56LbsPxMkh383/5Dt6ObbEPLcLN73DkqtGz6
 kueRRMJd32Vvp9/JpTpAZCKjf176/9mITMY0kZPVYraQ9rCvYMNRum/evATQeSPvoB9bzD9bh
 m2pQWtEDGP21TzZeJvJ6ZdGLVaIujRlsqZW/fymp68v5Ifx0PTfN4oJ4ZapGP+Kdzz9WGGeSN
 W9Tw+WDNFP+nlFYfyaiJWdtVcjVyJ1E9ScTvQZ6A1CJR2W70Nvxk1rRU+aJ4hgjI7pp9CbnqQ
 4jasBhl+roN44tZL1FzAbHOYXpvgrq1pbUgYxEtpfB1YgK6YTny8VOw0YodOkmAocWNc41O6x
 Udg+pI8OKw09mqEZFWVPq2Uc74ceKDUvlPmj01UH7JUhX30OulGRZ1NcBgBwc+Yphu5VP4nSC
 6eZdz7sSlQdLfZZdIUke84zNvd2kWE01pxrr67erodWRQEShlc4XLJEALRhws2J/f0x4fHVwv
 cJRADascT+Hotya6/EEOJaKuLlgHSKxzfePSmCnWruFqCL6R0MdEGh8R/bwqqpL+IeneWlo/p
 vWiMao9Vb30u5WL2/IoUhfETMqpo2hNNlfuxj7qEMOdPWWzeNe6GtPG3KKlItN4hw21pU74d5
 uGBkFzFIUVeFCFZZ+erHN392xIYiy1/CUhIkqMpD3mYw0CJO3u57BwfumNuYA+KIvnvj+cT/6
 ZaPrkHzKyr0/auaDRHFGL1CV2HO2ArTF4GYaVoY7neIvjJnEuS7KRkhVVw1APzL+Zpvgol8UY
 9TouYx+j5CcLfIdFcuDdXRjVWKaV8xYt6D/mFVaKyWRUaL6YPCoL81ze15wiMV1qHlJy8jjyt
 u87cMMEwYq9n2zDXG3u+foFfrkpn8pB8efyVGVcjGS1ruxyxv6V8bv2Bv2+hml+bMmIeQiWgU
 EPkMEBO/4H6RjHHf/UwSOx68e4mdXWqDJBW+KKMI+v+uq8CPOxsopQUe5+GcGYv2Md0yFfGPD
 bH6qpPPZsc8JZlzvqwnSvqYCr/67earHCxn5Eq+OyRk+2Kx2I3fU3Hqg0kNFGybwjRvRvNJus
 mFEBZIUPzg8ObLYzZ9CRUVuFqLThW2DkFRB8my90V4QCm2FFb7qtzvVSL57h2S+VzZr+uO07h
 zUIVTRWjurP9rjqqOznVlcHE4324sGzXEIBS9bIpuElxzeHrwyruyfFROt3eP+n9spqZYzzvl
 mm/pSQhqUX1Ey9HGr
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 23.02.20 um 16:20 schrieb Eli Zaretskii:
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Sun, 23 Feb 2020 00:32:27 +0100
>>
>> What about the unwillingness of src status -a to recurse into
>> sub-directories, how does that correspond to Git, which can
>> often not be stopped to recurse?
> I was talking about this issue only from the POV of VC.  VC doesn't
> have to recurse, it can always run with default-directory set to the
> repository root, when SRC is the backend.

And how is the repository root defined?

What would the function vc-src-root look like?

How would vc-dir in a sub-directory of root learn about the files ignored?
default-directory is not the root in this case.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 23 Feb 2020 15:20:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 23 10:20:43 2020
Received: from localhost ([127.0.0.1]:51473 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5t3j-0006RL-ON
	for submit <at> debbugs.gnu.org; Sun, 23 Feb 2020 10:20:43 -0500
Received: from eggs.gnu.org ([209.51.188.92]:39302)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j5t3i-0006R9-3O
 for 37189 <at> debbugs.gnu.org; Sun, 23 Feb 2020 10:20:42 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:37598)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j5t3c-0000h5-O0; Sun, 23 Feb 2020 10:20:36 -0500
Received: from [176.228.60.248] (port=3127 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j5t3b-00080A-W3; Sun, 23 Feb 2020 10:20:36 -0500
Date: Sun, 23 Feb 2020 17:20:32 +0200
Message-Id: <835zfxib3z.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <399989e5-33b5-ae00-6f29-16bc7dfa674c@HIDDEN> (message from
 Wolfgang Scherer on Sun, 23 Feb 2020 00:32:27 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> <83lfouitis.fsf@HIDDEN>
 <399989e5-33b5-ae00-6f29-16bc7dfa674c@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Sun, 23 Feb 2020 00:32:27 +0100
> 
> What about the unwillingness of src status -a to recurse into
> sub-directories, how does that correspond to Git, which can
> often not be stopped to recurse?

I was talking about this issue only from the POV of VC.  VC doesn't
have to recurse, it can always run with default-directory set to the
repository root, when SRC is the backend.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 23 Feb 2020 00:29:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 19:29:42 2020
Received: from localhost ([127.0.0.1]:50247 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5f9S-0008Ai-4M
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 19:29:42 -0500
Received: from mout.gmx.net ([212.227.17.21]:57885)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5f9Q-0008AU-Ef
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 19:29:41 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582417774;
 bh=4IYBLYmq6dwVzKZ5/G5IwRtjB+8QaFS19tfZ2JickJk=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=lALRjaQJHUg7z6DsYsxKrOaZtIDDIC2tkBq4h/7TFm7CHY9TXE6XCHjSJZX0/a5/i
 5XVo8f3LtEvdopypFk0VdrIqkleIvIu5fG7AjAww9K0M9sxVLwuIDLxQ/hRKhi+Acw
 CBsoxr1Sg3wpvLq+RLJFH7u7CF4JbhP627xos76Q=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MIdeX-1jAvw83ZiP-00Ecyr; Sun, 23
 Feb 2020 01:29:33 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 159B919431F2;
 Sun, 23 Feb 2020 01:29:31 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
 <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <6ade9293-7b1b-49f5-5348-582a131793bc@HIDDEN>
Date: Sun, 23 Feb 2020 01:29:31 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:VEnbRYebj/7dFJVoYKI8zmWFVBBLBW8wOJFkvaMO8dztspWt2Qk
 oZuwZnxuALiwrezMDFkHWQaAVVsDNkfr1fz3PUO/TgvxKK0ME6E9wv7dm4eelQee5D0Viwu
 sRZgz8YLtlu1ht31y5V7hhQnKwr6+hTqfVTvL372Z1X5Kb4Ic+y5N/TdFyEG4WLa1TlhSZq
 IJNAcmRi1+p6p8pj3SKdQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:U1+ZIWS5Ar0=:kTGTw48FGhXU7i5GgGTy+x
 0F9k0QrnL8NUhdZo2r1Z38VeatuHqdUs1XY5C8Uoh0a1v9pRdn+28jUk7eGl+FBDiJFsRL/77
 T/zSpuspD+RRURL/q8aaNJIGeZyXIw7lmt6BaXw6NhqyUrqGspgzBmEYqI22aDZ2Z2ez+dLtZ
 AA4owBdAowWGbr6+g+6Jwayk3EaBCTttFrLSIW2iB3WoubZe4d2gqzAs/FovgjPLpgjQRqB8e
 wEPSgpZmoaF/fM6G8t4lKmYtFDsflU8X5odE2Gk0rbkRCq83r8KoZHCZs5SIe5wrFuskmJCRN
 uEw0T+OiSBoviS/b0z705ZTYcTYiG41sAny63GrB7YSZt7YgXzTsammwmGgwBTDSDsQoTRHba
 Cp+7A1ZOhzEsv3HULmQw/D1PElGOdAtMJCUjODoqrsYqJIxNJI5Oxj/kEMb+umPrcyO1XNO3m
 BOUgZiGTDCxk0MQ54t7TKADxZ8OqqiOpjCfInXx+ABeZc6TO+YeQJ8//lUlpADEGtJpFj4FMu
 kmQ5f9vM/6boN2MXvP/mpRYl5rnMAG4BvLpk0PD7ErHBCX596O67RITkW2FNLVFytsIzH57tY
 eSF9dl5Eb1kg/iG+5m0QsxC9AtIK5otsIrhqYAUQbZUjM/Y10NpX687GbqIcobS8Nk556vdk8
 YrZS439zbKeaFVkt5u8wNqxwtYn7PqXulIWWUTo0u4ejUc32v1DpVYzKMT6Xjgk5SIxbsdoRy
 HVKUZuJNlyCKVj6WKlMS0euiPHuzXzyLLUV2F/XlJZaoB3oJhDBrLVqPnQNmASsW6H+Zb8CyC
 qo7bukqzoCmc2X6doPRQeexolaJ84DeVFe+X9ejkulFXN+Z0zZPMScliXuvK8szMSD10tat6N
 NwM/7CD7/+5GvHFbyUGFpVd8ipvaPDyWRTW9dVFiSIipfcH4QpqJFD71NaGjcH8NR+r/rCntc
 4Jf8ux5/rJ4i1TtXAsHYZbeyNYQol/MfAUyA0nHxM14WlZK4VR6oV/hcI5hO/KDhoqNlqFTys
 zfRubt6IbHndAZImCR36QN+0/jtXyAAX3HnknvhMmbtQBnqiOARemyFKGOuI3MLUkqaulDqCx
 wjvWHdnpx5n1XSnNqDfydrE5YLjE84UCaB/y5wUSz/erCKhQkHJNCORr0T+BvG4ZFlePmZFCj
 Uw2YeG2HfUzzncKSd5hj6sEfwmjlt0VnMvysf3ShFm4GH2WqHyJWRNNr6+jUlM6VkF8AOHf4S
 PTOwjH9+i6A8j6lqR
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 23.02.20 um 00:58 schrieb Dmitry Gutov:
> On 23.02.2020 0:00, Wolfgang Scherer wrote:
>
>>>> RCS, SCCS do not have ignore files, so they should error out. SRC has
>>>> ignore files similar to CVS and SVN.
>>>
>>> They will fail anyway because they implement neither 'find-ignore-file' nor the 'ignore' backend actions.
>> This is in reference to the condition-case around find-ignore-file, which is not necessary. It is OK to error out in that case.
>
> Without it, SVN and CVS would fail as well (since they don't implement 'find-ignore-file').
Sorry, not a discussion point for Emacs 27. Let's pick it up later.
>
>>> I think the patch is compatible with those. At least with the SVN one (vc-cvs-ignore might need a little work).
>>>
>>> Have you tried this patch with SVN? Is there a particular scenario where it fails?
>> No, it should not. CVS is now also patched, so it will no longer fail.
>
> Cool. Thank you. I have now pushed the patch to emacs-27.
>
> Please let us know if you see any unexpected problems.
OK, here is one: Since vc-default-ignore no longer normalizes the
relative file names, vc-dir-ignore should do the entire processing,
just as vc-ignore in interactive mode does.

When calling vc-dir with a sub-directory of the repository root, the
relative file names against default-directory are not equivalent to
the relative file names against the root. I.e., the file names written
to the root ignore file are wrong.
>> What will be the time frame for starting Emacs 28 topics?
>
> Since the discussion of vc-ignore in Emacs 27 seems finished, we can go on ahead with that right now.
Good.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 23:58:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 18:58:44 2020
Received: from localhost ([127.0.0.1]:50239 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5efU-0007Pu-IF
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 18:58:44 -0500
Received: from mail-wr1-f48.google.com ([209.85.221.48]:40445)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j5efS-0007Pg-8e
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 18:58:43 -0500
Received: by mail-wr1-f48.google.com with SMTP id t3so6117531wru.7
 for <37189 <at> debbugs.gnu.org>; Sat, 22 Feb 2020 15:58:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=FWqHw3kC+BL86cu2Qeghq9YCpMr6mgN2lRfI1wenowQ=;
 b=B9HHt8ZnhouRIWThOE+utpcOsX7F6n5aF7NrXpWCv29RwZDQNEvCp0i+OxUroKO7JP
 PxwuwqxzjaC8xfCYcuHAIxtKoGwElLl8YQFINHHTQc7Q9y9fQazSiinpxKwbE9F5l0+u
 2IqGvA0hD9zRg4naKZC5aYTbSLHA2yHLk2+pG5J5+f7lJAjmms0vYhEoRjWGZd03FFGc
 Enfkvp40jz/V/yRxvQF8L2QeTmqMervD0LlPz9wyykq2pNDtcS6IkmlM2CIkrCrug034
 0BLQfMoNCEGp6puElRjRfezfbCM2vpDTEK6/H8h+CzNhK5QJdrZmOkga41zUdFT5Bzn9
 Th+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=FWqHw3kC+BL86cu2Qeghq9YCpMr6mgN2lRfI1wenowQ=;
 b=RJlMQBZrthlA7VV0h6eSsaYB9gisJHEKWkemOBpIWcupHmctHGX9JCCv+uEBdepaxv
 4ozp9DMkxpL3yayThpw6naj0bk0QOF5WOEVLLEThn6lgy5Av/I8hkyQmk6F6WFcfIzLi
 jEp7uLwUf5O74dAypg+0IKfpnlJxDzgxtXDzZmQWHYWlohMGjcsRBhDttzxglQoIT0Mb
 P90hpiPlCm4bb/1wDNbTBQjcrsIRQVdJJaCstDIOfZ5dUQ0bLnHsiWzFAIxitE9qmy5h
 H+IuXtGhGVVn4yDp9D1J5kNleUA1nPYlyfW0C0RzShfudzpDw+Tj4WwqaX7LzSj+B9Sk
 f2vg==
X-Gm-Message-State: APjAAAWy1jSFoa5c9ACTQSvZmrR0P3v7x2pMcPuJTz4lVWM0HyaDXQq2
 4b0ifYqPjBWu40gpH6N1ls57WdA4
X-Google-Smtp-Source: APXvYqzx61tqaOSY0F+UDqN59MKDEtAHrjzkY20ggswGmvg8ud3fu75fLyWRW4kVsT1nKq0cHmUWKQ==
X-Received: by 2002:a5d:5347:: with SMTP id t7mr56505270wrv.401.1582415916037; 
 Sat, 22 Feb 2020 15:58:36 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id
 a184sm10889004wmf.29.2020.02.22.15.58.34
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 22 Feb 2020 15:58:35 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
 <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <3220684c-b1d9-08a3-e34b-cc54e99d4754@HIDDEN>
Date: Sun, 23 Feb 2020 01:58:33 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

On 23.02.2020 0:00, Wolfgang Scherer wrote:

>> Escaping/anchoring can be added in the next step of the "series of ad-hoc patches".
> I'm not saying to implement it now, I am just describing use cases, which are not limited to Emacs 27.

Sure.

>>> RCS, SCCS do not have ignore files, so they should error out. SRC has
>>> ignore files similar to CVS and SVN.
>>
>> They will fail anyway because they implement neither 'find-ignore-file' nor the 'ignore' backend actions.
> This is in reference to the condition-case around find-ignore-file, which is not necessary. It is OK to error out in that case.

Without it, SVN and CVS would fail as well (since they don't implement 
'find-ignore-file').

>> I think the patch is compatible with those. At least with the SVN one (vc-cvs-ignore might need a little work).
>>
>> Have you tried this patch with SVN? Is there a particular scenario where it fails?
> No, it should not. CVS is now also patched, so it will no longer fail.

Cool. Thank you. I have now pushed the patch to emacs-27.

Please let us know if you see any unexpected problems.

>>> I apologize for introducing ewoc into vc-dir-mode. Meanwhile I have
>>> discovered vc-deduce-fileset, which does all the hard work for
>>> preparing a fileset in vc-dir-mode, dired-mode and other
>>> modes. vc-deduce-fileset delivers a backend and absolute file names,
>>> not relative file names.
>>
>> Please submit a patch fixing that whenever you have the time.
> I don't think it should be done before Emacs 28.

It's fine to submit bug reports and patches now already. We can even 
install them on master.

>>> I think introducing relative file names in
>>> function APIs is the wrong way to go. However, as a preliminary
>>> solution, it does suffice.
>>
>> I think it's just fine if the function is supposed to receive an *ignore pattern*, and not a simple file name.
> 
> Again, it is probably not the time right now to discuss these matters.
> 
> What will be the time frame for starting Emacs 28 topics?

Since the discussion of vc-ignore in Emacs 27 seems finished, we can go 
on ahead with that right now.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 23:32:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 18:32:38 2020
Received: from localhost ([127.0.0.1]:50214 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5eGE-0006ku-3g
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 18:32:38 -0500
Received: from mout.gmx.net ([212.227.17.20]:56077)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5eGC-0006kg-0f
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 18:32:36 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582414349;
 bh=GIDbX0Ucw+Fc5XCs334wdOwEhDlpwuVQSfnOcpB9D2w=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=bZPMYXr0JtYxRUlFNCpgx6Va873jidNeXr2YKEPFLbFWuVRHdyt9oZNEViAghhZ5L
 J6zptaASoDKGuiCXbu7/iVN7kMkF1g4a8ApNRfc2bTd8iuliUuOWO0j3VJbhYpUh4n
 ZLIbxYwxnRlnyz2102sh5R0Jc3PIwbuT12Z6Ai20=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBm1U-1jHi1B1sxI-00C8vQ; Sun, 23
 Feb 2020 00:32:29 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 55B4419431F2;
 Sun, 23 Feb 2020 00:32:27 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> <83lfouitis.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <399989e5-33b5-ae00-6f29-16bc7dfa674c@HIDDEN>
Date: Sun, 23 Feb 2020 00:32:27 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83lfouitis.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:urb7lrioWs3G7gIdgcQTkpFBZ+dBtIuRu05Y0yVtp9/NLVAblBg
 HlJPM0dxFgoWxM9gM6k4fCxk8iwaIW5qgZQJRz/KSVyBu8zeWVP4AjUhu2ddRDxGsOAm/0v
 5VbVe5dTI9lKgmuNle1mlKwZpUDT773/mPo2k3n/IvkzUQ3P0uXGNQ5wNSMCwioNqGcgpz1
 ZTx3sOky2u72iJs7KqUHw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:9c5MymIaW0Q=:qshJDCIlHClBAvyI9udkgg
 UNs35Iyv2QdBRbaqInVEnJt9FGkpeWZQ51GZ5ogx9iqNwAD30dMkbMJ1s53zHi7pn4bgQMIYJ
 GadF9gSAoxAjLUzct94675OUlFW3ziY6m2yx7eQLgypqGtNwvQ57pwycOtK7CSdTQo547UZBq
 iQzol5fXKgrDDwNjBwPHyzEvZFWuMVEY9KDgIyl2bxn2SodQzMQUWU0ZlR5ZlWxcH1Ca8vyj7
 Zu6yc4QTgfrzGxKONExEH5IlvPlm6wy/hS8ksPBKUAhXTHy95wK7SzT+S7tEYYvixLY6+UioC
 kQ9MYPJnLOhMp1ehzdihcUyR52opVupjzQgM389yQtq+V4Pq6GVpwxVTXdcmVVpUOeyJ9j1Nl
 52zTyne1+yrvSwEiXnoPV1l4ZX+BCtaRIS86JLRyMHPmC36C33VNkEYxPYNUTov55o84+RWK+
 vK6ZydrARsZzOTGY2oilvCUQTXB/cPczjs49YkduG+6zHHVYtix5k/uSSN7DYsKLCXfhEkEkp
 97hjB49s6FswURTj6C21PlPGIK1KRrcaRRQrqmWKl0ClvpFsueMbeZsnWHDaD4AahDfs8eSpA
 ZEU95hOvjlvZRdmhtimkzavcy8uIWtZb3qi4fuKsn6sV4Tn+3FeWqfICtznum16PEmH6qgy/n
 4tp5pdxSGd2xMrysiuCSSsStSC9J5kgONO1NbeeCkiXlPmwmzr/IAatlVLhmg7Ros/g/ZVphB
 Em564S7nSofr8jy3htwkFyFLZzfqk92nLE2KOSWw4Yh1CCFPVHx6tpalKH2G0y56xijVTDbc1
 yrOC7KcQfNGhB+JQfiIOIWeBFeJmAf22lb/7Z2JmciV2lgX6AtRh6b7fCWmMNCK8nEP0ZwP+3
 9+aUjZSAVKYPVCpl3ZEroatQyHBE3O6gYpvr6XlDMQUinRoAkjyYdq6RQLEll7eAsDSXWat2Z
 ujpQ0k1fjMafNNavLrodOZkC/SPu5h0F/t+Km9QrFXWD8t/PnQgpXHnV8FkyM9HAiFFVBOWob
 THqc10rKdonMKYWYZLBKgrn1Rov1JE8vNEhIMYOKcqy9EBAsucdQ1D6jK+phcxe1yplgaEYmo
 vUU//ANJQvmRIL9G+8fLWRUBUyQtgxmjli0NjarihvcTEgBcc0p3k14DjTL4grbnyWecnW5f9
 eXJm0c+LHY/VAXFSh4sXINUeCJtR5jc+TL6UKnyZO5WcjKZCf6JBM79+gu5xE9rC8o9HNaul3
 Fio0t/e1ddmA3/61E
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 22.02.20 um 15:30 schrieb Eli Zaretskii:
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Sat, 22 Feb 2020 14:46:16 +0100
> When I actually try this, I see something that confirms my
> understanding:
>
>   ~$ mkdir src_vcs
>   ~$ cd src_vcs
>   ~/src_vcs$ mkdir .src
>   ~/src_vcs$ touch file1
>   ~/src_vcs$ mkdir t1
>   ~/src_vcs$ touch t1/file1
>   ~/src_vcs$ src status t1/file1
>   ?       t1/file1
>   ~/src_vcs$ cat > .srcignore
>   t1/file1
>   ^D
>   ~/src_vcs$ src status t1/file1
>   I       t1/file1
>   ~/src_vcs$ src status -a
>   ?       .srcignore
>   ?       file1
>   ?       t1

This is to be expected from the way glob(3) works and the way SRC is progr=
ammed.
How do you jump to the conclusion, that this particular case is an indicat=
ion that SRC
works like Git, when most other evidence points to the opposite?

What about the unwillingness of src status -a to recurse into
sub-directories, how does that correspond to Git, which can
often not be stopped to recurse?

=C2=A0 ~/src_vcs$ src status -a t1
=C2=A0 ?=C2=A0=C2=A0=C2=A0 t1
=C2=A0 ~/src_vcs$ src status -a t1/
=C2=A0 ?=C2=A0=C2=A0=C2=A0 t1/
=C2=A0 ~/src_vcs$ src status -a t1/.
=C2=A0 ?=C2=A0=C2=A0=C2=A0 t1/.
=C2=A0 ~/src_vcs$ src status -a t1/*
=C2=A0 I=C2=A0=C2=A0=C2=A0 t1/file1

Also, changing into t1 does not ignore file1 any more,
which is obviously inconsistent:

=C2=A0 ~/src_vcs$ cd t1
=C2=A0 ~/src_vcs/t1$ mkdir -p .src
=C2=A0 ~/src_vcs/t1$ src status -a
=C2=A0 ?=C2=A0=C2=A0=C2=A0 file1

Further, if there was a similar pattern propagation as for Git,
file1 should be ignored in both directories in this case:

=C2=A0 ~/src_vcs$ cat >.srcignore
=C2=A0 file1
=C2=A0 ^D
=C2=A0 ~/src_vcs$ src status -a
=C2=A0 ?=C2=A0=C2=A0=C2=A0 .srcignore
=C2=A0 I=C2=A0=C2=A0=C2=A0 file1
=C2=A0 ?=C2=A0=C2=A0=C2=A0 t1
=C2=A0 ~/src_vcs$ src status t1/file1
=C2=A0 ?=C2=A0=C2=A0=C2=A0 t1/file1

And it should not matter, where in the sub-tree the status command is issu=
ed:

=C2=A0 ~/src_vcs$ cd t1
=C2=A0 /src_vcs/t1$ src status file1
=C2=A0 ?=C2=A0=C2=A0=C2=A0 file1
=C2=A0 ~/src_vcs/t1$ src status ../file1
=C2=A0 ?=C2=A0=C2=A0=C2=A0 ../file1

>> There is also no notion of a root directory, i.e. SRC **never** checks
>> a parent directory for ignore patterns, which would be necessary for a
>> Git-style glob to work.
> The first part is true, but if we invoke "src status" from the root
> directory, the .srcignore file there will be read, and as the example
> above shows, will have its effect.  Right?

No, if it is not consistent in all parts of a sub-tree, the
behavior is an anomaly, not an indication of intent. So actually you
have found a bug, which you should report.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 22:04:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 17:04:36 2020
Received: from localhost ([127.0.0.1]:50185 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5ct2-0004YM-4d
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 17:04:36 -0500
Received: from mout.gmx.net ([212.227.15.15]:55545)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5ct1-0004Y6-6P
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 17:04:35 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582409069;
 bh=x4XWoeTQEJECZ+J+6Sik2URKtL/8sr3tJhPhHiQjpPQ=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=NZvvH3JenB/LZt7J1uUSYMLNDaW49wKGpEcm4yUczV/pZbu2HPD1KJOskUKiMYHbK
 Iy9yZK1GZzKIL1KAaqGF+vXWMiGzuXHjjQFasmBr50Dy4a3brc159ZAftk8HStLAmT
 8UTyLE5mGRx7kWrCesT9eXD4KpOd+9MOcQXJQJhA=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MfpOd-1jcEkP3zNh-00gFV4; Sat, 22
 Feb 2020 23:04:29 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 9A08019431F2;
 Sat, 22 Feb 2020 23:04:28 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> <83lfouitis.fsf@HIDDEN>
 <d712e214-8c40-c60a-e927-74e3eaf3f0f9@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <5d8d6df4-604a-1125-526d-48176f3d477d@HIDDEN>
Date: Sat, 22 Feb 2020 23:04:28 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <d712e214-8c40-c60a-e927-74e3eaf3f0f9@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:1Ikae98eKi7mizpFVUlTNLmvgn6p7yYsHZ7DlsXZ5L1IM286NfD
 8R2SSfdf9J3/LcntHWaFCoHmeXEqPJYtz5wp++TGaYvnwWMcDWGcjkGPTKEi/4kuq0/rVHZ
 gt0d//ERbJzmsXEB2mwOFVGRn/amPYC6i2sCFuVRv57XdMrxmhRqsYAbsdQVBZ3t1COXr9j
 jxvwqq25SwiLIsAk9jp6A==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:lyvVIgAYKG4=:KVP1sVZKUcNY9foKuOh9FV
 +duLSA1Tz1JPWlzgnRp0Z0MEo6kHyN2y5H9FwPfHLl0LDN95MIyUPBD6KxWZrX7L81aYwEpVE
 DfHSQLEiV+cGh4ENoQDRwsFlJHP7sw7XkRDJv5LbaXrbRct0etPlnx4PtEpL7VYqX4/bwkqmP
 EG+WM+taqmV6Q20IwITPKWb9ie13FFhqBcWWga/FtJEZbd6yio2aA40I9b/lIlhgSLM6/fvdj
 SVxOD3YZWgY2hciIotXXW6ip5EH5n6DBvCDHI8sdThFgWjPUHb5u+L0ZJobH7sECKRwm8TT8r
 tw+yNOeybamyS0SIiACsoZaBJlPwgZvqRCRU6oi3hNQPviO1ltCtZwwCVlqZsIhRCfAN7W3o4
 ue/f+lCPrkMmgBEnuZChW0RPrH9X0lameAGZ/f0pSRvUz5eFQWMLnZRw38v53YZsS0A377uTl
 hG3g0Dg6xdvNlX1c5lbYuAbo1eHdQBtyZ5DFFMWW0yyl2s1Eh+pVhZDf1YRHGmYkMoKwkL51d
 XtxDd9nLCDtS5rj05T7VQeZVJrNAhzPs6qKN9BsUz3DSPbMysbwjzUXzvSfxMbME0yt+57Yyb
 qsXqBbMsM608t3bkwdVPEXY9tWyxnXGDvLW5BQ+VTujn2IBuu8qifbrMF+zOC+6twBQ8G2VkE
 sNTIxrSRn3q59YWak2r4C1PUZqc2NlYOW6IfUTnJVHyWh+7A83CvFCDfAOJpM5ZA4X6A6QOKX
 Z7iEoEwc1QivOkskBaOHz8L32Da/Kwv/BeyjsCrmKypv2GFUNIlzrDl7Rk9PjMWD8xwMRD1Qm
 lOY/RgZyMDD4G1BNjEnaEzyjaIH6oGIwWcfZkZ9eX+ivxiNGESb53Ls1RMrwmXUhmAypu0CCc
 wcT5VGYwcw0PiifVo70BvC8lwOtJb1phK4LbMjTccntGhvMSDR/xr9PxlYa3xo8lHyZWagYJE
 jtV+4rnptzwywSAZb5KhpdySAz2e6My36VWMmWMhoofNdmSQ5phFlzQvSBgpUPf9jS3MvObXA
 CvmXQBuaqjD1vimOUdW+xDZ2y3qfkDcZibBxsiXxSW4Xd0WwyK30UTtCC5WVl0lF4Kb04C/95
 mE5vlnpeQI1yGw3ouBWWA2m3dTA3g7SaDU0oyzC6b+Ei1zYPwn678jvPsAWH3pj1hLz9xlOb3
 nR+ifzOSrhzokGL3eF9aZkXWkzjmlbS4iwbyqsWnuzNHdc/UWbbhC5anseOppaLMtx0j8jqoM
 ROSwla9xJnCNM6kZD
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 22.02.20 um 20:14 schrieb Dmitry Gutov:
> On 22.02.2020 16:30, Eli Zaretskii wrote:
>>> SRC is RCS/SCCS revisited with a modern frontend. It is - just like
>>> RCS and SCCS - not recursive. None of its commands work recursively.
>> When I actually try this, I see something that confirms my
>> understanding:
>
> The SRC discussion is interesting, but since vc-src doesn't implement the 'ignore backend command, nor the 'find-ignore-file backend command, vc-ignore isn't going to work with it in Emacs 27.
>
> So this VCS's particulars should have little bearing on the current discussion.

They don't. As far as I am concerned, that discussion about changes for Emacs 27 is actually finished. Your proposed patch is sufficient for the status quo, CVS is patched, so there is nothing left to do.

I will just wait for the Emacs 28 discussion to begin.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 22:01:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 17:01:07 2020
Received: from localhost ([127.0.0.1]:50181 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5cpf-0004SU-K6
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 17:01:07 -0500
Received: from mout.gmx.net ([212.227.15.19]:35103)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5cpd-0004Rp-LT
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 17:01:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582408859;
 bh=4RzKxZEsEedOXcRqBptxpXUC6QPWCSD2F54FKoiYi/A=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=kMUmmOxtKPBMZMj9W3EQHyjnvkQ9yJd9catLtfusCuwk22NVuHIdOlqS1qnlFLSTL
 aaf1uCZ6ny+LbCL3+KWA10o3PaKN+ZZLEmmfYnfHg++UuUNkbaDHtAvsNuiPrQ5OZm
 Jy9IO12BsobbxRVV06flrMQczhXGa2zyehMoYXfg=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M2O6e-1j9Tuf03GY-003vt2; Sat, 22
 Feb 2020 23:00:59 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 7634319431F2;
 Sat, 22 Feb 2020 23:00:57 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <838slmk90j.fsf@HIDDEN> <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
 <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <777563ca-b2c1-ab01-e1d5-6dc9c8f52415@HIDDEN>
Date: Sat, 22 Feb 2020 23:00:57 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:ARmoD0oJ9g5nLJzmGuaUPd8+hLew5OJm2GpDq+AgC4trtbaDjlT
 kQvEfSOBuorpnnXUsQfHJ4c+dMid/1DE/NvDGRCaSf8WDadeiX/C5kKMJz5xgzJ1PPqXylm
 RPmlfaV407Jyfxhxf3P0opDem1wZV+0qyxgfJhqf3UD6/w6FmO/QhaY4oiG1D3SCDSDO/QK
 Lhvc0MqXj5XiXbNowUQuA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:KvTg36LnblI=:nNC/bjvUw1odxpuJNDPl6v
 jL6E3GIFc+0WdgzBRkGom8hBkZlf+Mb00O1H2X32fRtof/UH4tYvVmm7zE2kzaPSORDIZR0fQ
 w4KfLbLQkJnNGSzCpaB18h1236TleVPB15sDLAa4Puw9nBgbR1y4DnP0vIQucmd/qdNdYNh/L
 h41ONgTEpBFfAp/zDG3Ap+SVwBNcjBP01OQ4fao8RPNSdP37gE1x2QYh5sQC1kvvbJNsEoxCt
 BdafW6fK9UFK9KDFEQrCpgdcGE27WhJvs0JMNNG6deMLqPXdKwD/0jx8YoVsrGWppAW76DjvB
 zUHrrTUjsL6taQMgkdjqeL5RitM9vRcPvpSzPndXpQ3ZZESmzLklf29R3fnP6OthFv7TEnNvl
 7NK+MZfYrRnfXYEZca/t8rU+/x0+HLXedVOoKVz7jP2f9fNfIDyilR4Rll2jFob7rbWCZWg2r
 ahwyr/DXYNvNCybO7OBmuFis0FDu/5Y5/pTKk03VOI7W4Mzzci2zk3vZrIMpl0kMUErm481dT
 F6YzUHdTXnRtMTruEmuKP3AP3hNNzQQMo2VEgjmNNiaYkC0jYkcltNea0h/Om2+xE079cbwap
 2HyU6VoTODhhKJy3/OMxc1gMk05WN8gZyKVUXu/ckX3iUW+zDAOZrg9oH646EA4tSQ1K6SSDT
 eA6T46mrwoXmRrIiDI8hIKss3nmwgohhDbETd7IKz2zm/VrseUModk1Lr521B1uDpkpmGSDko
 PP9Y64RDHFvw3fRAse6rfW8U5EKR81rFPXkM/ldlNovQYhsDIx9r4dYTlzazrYYV9k3Fu8XrH
 UKC+Oyf7f4v0zc2u3CK7WBTUv7NANk1S48tBu78ylmn0FOPQ/JHhytiJVwylA/d4PZh1vCAf6
 qe7xHHA6R5/DiMpRt13XSO0MnPVoC245/rRc+KZCvLD41NKqOdM0KxiVL6o0hkssEemt4bEfb
 He6YUlEDSs0TNPRkxQo+jvcCqfyUPK/Ra/NCgsqLnR5QJr9zJzWDf5J65lAiYwCcK2Lxf6ruq
 JR8H2yfpYu9FmDfl5v8lGzzaPqttct/Rxz6JrAcsVFcP4pHcaruquKpsMbFgyyo/VM1hC/iys
 /icf4vWvQLyC84pz8jJqxgtzoVn0zbYYVAZpcC4Pi5fyjyBHKsHUxNk9mM1rGK6tnXtPjN5dj
 nyp78lkyLu0kJiLfE+5Y4pDIPwLVVhAWNawAp1huvA1zeAefKp6Ji/AGMvpUgPbiPEBoiDIjU
 dL+eCxXRoXzJZHt8z
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 22.02.20 um 20:30 schrieb Dmitry Gutov:
> On 22.02.2020 0:22, Wolfgang Scherer wrote:
>> Both use cases are important for casual users of a VC. Before this
>> research, I did not know anything about SVN, SRC, Bzr, Mtn. Ignore file
>> support in 'vc' as a distilled experience cache does come in handy,
>> even for experienced users. Especially, if escaping/anchoring is
>> implemented.
>
> Escaping/anchoring can be added in the next step of the "series of ad-ho=
c patches".
I'm not saying to implement it now, I am just describing use cases, which =
are not limited to Emacs 27.
>> RCS, SCCS do not have ignore files, so they should error out. SRC has
>> ignore files similar to CVS and SVN.
>
> They will fail anyway because they implement neither 'find-ignore-file' =
nor the 'ignore' backend actions.
This is in reference to the condition-case around find-ignore-file, which =
is not necessary. It is OK to error out in that case.
>
>> Do not forget that CVS and SVN
>> have functions vc-cvs-ignore and vc-svn-ignore, which are called
>> *instead*=C2=A0 of vc-default-ignore. I.e. The changes to vc-default-ig=
nore
>> do not affect those VCs. For the invocation of find-ignore-file in
>> vc-ignore, see below.
>
> I think the patch is compatible with those. At least with the SVN one (v=
c-cvs-ignore might need a little work).
>
> Have you tried this patch with SVN? Is there a particular scenario where=
 it fails?
No, it should not. CVS is now also patched, so it will no longer fail.
>
>>> Roughly and handwavy, we can take this case to mean "use default-direc=
tory".
>> Unfortunately not. If the file or pattern to be ignored is in a
>> subdirectory of default-directory, the DIRECTORY argument must reflect
>> this for CVS, SVN, SRC.
>
> vc-svn-ignore looks like it can handle either calling convention.
As does vc-cvs-ignore. So, for right now, it is OK.
>
>> I apologize for introducing ewoc into vc-dir-mode. Meanwhile I have
>> discovered vc-deduce-fileset, which does all the hard work for
>> preparing a fileset in vc-dir-mode, dired-mode and other
>> modes. vc-deduce-fileset delivers a backend and absolute file names,
>> not relative file names.
>
> Please submit a patch fixing that whenever you have the time.
I don't think it should be done before Emacs 28.
>
>> I think introducing relative file names in
>> function APIs is the wrong way to go. However, as a preliminary
>> solution, it does suffice.
>
> I think it's just fine if the function is supposed to receive an *ignore=
 pattern*, and not a simple file name.

Again, it is probably not the time right now to discuss these matters.

What will be the time frame for starting Emacs 28 topics?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 19:31:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 14:31:05 2020
Received: from localhost ([127.0.0.1]:50005 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5aUT-0006tH-D3
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 14:31:05 -0500
Received: from mail-wr1-f67.google.com ([209.85.221.67]:34588)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j5aUR-0006se-Gc
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 14:31:03 -0500
Received: by mail-wr1-f67.google.com with SMTP id n10so5795577wrm.1
 for <37189 <at> debbugs.gnu.org>; Sat, 22 Feb 2020 11:31:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=REqG+u4iiHj2zOQZlNNIXxIwJ3UJQwnjOWprbLPQCu8=;
 b=sfJXqelED1tQd3EKRg4e0xbA0NlbL4uuB0KMsxGFv/s3hBchpRAK9HGHmg4MPeh77W
 0WpC9r7oX49XMKoyIhpXblUj3cD/fRst2vf3mranHqknErJQgUbtIrJ6YOzriqQfDY/+
 AAJ08Zh8fzoAlEl6MbZbeToGDrcbUK4d1qbsmWK7FRyNpsFj9VVVFXWUYyl+G7Y2OzwJ
 Q5hC6JjZzWFHLiyQjDKydf+BX6v9dPm9AgRm7lcxrw8SuN2BmLGH0CHgYWmXzf/mXECc
 0cwF/riBR+j4OgxIWUCETUjB994QXHQ4j1nK37EziK2GYgzCJjcWk5LEMhMR1HMMtU98
 BMwA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=REqG+u4iiHj2zOQZlNNIXxIwJ3UJQwnjOWprbLPQCu8=;
 b=uUfgfLDGE0fLyB+HH4Pb/PvkVNGJhCoVD2o3a4RiTxRFFJE1vRqPKtW/ik7xvDpy8G
 YY98gCmQzdLoMhNxBsZ6XHQgsmNk49WPBbv63XKvsK5vNszZn8YeFL8srKsUJWePbIZt
 59SUMb6eV1fcDqweFVejhTEG3z0x0nngbz2IxDHAqXSYilfCIoaAjPQqpVu3apMW9xSA
 Oba171Af40EO+AXgVXcgNUBPCqqqWCVT6b6MXtyXJdb1QGSQNBE7QzwicQJ+Srv0jw7Y
 js1JZzI+S0xI631xk+A9iv/Asf4vKkdFWIzqiQ/5aRH4BnPJhpZDro9yZsGyVFx5tW0D
 eSwA==
X-Gm-Message-State: APjAAAUvs5YS2/vnL3FXjSKXODzfSjxFjpaa4CqiXrTAqVoSZ45AkxsQ
 czxewJraIrDF2zrqmeyvFXtL8Oeb
X-Google-Smtp-Source: APXvYqzTvYClM7aHyi0H91bQ309mjcoqhRmFTgsnTTt/cRAyNbFTrsgiyxhQSsZVPjWIibDCy/HcLQ==
X-Received: by 2002:adf:e550:: with SMTP id z16mr57496739wrm.5.1582399857384; 
 Sat, 22 Feb 2020 11:30:57 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id s15sm9849910wrp.4.2020.02.22.11.30.55
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 22 Feb 2020 11:30:56 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <f9934bcd-db8e-b533-aae8-3a6f1e94dc27@HIDDEN>
Date: Sat, 22 Feb 2020 21:30:55 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

On 22.02.2020 0:22, Wolfgang Scherer wrote:
> Both use cases are important for casual users of a VC. Before this
> research, I did not know anything about SVN, SRC, Bzr, Mtn. Ignore file
> support in 'vc' as a distilled experience cache does come in handy,
> even for experienced users. Especially, if escaping/anchoring is
> implemented.

Escaping/anchoring can be added in the next step of the "series of 
ad-hoc patches".

> I think that is the best way to proceed. The correct implementation is
> definitely non-trivial and should not be made in a series of adhoc
> patches.

Let's try to discuss this one first anyway.

> RCS, SCCS do not have ignore files, so they should error out. SRC has
> ignore files similar to CVS and SVN.

They will fail anyway because they implement neither 'find-ignore-file' 
nor the 'ignore' backend actions.

> Do not forget that CVS and SVN
> have functions vc-cvs-ignore and vc-svn-ignore, which are called
> *instead*  of vc-default-ignore. I.e. The changes to vc-default-ignore
> do not affect those VCs. For the invocation of find-ignore-file in
> vc-ignore, see below.

I think the patch is compatible with those. At least with the SVN one 
(vc-cvs-ignore might need a little work).

Have you tried this patch with SVN? Is there a particular scenario where 
it fails?

>> Roughly and handwavy, we can take this case to mean "use default-directory".
> Unfortunately not. If the file or pattern to be ignored is in a
> subdirectory of default-directory, the DIRECTORY argument must reflect
> this for CVS, SVN, SRC.

vc-svn-ignore looks like it can handle either calling convention.

> I apologize for introducing ewoc into vc-dir-mode. Meanwhile I have
> discovered vc-deduce-fileset, which does all the hard work for
> preparing a fileset in vc-dir-mode, dired-mode and other
> modes. vc-deduce-fileset delivers a backend and absolute file names,
> not relative file names.

Please submit a patch fixing that whenever you have the time.

> I think introducing relative file names in
> function APIs is the wrong way to go. However, as a preliminary
> solution, it does suffice.

I think it's just fine if the function is supposed to receive an *ignore 
pattern*, and not a simple file name.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 19:14:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 14:14:20 2020
Received: from localhost ([127.0.0.1]:49999 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5aEF-0006Or-Ve
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 14:14:20 -0500
Received: from mail-wr1-f41.google.com ([209.85.221.41]:38587)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j5aEE-0006Of-Eb
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 14:14:19 -0500
Received: by mail-wr1-f41.google.com with SMTP id e8so5740362wrm.5
 for <37189 <at> debbugs.gnu.org>; Sat, 22 Feb 2020 11:14:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=Qxm10m7dhE451EAecoiFfvw+gBkPB66Ab2BkhnyKQak=;
 b=f4jFAOMc0t+2UeqgXqflGIk87bYoreHhG9dTLoZPIeVdttmvL78nEqcRquK1LXpqCk
 zF14Ud+oNB41wjc1J11oUew7h2K4gvEPbQNOiHsK5trSgIF1t3PlRF2JG+gZj4iWtafP
 2DFd2ZkjAIWjAKZC0X+gkoOyZLPzV5xtnF+B+CFS0CyRflfi/3MC5OzfaaBzIFlrrPCe
 kt9MaNceSl0QwhmasT4/3Y+onbXS5JbEZ5Pi6f2FOT5ghvfQJOddxZ4soYaU+ghrYSgP
 Ng9p011ovECEK3425ud0zzKkB59ihzEJ6cww74wPY+zs/Czh519jx0VW0hrJyz/w7Z3/
 8XZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=Qxm10m7dhE451EAecoiFfvw+gBkPB66Ab2BkhnyKQak=;
 b=CfWw6F9rGl0gJJ+Y0zJcVUYq05MmB/NSFESZCiQ8JKv2Fi9tgaFIUyM2M2YVdwdMj+
 xafnaDrhqphTIqn3NfkTAOhpnhPnHerXb6rr6Ow3202I/AnjikheLjuzG449SjC8sr0p
 RrSBoblT8Xk2Kc+M4SrM+27v8dkA0h6mr1qZE3GpyHv6Gax2F1WL0j6CQ72s+7K5ygEu
 SHXP4kTE5jHZfMWfD2cOz4tU6xurIlAcPjCcVGC6SHemVSfgITG8NVwDGMZui7aL2tHY
 ZHLf9dfL3JJ7xBmuljo0mBa/DUcoLccFvDtRLoT9shkEQCLd1t2Vyj9v0/tngAqKSxZP
 ITnQ==
X-Gm-Message-State: APjAAAUf0a8besk1tt2PVxsJ17TDoyhJT/gT4RiPWI0rq3XR20tIpkha
 UAnxb4HZFxYEGppTUF4tgeLa5gX9
X-Google-Smtp-Source: APXvYqzrVuhMDEl/F6dsGo1L0fa0dnwp04jffrBcTboUQPsBfR4N0i5eEqHh6wbYNTBWNfuHVLJs7Q==
X-Received: by 2002:adf:ffc5:: with SMTP id x5mr57225878wrs.92.1582398852562; 
 Sat, 22 Feb 2020 11:14:12 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id g2sm9303241wrw.76.2020.02.22.11.14.10
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 22 Feb 2020 11:14:11 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>, Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> <83lfouitis.fsf@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <d712e214-8c40-c60a-e927-74e3eaf3f0f9@HIDDEN>
Date: Sat, 22 Feb 2020 21:14:10 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <83lfouitis.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

On 22.02.2020 16:30, Eli Zaretskii wrote:
>> SRC is RCS/SCCS revisited with a modern frontend. It is - just like
>> RCS and SCCS - not recursive. None of its commands work recursively.
> When I actually try this, I see something that confirms my
> understanding:

The SRC discussion is interesting, but since vc-src doesn't implement 
the 'ignore backend command, nor the 'find-ignore-file backend command, 
vc-ignore isn't going to work with it in Emacs 27.

So this VCS's particulars should have little bearing on the current 
discussion.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 14:30:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 09:30:54 2020
Received: from localhost ([127.0.0.1]:48724 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5Vnx-0002s9-JF
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 09:30:53 -0500
Received: from eggs.gnu.org ([209.51.188.92]:36437)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j5Vnu-0002rt-Q7
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 09:30:51 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:53351)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j5Vnp-0001Ki-4m; Sat, 22 Feb 2020 09:30:45 -0500
Received: from [176.228.60.248] (port=3221 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j5Vnn-00030C-Jx; Sat, 22 Feb 2020 09:30:44 -0500
Date: Sat, 22 Feb 2020 16:30:35 +0200
Message-Id: <83lfouitis.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN> (message from
 Wolfgang Scherer on Sat, 22 Feb 2020 14:46:16 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <838slmk90j.fsf@HIDDEN> <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
 <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Sat, 22 Feb 2020 14:46:16 +0100
> 
> >> Both use cases are important for casual users of a VC.
> > I think the issue is not such general, but a more specific one: is the
> > use case of ignoring patterns more important than ignoring particular
> > files, when we are talking about usage through VC?
> How would you measure the importance?

By citing experience and anecdotal evidence, I guess.  Also, by
providing arguments for relative (un)importance of each use case.

> >> SRC has ignore files similar to CVS and SVN.
> > That's not my reading of the SRC source, which simply does
> >
> >                     if line.startswith("#") or not line.strip():
> >                         continue
> >                     elif line.startswith("!"):
> >                         ignorable -= set(glob.glob(line[1:].strip()))
> >                     else:
> >                         ignorable |= set(glob.glob(line.strip()))
> >
> > and the Python documentation, which says:
> >
> >    glob.glob(pathname, *, recursive=False)
> >
> >       Return a possibly-empty list of path names that match pathname,
> >       which must be a string containing a path specification. pathname
> >       can be either absolute (like /usr/src/Python-1.5/Makefile) or
> >       relative (like ../../Tools/*/*.gif), and can contain shell-style
> >       wildcards. Broken symlinks are included in the results (as in
> >       the shell). Whether or not the results are sorted depends on the
> >       file system.
> You are reading this correctly.
> > So Git-style root-directory-only .srcignore files will do for SRC.
> > Which doesn't surprise me at all, because SRC in general copycats
> > Git's behavior in many aspects.
> However, your conclusion is unfounded. You need a root directory and
> recursion for Git-style glob patterns.
> 
> SRC is RCS/SCCS revisited with a modern frontend. It is - just like
> RCS and SCCS - not recursive. None of its commands work recursively.

When I actually try this, I see something that confirms my
understanding:

  ~$ mkdir src_vcs
  ~$ cd src_vcs
  ~/src_vcs$ mkdir .src
  ~/src_vcs$ touch file1
  ~/src_vcs$ mkdir t1
  ~/src_vcs$ touch t1/file1
  ~/src_vcs$ src status t1/file1
  ?       t1/file1
  ~/src_vcs$ cat > .srcignore
  t1/file1
  ^D
  ~/src_vcs$ src status t1/file1
  I       t1/file1
  ~/src_vcs$ src status -a
  ?       .srcignore
  ?       file1
  ?       t1

> There is also no notion of a root directory, i.e. SRC **never** checks
> a parent directory for ignore patterns, which would be necessary for a
> Git-style glob to work.

The first part is true, but if we invoke "src status" from the root
directory, the .srcignore file there will be read, and as the example
above shows, will have its effect.  Right?

> >>> Roughly and handwavy, we can take this case to mean "use default-directory".
> >> Unfortunately not. If the file or pattern to be ignored is in a
> >> subdirectory of default-directory, the DIRECTORY argument must reflect
> >> this for CVS, SVN, SRC.
> > But since CVS and SVN don't use vc-default-ignore, and SRC can do with
> > a single file in the root of the repository, does it really matter in
> > practice?
> 
> IMHO, the goal should be to eliminate both vc-svn-ignore and
> vc-cvs-ignore, replacing the functionality by low-level backend
> functions, which is perfectly possible, iff the ignore file / ignore
> directory is correctly identified: vc-cvs-find-ignore-file,
> vc-svn-ignore-file (just to identify the directory), vc-svn-add-line,
> vc-svn-remove-line (or a combined handler for addition and
> removal). This also results in cheap ignore file support for SRC with
> a single function vc-src-find-ignore-file.

I don't see how this answers my question, sorry.  Even if our
long-term goal is to remove vc-svn/cvs-ignore-file (which are already
backend functions, of course), my question is still valid and
interesting under the current situation, to which Dmitry's suggestion
above pertained, AFAIU.  So we might consider his suggestion "good
enough" under the current situation.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 13:46:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 08:46:28 2020
Received: from localhost ([127.0.0.1]:48690 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5V6x-0001fW-Sv
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 08:46:28 -0500
Received: from mout.gmx.net ([212.227.15.18]:35537)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5V6w-0001fF-0V
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 08:46:26 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582379179;
 bh=OHBQvSJ+LCJwZubCHIBkOhrN0X/WpfWyVMS5WZF6EvM=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=Jb7VJt/jJ/XlAlp6svoU6VLRy9rFOcwtN/MFAF0wBbC/PQjm524lF5wJyZvBQfnaf
 pSGm0sQKWXkxcIGxEROr0pxt4Re2ki+stYMiVjnBuqw4tWSkKj0D2xCE96AkoPXXt6
 EDGWCMf7rgwgxkniOx1t0nsXxECuG50DwCl11Ln4=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MTAFh-1j0KJg2S8V-00UXBP; Sat, 22
 Feb 2020 14:46:19 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 0E1EF19431F1;
 Sat, 22 Feb 2020 14:46:16 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <838slmk90j.fsf@HIDDEN> <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN>
 <83h806gp2w.fsf@HIDDEN> <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
 <8336bmg1o9.fsf@HIDDEN> <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> <835zfzjcbv.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <bb5ad2ce-5bfd-5b1f-3354-92da926844fc@HIDDEN>
Date: Sat, 22 Feb 2020 14:46:16 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <835zfzjcbv.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:/YVrF6QYDJNm4aSYznd/gpUcIeWu7PNGpaML3xzN8Wbog/twhGh
 83XQzVr23K1Xto56H5I+5sega74Yu5KZJYjmRSS1CWJad2pj/GApzBtfV0v5trroeFg0qrR
 nkp4f4k1W4WXVU62IiRv3dTE4A9hg3vxbltnxxcG3FleAVgzqNc20XS2N8I7wrKQ/QpNVSx
 ldNWBRocTct07vcaQgRbw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:z6FEYOfKc/8=:xpTC2XIArF9CYoN6/VBDqk
 /t3zNpUX53LKwaKKNg0xtQjeCUF90ZXH4/NefCd/gJqo9ZTZH2Gqyzj16Olrn0hCAW3ft5HtG
 AtKV18ahrJYX6ZaSIu0qu8DwVjajNDMSNYY+WbCiUsb+jU9fpoNcZ3aUD2MUZGcmVYw6hkpMR
 D5AesfBYjRkc9o+c+T2pcmuaDzRiBX0csP53yQ30fK2N1RGKHi97zg7pbgauaFbG9C2GQVtnZ
 ev3jJxfKlVj43NxGcXdWYyOo3ey3FDtNYTESGmRGacjDfZpF/x3mwlR6sxxURSL5rF5Ui01z4
 eYfZC8gaf8s2PLDg1oZnOl+NavJL4NsoScOOX5ZQZDj7uAZk5fvZKA6w5SYBD1Fx/gkiwDyDM
 vwpXsUlx1/9BXwAEaCXnLRA5KbE+j3xIoGNuQGLHoffnodELdxAW1Bh9AoHGhYKwTJhkAj1B7
 BhLIHF9tm4tKyk9LAKQxlfuGisHQDa3AvTf+d/Ph/ZQMP+iv0Q7KXNQVFIcU5yUwiaWGACDID
 Ogu9o1bCvk33l2vjGiAqsYpWdlOLspeq/LjK+3BGF1/weJTkDdEzckKcgzHnZF38hWtnYUvaz
 BRF0NF8CLTMMK2ZKxZCgkecU2jCRGcMIWlxQwuEMhP53wPeLcmj/QsnZy9UAAIyWQF1E/kxEH
 eE8v3diVejekmDEZ68FrLnRSqibOMZGOYi5krOmGoodflktSdHe5Fz2oj6Xnvh3LfnEW0YM/x
 F5jwdB/w8cznEs/BQpNw3573sbtfYJhmACMb5M1SGdCXdvJh4xyWg7sTaAQlmqladQ9xePXMf
 5wzjzNBOQBRsydYXdW/F0kLReAzv7zbdhpLng3t97Xrx6DR4wh8EYdkVqRPNmfLZ8eI2HNSde
 usRlpevZHRY1gQcT2NEpeFLFHw/WrviKB4t5yQIVYZ3HRFVpW27RfHGh5aeoy+W04ALZ+Hbi1
 CYfuEnXxKN3kk+8h3TpAcBY0zgBURtqj1Cq8cHDcH4O3QIEWKvobmgvgbgYde0BvtFfnr9sst
 Nd9SJIGD47mD2/+NkVQspwVt7OZBMFmNicv5iV/WpDXeDFD8Tuc3r6wP1BxPoRwABlMEhnQ2O
 F7PYFwnAzW3O1xhUez/1gVxuXn4TH64WOYm3D/0I2W0eVUwXOsOL8RnF8ArbbIy1+JMTMVAxB
 6xq03JzuTjjxMnUBSYL9/4eicdth37aNy3FmgwTNO1YcfdIQIq7iHRJxxFZKB8Wz2H3H9NYS6
 aJItJkaa34a8Ko3g6
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 22.02.20 um 08:44 schrieb Eli Zaretskii:
>> Cc: 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Fri, 21 Feb 2020 23:22:18 +0100
>>
>>> Now, one could argue that one use case is more important than the othe=
r one, and that vc-ignore has for a while been geared toward entering plai=
n file names rather than glob patterns. I have little opinion on this subj=
ect, however, since I mostly edit ignore files by hand, and do so very rar=
ely. So as far as I'm concerned, we could remove this feature altogether a=
nd not lose much.
>> Both use cases are important for casual users of a VC.
> I think the issue is not such general, but a more specific one: is the
> use case of ignoring patterns more important than ignoring particular
> files, when we are talking about usage through VC?
How would you measure the importance?

When files are properly escaped, it is possible to emulate patterns by
ignoring all matching files separately without knowing the exact
pattern syntax. This reduces the effort to marking the appropriate files
and pressing=C2=A0 C-u G=C2=A0 in vc-dir-mode.

The other way around is a lot harder, since it fails without a working
knowledge of ignore patterns in the context of a specific VCS. As you
demonstrate below for SRC.

My personal strategy with Mercurial has been to use the ignore file
feature (in DVC) to get a properly escaped file path, then edit
=C2=A0.hgignore=C2=A0 to modify the full path to work as a pattern. So, ye=
s I
can do very well without the pattern use case, but not really without
the file path use case.
>> SRC has ignore files similar to CVS and SVN.
> That's not my reading of the SRC source, which simply does
>
>                     if line.startswith("#") or not line.strip():
>                         continue
>                     elif line.startswith("!"):
>                         ignorable -=3D set(glob.glob(line[1:].strip()))
>                     else:
>                         ignorable |=3D set(glob.glob(line.strip()))
>
> and the Python documentation, which says:
>
>    glob.glob(pathname, *, recursive=3DFalse)
>
>       Return a possibly-empty list of path names that match pathname,
>       which must be a string containing a path specification. pathname
>       can be either absolute (like /usr/src/Python-1.5/Makefile) or
>       relative (like ../../Tools/*/*.gif), and can contain shell-style
>       wildcards. Broken symlinks are included in the results (as in
>       the shell). Whether or not the results are sorted depends on the
>       file system.
You are reading this correctly.
> So Git-style root-directory-only .srcignore files will do for SRC.
> Which doesn't surprise me at all, because SRC in general copycats
> Git's behavior in many aspects.
However, your conclusion is unfounded. You need a root directory and
recursion for Git-style glob patterns.

SRC is RCS/SCCS revisited with a modern frontend. It is - just like
RCS and SCCS - not recursive. None of its commands work recursively.

There is also no notion of a root directory, i.e. SRC **never** checks
a parent directory for ignore patterns, which would be necessary for a
Git-style glob to work.

Here is a quote from SRC's mission statement:

http://www.catb.org/~esr/src/FAQ.html:

=C2=A0=C2=A0=C2=A0 You are certainly free to suggest features, but SRC is =
developed
=C2=A0=C2=A0=C2=A0 with extreme conservatism as to what features to implem=
ent or
=C2=A0=C2=A0=C2=A0 not. Remember, single-file, single-user, private VCS.

This means implicitely, that there is no recursion into
sub-directories by design. The=C2=A0 vc=C2=A0 package just emulates recurs=
ive
operation for RCS, SCCS, SRC. This works fine for RCS and SCCS, since
RCS can be invoked on files in a subdirectory and works properly,
e.g.:

=C2=A0=C2=A0=C2=A0 rcs log sub/data

However, SRC currently fails in that scenario, actually destroying the
repository identity. Which also means, that operations on
sub-directories in=C2=A0 vc-dir-mode=C2=A0 fail destructively. I have not =
yet
reported this issue for Emacs, but to ESR at
https://gitlab.com/esr/src/issues/14, to see, whether SRC can be
repaired.

If SRC is not repaired, it would probably be best to disable recursive
operations in=C2=A0 vc , since the patch to repair=C2=A0 vc-src.el=C2=A0 i=
s a bit
ugly and the result is not even close to perfect
(https://gitlab.com/esr/src/uploads/ca532d65dbb07afcb2144afbded1b368/0001-=
Run-SRC-commands-separately-and-normalized-for-each-.patch).
>>> Roughly and handwavy, we can take this case to mean "use default-direc=
tory".
>> Unfortunately not. If the file or pattern to be ignored is in a
>> subdirectory of default-directory, the DIRECTORY argument must reflect
>> this for CVS, SVN, SRC.
> But since CVS and SVN don't use vc-default-ignore, and SRC can do with
> a single file in the root of the repository, does it really matter in
> practice?

IMHO, the goal should be to eliminate both vc-svn-ignore and
vc-cvs-ignore, replacing the functionality by low-level backend
functions, which is perfectly possible, iff the ignore file / ignore
directory is correctly identified: vc-cvs-find-ignore-file,
vc-svn-ignore-file (just to identify the directory), vc-svn-add-line,
vc-svn-remove-line (or a combined handler for addition and
removal). This also results in cheap ignore file support for SRC with
a single function vc-src-find-ignore-file.

It also means, that escaping/anchoring does not have to be integrated
in 3 or 4 places but only once in vc-default-ignore or vc-ignore.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 22 Feb 2020 07:44:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 02:44:39 2020
Received: from localhost ([127.0.0.1]:48537 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5PSp-00073N-KJ
	for submit <at> debbugs.gnu.org; Sat, 22 Feb 2020 02:44:39 -0500
Received: from eggs.gnu.org ([209.51.188.92]:38441)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j5PSl-000738-6o
 for 37189 <at> debbugs.gnu.org; Sat, 22 Feb 2020 02:44:38 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:49910)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j5PSf-0002oW-Fe; Sat, 22 Feb 2020 02:44:29 -0500
Received: from [176.228.60.248] (port=1550 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j5PSe-0005RJ-W7; Sat, 22 Feb 2020 02:44:29 -0500
Date: Sat, 22 Feb 2020 09:44:20 +0200
Message-Id: <835zfzjcbv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN> (message from
 Wolfgang Scherer on Fri, 21 Feb 2020 23:22:18 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
 <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Fri, 21 Feb 2020 23:22:18 +0100
> 
> > Now, one could argue that one use case is more important than the other one, and that vc-ignore has for a while been geared toward entering plain file names rather than glob patterns. I have little opinion on this subject, however, since I mostly edit ignore files by hand, and do so very rarely. So as far as I'm concerned, we could remove this feature altogether and not lose much.
> 
> Both use cases are important for casual users of a VC.

I think the issue is not such general, but a more specific one: is the
use case of ignoring patterns more important than ignoring particular
files, when we are talking about usage through VC?

> SRC has ignore files similar to CVS and SVN.

That's not my reading of the SRC source, which simply does

                    if line.startswith("#") or not line.strip():
                        continue
                    elif line.startswith("!"):
                        ignorable -= set(glob.glob(line[1:].strip()))
                    else:
                        ignorable |= set(glob.glob(line.strip()))

and the Python documentation, which says:

   glob.glob(pathname, *, recursive=False)

      Return a possibly-empty list of path names that match pathname,
      which must be a string containing a path specification. pathname
      can be either absolute (like /usr/src/Python-1.5/Makefile) or
      relative (like ../../Tools/*/*.gif), and can contain shell-style
      wildcards. Broken symlinks are included in the results (as in
      the shell). Whether or not the results are sorted depends on the
      file system.

So Git-style root-directory-only .srcignore files will do for SRC.
Which doesn't surprise me at all, because SRC in general copycats
Git's behavior in many aspects.

> > Roughly and handwavy, we can take this case to mean "use default-directory".
> Unfortunately not. If the file or pattern to be ignored is in a
> subdirectory of default-directory, the DIRECTORY argument must reflect
> this for CVS, SVN, SRC.

But since CVS and SVN don't use vc-default-ignore, and SRC can do with
a single file in the root of the repository, does it really matter in
practice?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 21 Feb 2020 22:22:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 21 17:22:32 2020
Received: from localhost ([127.0.0.1]:48313 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j5Ggp-0007L4-Rm
	for submit <at> debbugs.gnu.org; Fri, 21 Feb 2020 17:22:32 -0500
Received: from mout.gmx.net ([212.227.15.15]:40349)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j5Ggo-0007Kp-0s
 for 37189 <at> debbugs.gnu.org; Fri, 21 Feb 2020 17:22:30 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1582323743;
 bh=nHw9cnrcg881e77pUr6FFHZPwFh5vs6vGdfZI+jSd64=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=JfZTiZiUmk2v6E8gc9VJfrGn2xqlZJV5uOH7+3dQvlyYlTSY9m4H0KvjdnJhjkSnU
 o/qyzMRvcg2Uj8DBAxdT+m0rWT6Us5eXQkeGtCf5Mas2x75LNwM8n7BpoX+jJ7+C3d
 0tO788NMl/izajzlKx2Lcaj6jCo24GHqD3A0e1dY=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MdvqW-1jgGCH1Mwg-00b2pc; Fri, 21
 Feb 2020 23:22:23 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 2DABF19431F0;
 Fri, 21 Feb 2020 23:22:19 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <2f84ddff-3275-6eb1-01ae-ff1d28b6e8da@HIDDEN>
Date: Fri, 21 Feb 2020 23:22:18 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:rRoWYT54JTcOeIszS1Pw5MjUa3sP0CttoLKqdGGChX4RbgecZdq
 YNdN3fyjk4G/WuMuIofwBvcTZGpLAkMrzxQUaEnmjb65M3/NESuK/RqZUjt+8cQbDHzaQpr
 DwmTgWoxBf/rC/tusPvH1ZMY3LivGZ/oTmCy/WSx2SJwaN+zHo2gHH8eDJ8VOyOnMmFfU/6
 JH/c/xDQo2Q6ZDZpoXCxw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:ONiKE0oEKQw=:LOG1k+d3bUJOoyfyxa52zq
 4ewGpVFUKX8j8DjqUAEKISsMkXsjIzDdpe0iL1ceE51yUazL+2Potiq0huHtFAgnYxcba9Pmp
 MxOR5QB5AmyQZHBmmKhKv9YyfLNV8ZOrP15I8/YmM31Eqviv8pY81hUEiUfw+69Geq09SEzAo
 XvTjwF+fUVT+11Q7/JrRBC3yZI1a7ecCJtGdDKTz8ubZ2O9Vv8YTQlRvkgVcUzIHtfn6rhgFf
 cS7POC2/CjZuJJt+xaWDT7yP+B9/iAnOXVS0yQ6wB3bBiGWpZWB5EzFNhaHNtj378qEayhj0M
 S+q1Dt1So6Lgp8n+5zXhCMgzzUszL6nSlLEsbUXMG7w1TrOgtGJAV1FlBy5UVyC2QZlwEfMW+
 vFLv7oqN0vpCErwoC3wdTPTAmuhotgZBdMIHDLC6q5tDL3sgALgrhQNlgRtX3Il1yOuKQk4p3
 vZ1C5cuqaKn0loNEP5rFpTFGYqwchKgIaleRvmkFjQHHAUhD72+kJdYDQyUBSPMDsFVK6UTk6
 7AdAClrLC7UDeXGSvZ/+9W1NvUhfWWvN4XAXf3LUpIp0XgajHswhG35Qe26bDET7XBzH9fR/J
 rfTIrvSmVa4c6hB3L7EbDLR6U62s3XavM5WBMEGtjl0pJriNDfaFPqKqHKkIXXelNgS8nic9w
 /kvAmH2PzAKU+SP9CGNRqwuGMrGLAaRNUuHs1m/2I0zOQpHIo+9TdonZngcnih/xtfem9GaNX
 L+MrxA6NgYd0YC2viM9/OjwBgwiqKbabzLFWtjalkCZ3jkxRb4i4kzVGhrYoS/acfI3tXn5tO
 N/rppYwTtyUiM/tmWdYcvCVz6BRnoNktKU+Wc/PKjM4oHZyn+uHGTlhrmeJmH/asYC+oCCext
 43YH2UhFd4/pBbkVNR4BH40YexNT5PcjqqxFPapLW6oTjHx9oW8DM/UoNLViiItg9Gg3hGv89
 z60nhfCwpJ2zm0kSIh1kMgtjqYJFi+aOv0kXjyaLdTPeEqvnuqnSDQrWnuqpBqZo3QqRWGEeb
 lOBKCI/R1o0xcQZ2YzTNtzRoNuEWMFOLArqNAHonFBQh0PH7AoWS48pKXiQysofPtMoJsg+C6
 Z7NJucyEiMF9eycSdoaXGcYhMs5BYo5arHABUrrN8AY7KEt02jCT3XZTjsOVMEdqixtf+cNfu
 Oi77eGFLXtfFBfUSZwdbn9DZaaqKbSW0n6dyHYOGicSHHgPvBCLeG0Zq4QVmK/HIN0InYGcZQ
 dFFtc1pc0ywgiJHom
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 21.02.20 um 01:05 schrieb Dmitry Gutov:
> On 14.02.2020 11:23, Eli Zaretskii wrote:
>>> Cc: 37189 <at> debbugs.gnu.org
>>> From: Dmitry Gutov <dgutov@HIDDEN>
>>> Date: Fri, 14 Feb 2020 01:40:31 +0200
>>>
>>> I think the first thing I'll have to do is revert a part of an earlier
>>> patch to vc-default-ignore which changed its semantics a little, becau=
se
>>> it doesn't look like this discussion is going to culminate in a patch
>>> small enough for emacs-27 anyway.
>>
>> Which part?=C2=A0 Can you show a proposed patch?
>
> See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37217.
>
> The patch fixed a legitimate scenario, but made an existing one work wor=
se. Trying to vc-ignore, say, '*.c' from a subdirectory in a Git repo, for=
 instance, will now prepend the intermediary directories to it.
>
> (Mentioned this before: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D=
37189#41)
>
> Now, one could argue that one use case is more important than the other =
one, and that vc-ignore has for a while been geared toward entering plain =
file names rather than glob patterns. I have little opinion on this subjec=
t, however, since I mostly edit ignore files by hand, and do so very rarel=
y. So as far as I'm concerned, we could remove this feature altogether and=
 not lose much.
Both use cases are important for casual users of a VC. Before this
research, I did not know anything about SVN, SRC, Bzr, Mtn. Ignore file
support in 'vc' as a distilled experience cache does come in handy,
even for experienced users. Especially, if escaping/anchoring is
implemented.
>
> But maybe it's more valuable for SVN users? Where the ignore configurati=
on is more tricky and the DIRECTORY argument is actually important.
For SVN users it is extremely useful, since there are no files that
can be edited. Commands must be issued to store ignore
patterns. However, the commands cannot add patterns to existing
patterns, so the existing patterns have to be read and a new pattern
added, before writing everything back. That is pretty much work and
support by emacs as frontend is very valued.
>
> So the options at hand are:
>
> - Revert almost all of the patch from bug#37217, reverting to the previo=
us, admittedly broken behavior, and continue to discuss a better improveme=
nt for Emacs 28.
I think that is the best way to proceed. The correct implementation is
definitely non-trivial and should not be made in a series of adhoc
patches.
> - Try to resolve the ambiguity of purpose in favor either entering patte=
rns on file names only. Probably the latter, later vc-ignore to vc-ignore-=
file.
I have never seen the pattern feature before, but since I implemented
it now, I have come to realize that it is very useful, when combined
with pre-escaped and anchored patterns from the current file in
vc-dir-mode and dired-mode. It is extremely useful for regex pattern
syntax, where patterns are a lot more ambiguous and need more
attention than patterns with glob syntax.
> - Try to sit on both chairs... Basically, that means using the user inpu=
t unaltered. Allowing them to enter a file name as well, but treat it as a=
 pattern, without escaping or the like. This would be close to the origina=
l intent behind vc-ignore, AFAICT.
Pre-escaped and anchored is very useful. But unmodified ist a good
starting point.
> To do the last one, read-file-name would need to be called with the seco=
nd argument provided, the directory against which the file path should be =
relative. For most backend, we can reuse the find-ignore-file backend comm=
and, but SVN (and RCS, etc) don't have it defined.
RCS, SCCS do not have ignore files, so they should error out. SRC has
ignore files similar to CVS and SVN. Do not forget that CVS and SVN
have functions vc-cvs-ignore and vc-svn-ignore, which are called
*instead* of vc-default-ignore. I.e. The changes to vc-default-ignore
do not affect those VCs. For the invocation of find-ignore-file in
vc-ignore, see below.
> Roughly and handwavy, we can take this case to mean "use default-directo=
ry".
Unfortunately not. If the file or pattern to be ignored is in a
subdirectory of default-directory, the DIRECTORY argument must reflect
this for CVS, SVN, SRC.
>
> As you noted, the use of read-file-name at all in vc-ignore is somewhat =
problematic, but let's see if we can keep the function sane without removi=
ng it first.
I would not change it for Emacs 27.
>
> Attaching a patch. Eli, Wolfgang, any objections?

As mentioned above, for CVS, SVN, SRC default-directory is not
necessarily the correct rel-dir. This would be better:

=C2=A0=C2=A0 (let* ((backend (vc-responsible-backend default-directory))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (file (read-file-na=
me "File to ignore: "))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (rel-dir
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (condition-ca=
se nil
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (file-name-directory
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (vc-call-backend backend 'find-ignore-file
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 default-directory))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (=
vc-not-supported
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 (file-name-directory
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (directory-file-name (expand-file-name file)))))))
=C2=A0=C2=A0=C2=A0=C2=A0 (when (and (file-name-absolute-p file)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (file-in-directory-p file rel-dir))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (setq file (file-relative-name file r=
el-dir)))
=C2=A0=C2=A0=C2=A0=C2=A0 (list file
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 rel-dir
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 current-prefi=
x-arg)))

I apologize for introducing ewoc into vc-dir-mode. Meanwhile I have
discovered vc-deduce-fileset, which does all the hard work for
preparing a fileset in vc-dir-mode, dired-mode and other
modes. vc-deduce-fileset delivers a backend and absolute file names,
not relative file names. I think introducing relative file names in
function APIs is the wrong way to go. However, as a preliminary
solution, it does suffice.
>>> Then, naturally, we'll have to look for small changes that improve the
>>> situation but provide as little breakage as possible.
>>
>> Agreed.

Definitely.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 21 Feb 2020 08:10:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 21 03:10:44 2020
Received: from localhost ([127.0.0.1]:46320 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j53OW-0002ko-Ny
	for submit <at> debbugs.gnu.org; Fri, 21 Feb 2020 03:10:44 -0500
Received: from eggs.gnu.org ([209.51.188.92]:39702)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j53OV-0002kY-RQ
 for 37189 <at> debbugs.gnu.org; Fri, 21 Feb 2020 03:10:44 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:44682)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j53OQ-0006sh-I2; Fri, 21 Feb 2020 03:10:38 -0500
Received: from [176.228.60.248] (port=1761 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j53OP-0003d6-KD; Fri, 21 Feb 2020 03:10:38 -0500
Date: Fri, 21 Feb 2020 10:10:26 +0200
Message-Id: <83o8tsjr7x.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Dmitry Gutov <dgutov@HIDDEN>
In-reply-to: <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN> (message from
 Dmitry Gutov on Fri, 21 Feb 2020 02:05:50 +0200)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
 <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, Wolfgang.Scherer@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: 37189 <at> debbugs.gnu.org, Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> From: Dmitry Gutov <dgutov@HIDDEN>
> Date: Fri, 21 Feb 2020 02:05:50 +0200
> 
> Attaching a patch. Eli, Wolfgang, any objections?

I only skimmed over it, and certainly didn't try it, but it looks OK
to me, thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 21 Feb 2020 00:06:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 20 19:06:01 2020
Received: from localhost ([127.0.0.1]:46109 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j4vpQ-00053x-MO
	for submit <at> debbugs.gnu.org; Thu, 20 Feb 2020 19:06:01 -0500
Received: from mail-wr1-f54.google.com ([209.85.221.54]:43227)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j4vpP-00053k-Bb
 for 37189 <at> debbugs.gnu.org; Thu, 20 Feb 2020 19:06:00 -0500
Received: by mail-wr1-f54.google.com with SMTP id r11so21133wrq.10
 for <37189 <at> debbugs.gnu.org>; Thu, 20 Feb 2020 16:05:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language;
 bh=xut4NBzXifoe7kSsvbdGjGQgM9KcsPU41xz4nwrEQK4=;
 b=BxViCo/7qJCgRc5N8/hB447HUf+Yo0AKK16DU2p7qFHhalBQmhCdrxiMuRyFaJZPZL
 DUi0pArzVV+1uCR36WwK9ZoQ4BljD+pP1vIWOOfOohXqOHv4j58lqF/IjvNKe4PAZyJB
 bYtXSiFzLD9tcfxLFvVFY3trPcbIi3zxqraOEKhIjvJzbTdgtj3PDFTMg1Rr1I4javkL
 H3OiBvpRbuA3gbbeTGOPJgbWPGzLNecg3UN6ejIomoINJ7GisGVi1itxAqMhAiFAh/ku
 +9BvqwfU2P7uqe1PfapsGiZrAszqa7UqqGHcEDZrqQZr55ZtO6rjTAqr1/XaR1eOi7Cd
 eSNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language;
 bh=xut4NBzXifoe7kSsvbdGjGQgM9KcsPU41xz4nwrEQK4=;
 b=nW/G4O8fY3c85d4xZkJoFFQpKIa2awatSGaeIFEc+tjm4CttBbJuqNBbtSGrX/owgV
 nRzV4FUMMJ23fJw9V4Y5MBg+HXtakg+a7Ckhh5VCkRJezUd2aT0s2jBI74Z97FTf1bta
 5A8HktGJrl7ceCUaFuG7W8HC7zAyCzGoX1PyjTjJX0S5j4PrJQNZzTk7v79KngH+EyC3
 UMumScaD44MVDVJZn5m44UidcuXTVHRg5Ux7T2jXU2z9PGfwwY4UipCeY/rh3eGbyLBH
 nxQKRGUFfQrWXgZVcnaqCv7t60leRtV5qfskXDHtGqPx4YqswEqJQc1xRtD+VpTYKRj6
 98Dg==
X-Gm-Message-State: APjAAAVQW9ZD7V5JRfB2lNzyFZmNvIH1rnil53wR5h3k7qm3y59miCdt
 y5NCaO1lbWVK/4ZEfiKzNQI=
X-Google-Smtp-Source: APXvYqx9RYwMxgFGq88EpPEdwkwpbNvYzRiZi+wWZshQwT8m7ReS2iBN+gjiCy9iBrCbI3M625ZbtQ==
X-Received: by 2002:a5d:614a:: with SMTP id y10mr46760521wrt.73.1582243553415; 
 Thu, 20 Feb 2020 16:05:53 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id c15sm1540178wrt.1.2020.02.20.16.05.51
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 20 Feb 2020 16:05:52 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> <83ftfdplo8.fsf@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <9929b44f-37da-23c8-16cc-c6ca89602149@HIDDEN>
Date: Fri, 21 Feb 2020 02:05:50 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <83ftfdplo8.fsf@HIDDEN>
Content-Type: multipart/mixed; boundary="------------D2612A5E2B24387BABF1E3D5"
Content-Language: en-US
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

This is a multi-part message in MIME format.
--------------D2612A5E2B24387BABF1E3D5
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit

On 14.02.2020 11:23, Eli Zaretskii wrote:
>> Cc: 37189 <at> debbugs.gnu.org
>> From: Dmitry Gutov <dgutov@HIDDEN>
>> Date: Fri, 14 Feb 2020 01:40:31 +0200
>>
>> I think the first thing I'll have to do is revert a part of an earlier
>> patch to vc-default-ignore which changed its semantics a little, because
>> it doesn't look like this discussion is going to culminate in a patch
>> small enough for emacs-27 anyway.
> 
> Which part?  Can you show a proposed patch?

See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37217.

The patch fixed a legitimate scenario, but made an existing one work 
worse. Trying to vc-ignore, say, '*.c' from a subdirectory in a Git 
repo, for instance, will now prepend the intermediary directories to it.

(Mentioned this before: 
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37189#41)

Now, one could argue that one use case is more important than the other 
one, and that vc-ignore has for a while been geared toward entering 
plain file names rather than glob patterns. I have little opinion on 
this subject, however, since I mostly edit ignore files by hand, and do 
so very rarely. So as far as I'm concerned, we could remove this feature 
altogether and not lose much.

But maybe it's more valuable for SVN users? Where the ignore 
configuration is more tricky and the DIRECTORY argument is actually 
important.

So the options at hand are:

- Revert almost all of the patch from bug#37217, reverting to the 
previous, admittedly broken behavior, and continue to discuss a better 
improvement for Emacs 28.
- Try to resolve the ambiguity of purpose in favor either entering 
patterns on file names only. Probably the latter, later vc-ignore to 
vc-ignore-file.
- Try to sit on both chairs... Basically, that means using the user 
input unaltered. Allowing them to enter a file name as well, but treat 
it as a pattern, without escaping or the like. This would be close to 
the original intent behind vc-ignore, AFAICT.

To do the last one, read-file-name would need to be called with the 
second argument provided, the directory against which the file path 
should be relative. For most backend, we can reuse the find-ignore-file 
backend command, but SVN (and RCS, etc) don't have it defined. Roughly 
and handwavy, we can take this case to mean "use default-directory".

As you noted, the use of read-file-name at all in vc-ignore is somewhat 
problematic, but let's see if we can keep the function sane without 
removing it first.

Attaching a patch. Eli, Wolfgang, any objections?

>> Then, naturally, we'll have to look for small changes that improve the
>> situation but provide as little breakage as possible.
> 
> Agreed.

Alas, the attached patch is probably not a "small" one. Option 1 would 
pass this criterion, though.

> 1) vc-dir-ignore:
> 
> It calculates the file name for the entry into the ignore file, and
> thus must escape any characters in the file name that are special in
> ignore files -- which is backend-specific.
> 
> The file name should also be "anchored", at least ideally, so that no
> other file is accidentally ignored.  This is also backend-specific.

I think we can add a new backend action that would escape and anchor a 
file name (and maybe turn it from an absolute into a relative one). That 
should take care of it.

> VC's support for directory-specific ignore files is inconsistent: they
> are supported for CVS (and actually mandatory there) and maybe SVN,
> but not for Git/Bazaar/Mercurial/Monotone -- for the latter we only
> support ignore files in the repository root.  This could be improved
> in the future, but for now I don't see an immediate need.

Agreed.

> For the same reason, using read-file-name here is too naïve, as well
> as yielding an absolute file name from what the user types.

For now, I kept the former but decided against the latter.

> If you agree with the above, we then need to decide what, if anything,
> of this should be fixed for Emacs 27.  E.g., vc-dir-ignore seems to be
> OK if the file name doesn't include special characters, does it?

With the attached patch, it needed a small adjustment, but with that 
should work okay-ish again.

--------------D2612A5E2B24387BABF1E3D5
Content-Type: text/x-patch;
 name="vc-ignore.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="vc-ignore.diff"

diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 033cb27e33..e5c5e16a17 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -879,7 +879,9 @@ vc-dir-ignore
 	   (vc-ignore (vc-dir-fileinfo->name filearg))
 	   t))
        vc-ewoc)
-    (vc-ignore (vc-dir-current-file))))
+    (vc-ignore
+     (file-relative-name (vc-dir-current-file))
+     default-directory)))
 
 (defun vc-dir-current-file ()
   (let ((node (ewoc-locate vc-ewoc)))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index ec252b74d4..72bd4d3910 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1406,16 +1406,21 @@ vc-ignore
 prefix argument is given, in which case prompt for a file FILE to
 remove from the list of ignored files."
   (interactive
-   (list
-    (if (not current-prefix-arg)
-        (read-file-name "File to ignore: ")
-      (completing-read
-       "File to remove: "
-       (vc-call-backend
-        (or (vc-responsible-backend default-directory)
-            (error "Unknown backend"))
-        'ignore-completion-table default-directory)))
-    nil current-prefix-arg))
+   (let* ((backend (vc-responsible-backend default-directory))
+          (rel-dir
+           (condition-case nil
+               (file-name-directory
+                (vc-call-backend backend 'find-ignore-file
+                                 default-directory))
+             (vc-not-supported
+              default-directory)))
+          (file (read-file-name "File to ignore: ")))
+     (when (and (file-name-absolute-p file)
+                (file-in-directory-p file rel-dir))
+       (setq file (file-relative-name file rel-dir)))
+     (list file
+           rel-dir
+           current-prefix-arg)))
   (let* ((directory (or directory default-directory))
 	 (backend (or (vc-responsible-backend default-directory)
                       (error "Unknown backend"))))
@@ -1423,23 +1428,18 @@ vc-ignore
 
 (defun vc-default-ignore (backend file &optional directory remove)
   "Ignore FILE under the VCS of DIRECTORY (default is `default-directory').
-FILE is a wildcard specification, either relative to
-DIRECTORY or absolute.
+FILE is a wildcard specification relative to DIRECTORY.
 When called from Lisp code, if DIRECTORY is non-nil, the
 repository to use will be deduced by DIRECTORY; if REMOVE is
 non-nil, remove FILE from ignored files.
 Argument BACKEND is the backend you are using."
   (let ((ignore
-	 (vc-call-backend backend 'find-ignore-file (or directory default-directory)))
-	file-path root-dir pattern)
-    (setq file-path (expand-file-name file directory))
-    (setq root-dir (file-name-directory ignore))
-    (when (not (string= (substring file-path 0 (length root-dir)) root-dir))
-      (error "Ignore spec %s is not below project root %s" file-path root-dir))
-    (setq pattern (substring file-path (length root-dir)))
+         (vc-call-backend backend
+                          'find-ignore-file
+                          (or directory default-directory))))
     (if remove
-	(vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") ignore)
-      (vc--add-line pattern ignore))))
+        (vc--remove-regexp (concat "^" (regexp-quote file) "\\(\n\\|$\\)") ignore)
+      (vc--add-line file ignore))))
 
 (defun vc-default-ignore-completion-table (backend file)
   "Return the list of ignored files under BACKEND."

--------------D2612A5E2B24387BABF1E3D5--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 16 Feb 2020 02:30:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 15 21:30:11 2020
Received: from localhost ([127.0.0.1]:36626 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j39hD-0008DM-Dg
	for submit <at> debbugs.gnu.org; Sat, 15 Feb 2020 21:30:11 -0500
Received: from eggs.gnu.org ([209.51.188.92]:58203)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rms@HIDDEN>) id 1j39h6-0008BA-DQ
 for 37189 <at> debbugs.gnu.org; Sat, 15 Feb 2020 21:30:04 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58056)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <rms@HIDDEN>)
 id 1j39h0-0003iY-RE; Sat, 15 Feb 2020 21:29:58 -0500
Received: from rms by fencepost.gnu.org with local (Exim 4.82)
 (envelope-from <rms@HIDDEN>)
 id 1j39gz-00014d-N0; Sat, 15 Feb 2020 21:29:57 -0500
Content-Type: text/plain; charset=Utf-8
From: Richard Stallman <rms@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-Reply-To: <6e5ece91-0f27-2f2a-0557-deecd07112ac@HIDDEN> (message from
 Wolfgang Scherer on Fri, 14 Feb 2020 02:49:33 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83d0air0bs.fsf@HIDDEN>
 <E1j2O8s-00082O-Vf@HIDDEN>
 <6e5ece91-0f27-2f2a-0557-deecd07112ac@HIDDEN>
Message-Id: <E1j39gz-00014d-N0@HIDDEN>
Date: Sat, 15 Feb 2020 21:29:57 -0500
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: eliz@HIDDEN, 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: rms@HIDDEN
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > A MELPA package under the GPL also means that there is no loss to the
  > GNU Project, right?

That depends.  If its copyright is assigned to the FSF, we can put
it in GNU ELPA.  That is no loss.

However, when a package goes in MELPA because of copyright, and we
can't include it in ELPA, that is somewhat of a problem.
-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 14 Feb 2020 09:23:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 14 04:23:22 2020
Received: from localhost ([127.0.0.1]:60851 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2XBx-0008Hf-R5
	for submit <at> debbugs.gnu.org; Fri, 14 Feb 2020 04:23:22 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33789)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j2XBw-0008HT-Tz
 for 37189 <at> debbugs.gnu.org; Fri, 14 Feb 2020 04:23:21 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:45648)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j2XBr-0002iC-Eh; Fri, 14 Feb 2020 04:23:15 -0500
Received: from [176.228.60.248] (port=3816 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j2XBq-0002Hb-R5; Fri, 14 Feb 2020 04:23:15 -0500
Date: Fri, 14 Feb 2020 11:23:19 +0200
Message-Id: <83ftfdplo8.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Dmitry Gutov <dgutov@HIDDEN>
In-reply-to: <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN> (message from
 Dmitry Gutov on Fri, 14 Feb 2020 01:40:31 +0200)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
 <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: 37189 <at> debbugs.gnu.org
> From: Dmitry Gutov <dgutov@HIDDEN>
> Date: Fri, 14 Feb 2020 01:40:31 +0200
> 
> I think the first thing I'll have to do is revert a part of an earlier 
> patch to vc-default-ignore which changed its semantics a little, because 
> it doesn't look like this discussion is going to culminate in a patch 
> small enough for emacs-27 anyway.

Which part?  Can you show a proposed patch?

> Then, naturally, we'll have to look for small changes that improve the 
> situation but provide as little breakage as possible.

Agreed.

> > I did arrive at a few conclusions after studying the issues raised in
> > the discussions, so if you want, I can post those conclusions FTR, if
> > for nothing else.
> 
> Yes, of course, please go ahead.

OK, here goes:

1) vc-dir-ignore:

It calculates the file name for the entry into the ignore file, and
thus must escape any characters in the file name that are special in
ignore files -- which is backend-specific.

The file name should also be "anchored", at least ideally, so that no
other file is accidentally ignored.  This is also backend-specific.

VC's support for directory-specific ignore files is inconsistent: they
are supported for CVS (and actually mandatory there) and maybe SVN,
but not for Git/Bazaar/Mercurial/Monotone -- for the latter we only
support ignore files in the repository root.  This could be improved
in the future, but for now I don't see an immediate need.

The fact that vc-dir-ignore calls vc-ignore produces contradictions,
because vc-ignore is supposed to handle file-name patterns (whether
wildcards or regexps), whereas vc-dir-ignore never sends patterns, and
also because with vc-ignore the user should get to decide whether to
anchor the file name or pattern.  So I think vc-dir-ignore's
implementation should be eventually rewritten to call the backends
directly instead of relying on vc-ignore.

2) vc-ignore:

Prompts the user for the file name or pattern to add to the ignore
file, and therefore the escaping and anchoring is the user's
responsibility.  It should basically just find the ignore file and
add/remove an entry to/from there.

It should not assume the argument is a simple file name, therefore
using the likes of expand-file-name and file-name-nondirectory is not
a good idea.  For example, Git patterns that are "anchored" start with
a slash, which will cause unexpected results if used in a "file name".
As another example, backslashes used for escaping special characters
will be interpreted on Windows as directory separators, again leading
to unexpected results.  Therefore, vc-default-ignore should not use
file-name related primitives, but instead use concat and substring (if
needed).

For the same reason, using read-file-name here is too naïve, as well
as yielding an absolute file name from what the user types.

If you agree with the above, we then need to decide what, if anything,
of this should be fixed for Emacs 27.  E.g., vc-dir-ignore seems to be
OK if the file name doesn't include special characters, does it?

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 14 Feb 2020 01:49:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 20:49:44 2020
Received: from localhost ([127.0.0.1]:60715 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2Q6x-0005m1-Us
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 20:49:44 -0500
Received: from mout.gmx.net ([212.227.17.20]:49581)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j2Q6v-0005lm-Ob
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 20:49:42 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581644975;
 bh=hg7XxzVySnaOjiHBLulbMg592u2LsGM2zLVMcU1vQvE=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=YAEPTqCliMpZAcqIBEdHHt2FJlbNOI0qNuX+Nj/WF4iMF0vE203VCoVAvOBSg9lO/
 dOtv1KYNyp+HAPwOWHAvAToDXcQhlfbWDaDUh8ha4tIpZAQCDD/mL4APw/TwDDUtm5
 IXiVCTpatCJ/qk5quUb9Z7u0Uh+f0BKhFP9wFw1g=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MRTRN-1inl0d47xF-00NOPR; Fri, 14
 Feb 2020 02:49:35 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id C474119431D9;
 Fri, 14 Feb 2020 02:49:33 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: rms@HIDDEN, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83d0air0bs.fsf@HIDDEN>
 <E1j2O8s-00082O-Vf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <6e5ece91-0f27-2f2a-0557-deecd07112ac@HIDDEN>
Date: Fri, 14 Feb 2020 02:49:33 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <E1j2O8s-00082O-Vf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:eSt4CRhiSeWk3rq3bxFXIUkvuwVwUvv9dQ/EgvZ/+JFdX9Ud1rc
 Ajvnv8k7LvlVSEyxN5Z0N/65veNRKGNxG2mRbBwbnhvIPa5YqoZwu30CONzEJ9QYOm6wGz+
 gYnBPV/CbOdWuF4IkghZEXOHm3OImwT8+a4W0Z8/g0cvY5aoQYPRxkUDanPLcIlOemeLML9
 KQDkgzyqrC/cHiV+nve8A==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:NglVPLSLBI0=:/EeGhpmJttQSea3ujdPByN
 dGBRr6bmQDQDwizuwyrJmzT50Mo6JPL/U874EF80JIqYbmbmGToCzEqsF01n+4vmOQIyL0wR7
 k/4a7xdH+Pbriyw9U9rpuAMdRtg1jZno6Hj1ut3omLTxpM2sEKrdB7fZhwGS8QqIk5ongXXQ4
 blPJEXaLOT6R8/t2jmU0pl++e5FR2QwFXVRicmkf5Wm+BtsAzv4M8gjd4jIqvYGZQ+eXWYjRn
 fd1jQHPmmxoR4tK8XzMDKfXy4xRWa8HrFCciyr81woccU9FoW+5tdMaaAWFB7CTDiTT/mXDc6
 U8yWB5Ub0UanDvnbbprkzfinGqpRZCU3p2QK2ZpUCDdPelR99hQXPjhqLidtbT/v0BfwID+8H
 BFPBjr/B3R9rgVj/KPkJL0smNqJK0wWeqi1BrV+oJv32SOEUr3tDA9qLy13+9ewjcmmMZi0ri
 ga9FyiKjSEoHKPtg1diVyTctB4NwWpqSttuwjcU7Vz0w9xFif7oZ3Y5tsFhmemJBjR4oNUrTG
 mZjpOetkc78HhHi98sSDu6VhxXmEMhfajeB3+MBml2zUOOK/QK7StgGL5aADF8dSABFqZ8RVv
 BGwTJKQTxdi3Db1UXc8YcCNMq7oYufGuYqz9zZR9qxSFvK52W0bL5SKyWbZPMIsuA3mq6Qp0l
 7UHOaIddwL/xCcQrFtvYSz9kWElKcOWSu+K0Z7v9mMfXzGtgMGyt01F9KfEdIkNS/EEy12A+/
 1hbLzIY8+Yv5v2WHmKC+Swmst28JIp+Fmbn9V1KlK7cVlevc30Ryl1YuyITe5Cq0zaEsPSbR/
 wFkNOn3P2iY96ffgV7tqVm2PkScpzvfISbxGbHt7wrjTjyZIQgy3+L9IoqszkJZ2a3rjT9bnQ
 Z/FbBIFL1wJ/zICW/9I+JnLpqPv4qugz+HUf/uRZaRguc1BZNLVl1gdcZJIb0jL501/gmxEat
 rDEt+MQ5bBIPgoL+yPxIOkFSR0zHXAHngYo+qwYpBW5MaIRbnjFOVcS+9mMLKInwGQKfOdVQx
 skSmKa/nXDdCuEKp0at8m9aEmUFhOJONbQYCH7dDQHKhIbIdD1H0iSUVQH0V7SPzuMpuF4V45
 zz62DJui2dWDIMLDCGBoVWfOD/OV0PyqxJ/2liefldUoC5yb60/eCEt5yqfg8gLAjexvRCi7t
 ol3jY7IIomL72dZW1k+mTiTQoqQ0QkUjYL5u/hDzd/Fzepn7XNEI80ZpHkQfxEjlCnS4HQDo/
 YN1RxMde7yZP7gWph
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Am 14.02.20 um 00:43 schrieb Richard Stallman:
> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> It is a shame, and a loss for the GNU Project, when people who want to
> contribute have difficulty communicating.  Would the two of you like
> to try to reset your relationship, and start the conversation again?

I did already apologize, and I meant it.
I promise to exercise restraint in the future.

As for the issue at hand, I will just go ahead and try to make a MELPA
package at last, since even if the issue were resolved in Emacs 27, it
would not help with the situation that I am stuck with Emacs 22-26 on
various hosts.

A MELPA package under the GPL also means that there is no loss to the
GNU Project, right?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 23:43:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 18:43:47 2020
Received: from localhost ([127.0.0.1]:60661 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2O95-0002jU-Gx
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 18:43:47 -0500
Received: from eggs.gnu.org ([209.51.188.92]:42898)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rms@HIDDEN>) id 1j2O93-0002jG-71
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 18:43:46 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:38864)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <rms@HIDDEN>)
 id 1j2O8x-0004V6-HP; Thu, 13 Feb 2020 18:43:39 -0500
Received: from rms by fencepost.gnu.org with local (Exim 4.82)
 (envelope-from <rms@HIDDEN>)
 id 1j2O8s-00082O-Vf; Thu, 13 Feb 2020 18:43:35 -0500
Content-Type: text/plain; charset=Utf-8
From: Richard Stallman <rms@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <83d0air0bs.fsf@HIDDEN> (message from Eli Zaretskii on Thu, 13
 Feb 2020 17:09:11 +0200)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83d0air0bs.fsf@HIDDEN>
Message-Id: <E1j2O8s-00082O-Vf@HIDDEN>
Date: Thu, 13 Feb 2020 18:43:34 -0500
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org, Wolfgang.Scherer@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: rms@HIDDEN
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

It is a shame, and a loss for the GNU Project, when people who want to
contribute have difficulty communicating.  Would the two of you like
to try to reset your relationship, and start the conversation again?

You could look at https://gnu.org/philosophy/kind-communication.html
to help get off to a smoother start this time.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 23:40:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 18:40:41 2020
Received: from localhost ([127.0.0.1]:60657 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2O65-0002fB-12
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 18:40:41 -0500
Received: from mail-wr1-f48.google.com ([209.85.221.48]:37349)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j2O63-0002ey-OY
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 18:40:40 -0500
Received: by mail-wr1-f48.google.com with SMTP id w15so8850105wru.4
 for <37189 <at> debbugs.gnu.org>; Thu, 13 Feb 2020 15:40:39 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=WbPSHirQKOFe5tXeCCGf/EfvA4hjtIPmdO9XEE0L4Ws=;
 b=CtWE/StKfRe0M8gsVjy2XLk/tU07KPAogwl2ORJGSVcnHNQ14GsUR7qnvtaAhlGWY3
 93rFeTjPk59z2z/Mw9MtS8QM1P5BZA8ApNz2VkhZXs+ILgvE/vVI5QJ6JFyBd8KMmh/u
 BCvQEpJJtr7a/GZmMXc7Evaa4bGmaspxL6HpgjOslCcgt3mGdvN+oUQU4MlnIJMdZ7rj
 E1LqvAWCQW7Dz1UH+SVavCq5coGJTAFS3I0OBwVhoMs1aw+9PfRzTH/8vZu3s63FLhAa
 8EkyDdIW87wY7nqarzXbiCkPHIUKk1MH3DMG9fwWf/UjaHbYTpaBDIMJXdKHnISdAUun
 6awg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=WbPSHirQKOFe5tXeCCGf/EfvA4hjtIPmdO9XEE0L4Ws=;
 b=dNpALQpOmNjW6xid9UAeO1k2Wzy1KDmB3usCGaQ5wSru8mapalP9rpfLgN7Fc9Xd7l
 mFOAgNvA173FqlrZu7osKM+2+t0FyjoEbkomZEP56CG4JnYI5QYMtVE9H0IwJvcNcTXS
 JDd0ae/0TgajFHsM/yBGx7bEX3YtNlJ3UUnYdJU/rm1IHgcJ0sFh9mnPU1cluI4tktla
 pF0h4kjXLVJiQW1V4jw5gx85xiBtuD7fhcld/Bu4ptUVENyvCIMBZhXt6jllnRMnB0oP
 Vd/rTX2v39S/xEEdhPSF7zMmgNK6pQVZT82vDu6NEM6xRsZtp3TVZzLEjLebpP38w+wV
 /2GA==
X-Gm-Message-State: APjAAAWbSMY8ZuZXvM5CrtNoNZbrbnVMrLNJGdSHwtH7nXzHcErsZvK9
 /W5/upOcQEJEPYTMhTx49Ts5VXH6
X-Google-Smtp-Source: APXvYqzU064fJnP/rsGkmkvNJU9PSPJutURcSGma/2huXq9qq3Qe4g/X0F+8q14nl3FEkJ5pG+jOSw==
X-Received: by 2002:adf:f80c:: with SMTP id s12mr24174209wrp.1.1581637233361; 
 Thu, 13 Feb 2020 15:40:33 -0800 (PST)
Received: from [192.168.0.3] ([66.205.73.129])
 by smtp.googlemail.com with ESMTPSA id r5sm4712187wrt.43.2020.02.13.15.40.32
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 13 Feb 2020 15:40:32 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83blq2qzqp.fsf@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <c755f05c-522f-9b8c-a95c-b5e0c93a14b5@HIDDEN>
Date: Fri, 14 Feb 2020 01:40:31 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <83blq2qzqp.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

Hi Eli,

On 13.02.2020 17:21, Eli Zaretskii wrote:
> Dmitry, what happens from here is up to you.  You can decide to accept
> Wolfgang's changes as-is, or you can decide you want to continue
> discussing this with him (in which case I will stay away of the
> discussions) and eventually arrive at some alternative changeset.  Or
> you can make any other decision about this.

I think the first thing I'll have to do is revert a part of an earlier 
patch to vc-default-ignore which changed its semantics a little, because 
it doesn't look like this discussion is going to culminate in a patch 
small enough for emacs-27 anyway.

Then, naturally, we'll have to look for small changes that improve the 
situation but provide as little breakage as possible. I pretty much 
agree that vc-ignore's semantics are not well thought through (or 
documented), and there is space for improvement. But the devil is in the 
details. I do have a few of my own questions/ideas, but I'll leave those 
until later.

> I did arrive at a few conclusions after studying the issues raised in
> the discussions, so if you want, I can post those conclusions FTR, if
> for nothing else.

Yes, of course, please go ahead.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 16:30:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 11:30:46 2020
Received: from localhost ([127.0.0.1]:60376 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2HO1-0001Iu-Os
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 11:30:45 -0500
Received: from mout.gmx.net ([212.227.17.20]:50365)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j2HO0-0001If-2s
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 11:30:44 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581611437;
 bh=gOQ2+of8xFJWLyndPFPGG0YtuCvSZGL3ETKYTRf7bhs=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=NQmOLMcn38VoTH/dLAlRMg99hud9/kZY+DT8IpYJr0PIwmvKUfT7nW/EohCEqHr/a
 OvaF52b7fqSC9VEprW8PZf6mpeeLC38hpvn73WIzW4bm3G0zeQZNTUNa62/ch0zHXG
 ml8MiViOHVZBj6kHFhRoYvD4NBniyQgk0mGMVtPo=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mk0JM-1jmZPx2Pge-00kRxc; Thu, 13
 Feb 2020 17:30:37 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 7EFFB19431D6;
 Thu, 13 Feb 2020 17:30:36 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> <83d0air0bs.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <7b572ca5-69fc-7f02-e10b-1d1fe726c245@HIDDEN>
Date: Thu, 13 Feb 2020 17:30:36 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83d0air0bs.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:hPyiN0re3AZNSNHFZcXygSHC4D6F94qo5mjdrGHX6sA/LQzx9Td
 XRDcCSwOOxWoDO/NDk6aRDn0RYt7rAX6/hL2BkfXiA0OIHR2Eepaxi8DoblDC7b+PTSCYaX
 b3zYuYBCYj9mXAeAOEMBANaxR1lpv+3pdPKSDsZhD6l165yHO5+uUM+6NK+/naTpmMxRg1x
 7nwUPpdw5WTr9XuNGu5XA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:FTDOBU92qBc=:nMMw23uVROvN03ZEkG2JuW
 6JzZG9A0vZyqDXyiup7DSb9PkBDv8fhJbmu0eJgw+YWgJ3OkjD3pgtLiajETtEcwAPMjEcTjN
 U000Igdcfsnur0d7sEpaw/oxVZLkr8c/edaAzT/mmqb6jsfEHIhYxqpC+pWGXhHNG5BBPDxvN
 YqEM4+N10vCKo8W3maPOr5JIB214NG3FX8b2bDTuImggzBXhhJZfpzGDgqrJ7LdIB/uLLCmlO
 EF/1gM+t8+x4yLBB2fnw+8WJRXLsauJ3YcLEdfRmlz+TGIQA/0KY+howxMkSgKt0cKJnzBuqL
 8x1gHBTgHWbAaDwTDMTBFh7KfzCPXud4OQOZKL5DkI8Mx6LCd04FLIk9nZp7sB8BD/bYzzci6
 K+FAwVFtYZE4NtylwOr772C4N1ikC3uSvnqcmMViV0/HJ2KNs0lqfNE3vpOBsvN9NtAAbmzbF
 UR4WTiA92sZcTQ82rvU9RwLlqA2JmAa7fYxeUW9oZmFcmmpq3kX8Jc/vRmDTmDBGPR2TRqCF2
 Z7rpauzXOQaxoNRunjQeQN4ObvygmffLjZPPPg1nK17g0GwdtTbNXXwiQ1i/UDcqGFmHCZNhC
 4VF6G8IDijO4kZZ0iT7qP8MoEGtLWrpeMNLTBhuKa6jUevHiR/lqoTjY4yRQNzer351pwlq88
 GXokwpw8bizL4Qj5mg+rcElUcWvJ08ZgJ2+xZLZJkk3EPcrmqAAv2yThmiMLTYyjTN7FRwTGd
 PU5EVeH4sbKM3XF8LaRDSxQwmq/+HclpHGU42GuAr2VF85R5g4/J8kSi5h/Mzui/rOmTlqUq/
 8pBcieL29NZLwQY27MvGSDicE7+bnWfdtZjAaRoN68ZX3VmR8aj5Yl4YciedfQ80B1IUYce2Q
 cft8yzImwVGUdOlHZGjgU8e5RR6pxfRAeLSPEX5ov78P3/vZovp/cEIJMGubpLaQOLQOPr7Fc
 rmqXvgt6rAisKifWtnJymC//386pJTpotZyP0T3Nfm3w3z9zKBntZYLh8qy7vyR4dqQCv5zGC
 8eSAxkoCuuag7TTxeV+imPd67jenXEjV9z4gShzddd60tfqSMbPi5q5yLO29dNPcrlCC7XSao
 DFOdjj/DaJVT0qk5dvA9n3hrBmXXyhrdMC3GDjFNofxh6aKnlJJm3r464DTYAHkJjWE+AJga3
 dXWMS47G64VBWcJj8d4y84lwwt9F5QIalzUVNER/cSpSGuxmPDKORNFgidKyz3Kymmb8Lkn+y
 Br/RFtEdGs+b0tYMG
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Dear Eli,


Am 13.02.20 um 16:09 schrieb Eli Zaretskii:
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> Date: Thu, 13 Feb 2020 02:18:00 +0100
>>
>> I will now quit this absurd discussion of non-existing algorithms
>> and just keep working with my correct implementation of the vc
>> ignore feature.
>>
>> Should you get your facts straight, we can talk further. Otherwise, I
>> have invested enough.time now.
> This was exacerbated by your
> frequently unkind language, like in the small excerpt above.  This
> made the discussion unpleasant, to say the least.
I am sorry, if my wording made the discussion unpleasant for you. That
was not my intent.

It was really my misconception that you were more experienced than me
regarding the code in the vc package, which made me doubt my
reasoning. And if that happens, I tend to lash out, which is a
personal flaw I sincerely apologize for.

I do have to thank you for making me produce a much higher quality of
code than I would have without the misunderstanding. So I may have not
been pleased with the experience, but I am very pleased with the
result.

Thank you.
>
> I will remove your address from any further discussions of this issue,
> per your wish.

I hope the apology still reaches you.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 15:22:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 10:22:00 2020
Received: from localhost ([127.0.0.1]:60353 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2GJU-0007zw-FU
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 10:22:00 -0500
Received: from eggs.gnu.org ([209.51.188.92]:56781)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j2GJT-0007zj-40
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 10:21:59 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56689)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j2GJN-0005FF-VR; Thu, 13 Feb 2020 10:21:54 -0500
Received: from [176.228.60.248] (port=1545 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j2GJJ-0002fp-Uq; Thu, 13 Feb 2020 10:21:50 -0500
Date: Thu, 13 Feb 2020 17:21:50 +0200
Message-Id: <83blq2qzqp.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: dgutov@HIDDEN
In-reply-to: <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> (message from
 Wolfgang Scherer on Thu, 13 Feb 2020 02:18:00 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

I'm replying to a couple of points here FTR, since the future of this
discussion (and of handling these issues) is not clear to me now.

> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> Date: Thu, 13 Feb 2020 02:18:00 +0100
> 
> you must be using an Emacs < 27, if you get basenames in root/.gitignore, because that behavior changed with #37217:

No, I'm using the latest emacs-27 branch.

However, I see that "basename" was inaccurate: it is only correct when
ignoring a file in the root directory of the repository.  A more
accurate description would be "a file name relative to the
repository's root".  Which is still not an absolute file name, as was
claimed by Wolfgang.

> 1. Invoke vc-ignore `C-x v G`
> 
> 2. Enter the correct regular expression for Mercurial (it is a
>    wildcard for the VC according to your reasoning, is it not?):
> 
>    ^/some[/]sub
> 
> 3. Check your .hgignore file and verify, that it only contains:
> 
>    ]sub

I cannot reproduce this: I get the expected ^/some[/]sub there.

> Should you get your facts straight, we can talk further. Otherwise, I
> have invested enough.time now.

Dmitry, what happens from here is up to you.  You can decide to accept
Wolfgang's changes as-is, or you can decide you want to continue
discussing this with him (in which case I will stay away of the
discussions) and eventually arrive at some alternative changeset.  Or
you can make any other decision about this.

I did arrive at a few conclusions after studying the issues raised in
the discussions, so if you want, I can post those conclusions FTR, if
for nothing else.

Sorry if I caused this discussion to go awry.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 15:09:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 10:09:18 2020
Received: from localhost ([127.0.0.1]:60336 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j2G7C-0007gA-1q
	for submit <at> debbugs.gnu.org; Thu, 13 Feb 2020 10:09:18 -0500
Received: from eggs.gnu.org ([209.51.188.92]:49877)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j2G7A-0007fx-PW
 for 37189 <at> debbugs.gnu.org; Thu, 13 Feb 2020 10:09:17 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56373)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j2G75-0007GI-GM; Thu, 13 Feb 2020 10:09:11 -0500
Received: from [176.228.60.248] (port=4757 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j2G74-0001KI-Sn; Thu, 13 Feb 2020 10:09:11 -0500
Date: Thu, 13 Feb 2020 17:09:11 +0200
Message-Id: <83d0air0bs.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN> (message from
 Wolfgang Scherer on Thu, 13 Feb 2020 02:18:00 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
 <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> Date: Thu, 13 Feb 2020 02:18:00 +0100
> 
> I will now quit this absurd discussion of non-existing algorithms
> and just keep working with my correct implementation of the vc
> ignore feature.
> 
> Should you get your facts straight, we can talk further. Otherwise, I
> have invested enough.time now.

That is unfortunate, but it's your prerogative, of course.

From my POV, I can say that the amount of time I invested in this
discussion, and in studying the code you mentioned and the use cases
you described, was also unusually high.  This was exacerbated by your
frequently unkind language, like in the small excerpt above.  This
made the discussion unpleasant, to say the least.

I will remove your address from any further discussions of this issue,
per your wish.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 13 Feb 2020 01:18:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 12 20:18:11 2020
Received: from localhost ([127.0.0.1]:59241 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j238t-0002NJ-2g
	for submit <at> debbugs.gnu.org; Wed, 12 Feb 2020 20:18:11 -0500
Received: from mout.gmx.net ([212.227.15.15]:35765)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j238q-0002N2-HH
 for 37189 <at> debbugs.gnu.org; Wed, 12 Feb 2020 20:18:09 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581556682;
 bh=VyFwktKnk1cIA3jQHB0lLUrol/4uhKJywEcUtMZKjMU=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=NhMejNosDagvicAXP2WnoumyXiBcdMS29ekQwC6EZEHCGFqswDv9Kt8VMswrROpEF
 2VhqDb969pUVyhM1JUsWhMpidv1HQuMmec41Z/2CiyrnRJm2WwWyso+xGDzzhhAzHu
 kH1KTIe2be7u2/23Dg4oUcLonnn6/FjumilJGYP8=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mk0Ne-1jm5Cs03Eu-00kMJQ; Thu, 13
 Feb 2020 02:18:02 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 5604719431D7;
 Thu, 13 Feb 2020 02:18:00 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
 <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <e4ee0a45-5e36-61b1-8b03-458f0f30a4c3@HIDDEN>
Date: Thu, 13 Feb 2020 02:18:00 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:UvIgDMl6xJuFH4rjAKEywQnhjaiULSMKV+/A+jWL46XQdVELhdD
 z5dRSYpFdW3eLDflyK7FImwhTtdSZNAsvVXFptDJA10Vbg9hoZLj1yzGAsd0BdKTKAHeemI
 jN1rv/pQMXijcPear5IVitno6HUNgj+wYh8RJ2gWu8/d2Z4go9mnqkLgKlq5E/jFFcfE79/
 EfmHotkHd90jR0NQE4Vkg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:5CUOzn5Ysu8=:2xsw0LMt0f10xIwXruLA9o
 9rj01lt2h8RY9JBGyrLUrXfapjsRrQS7TqDPYzWmZ/QIXvuIN5kIqs0d4cyX14EJ1YbI+7lc+
 9LZNTv3eXYay/8FC6HvbpR8MXkO3oX3SkwvQ87cGbZTJ9FEQLore5uIYMjFQ/HqMOzUnFdLBX
 L39Ev6mdnkQ4SswHp7P2MecDi7RQVKHx/vussQXJipMhDNONAH2Oh1eZPAUoM95S8aXQjUWIm
 9uwgrgkuaJ5alCOrBmWSuZoxQTYr24sZgFawP73UeK9QX5QJ71VcEjwkc1fcBbrZZU5BlCS0i
 cjxTtslMGEQA0F7AGYPpr4JDsL2tpBJKZPkwWmKYVyOUXq/Ued3XfXYPQIYN8yixg2E4VfhfG
 4oiMLwgUSEjeSyRffvy26ngcKnMVlcVxmaUxbzbJmnUAjOkSMeRI8p9hGrONvzLXe6qGbO7R1
 XrvckRpxm84gQ07OHBnSJPyY6Sp0gfGF+Qrevgl94WWgJheaqZ49JZXDGT2XC16vUICAfbe65
 Z7N9FxHlMeUdoRb8doqd0hwchR+bteMycV+wwjECTg4gcZoyw0BfJqPUSTiTrK7NWQGO4rD9K
 R9JIbSI6tjJkiBXJfTHA5XgHuceC2RLBJgWIN6dhs95UnrXYjnNi9vD/ksyAgZfi0rErGrNJl
 tTKEdzfqGe9SD0EtnF9pjjL66oU5CKRoddIMij+kjCkpfHlo6aeoePDpzplKVrG3Vwx6AK+Yv
 lvik5XLI5S1sHdfClP5DhUs1vhtBY2ri8q1W2ucop+C1EhgpRbOOHmUqYe/pcQttRd7V/IydA
 CfBi/bl2V7DtAQHe6T+m5Fltwx0B7NzM4hE4gerUmMH6JAToYjcgI69nVAeNaAErxrwzn4tGr
 tAhU8cbQyF6epJ5wNLP1URDA4P4o7RKlwoq97k158dYMAbF0Tm4xp5+qyzNXZRLlwRPdSWJK/
 j4gTp3ghqvDamxq4hsmz19FjLlz+OIPxCEzIoRqpShsRfJ/Jk80k70/ka2PO1pTLJslrcjh7e
 ItsHhvLB5HOP8ouHxsOo/WGYkUVTIcvCdnu4J77sY477rgs3Oz/t0F+dr386ctYqaBGYGvfT3
 MIJs0uw8ZB4GWyRQKsMe9hYruh8ISQz/9qiHG19DHjCsRYZfe9xV9wYYVhan+qpx7z2N1VtYG
 dzDPqEvLKj5WJx68pX9xiZSri/EGdUxjCGTFmT4DXf3ZhNlZ0qjcH0UdquQLH6S6u+Jb8LuVK
 74nr+YRh6+VamkLPz
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Eli,

you must be using an Emacs < 27, if you get basenames in root/.gitignore, =
because that behavior changed with #37217:

> Only the basename of FILE is written to the ignore file. This is
> wrong for all filenames relative to project root with one ore
> more parent directories.
>
> The remove option is also implemented incorrectly.

I have totally forgotten, that I never really considered the "pattern"
use case you are so fond of, because the "file path" (vc-dir-ignore)
use case was so much more obvious to me.=C2=A0 Since I have fixed so much
of vc's shortcomings already, I have not really thought of the
original behavior until you asked me to show, why vc-ignore had always
been broken.

So, I just tried this in a Mercurial repository (it is fine to
use Git, as long as you can pretend that regular expressions are
valid wildcards):

1. Invoke vc-ignore `C-x v G`

2. Enter the correct regular expression for Mercurial (it is a
=C2=A0=C2=A0 wildcard for the VC according to your reasoning, is it not?):

=C2=A0=C2=A0 ^/some[/]sub

3. Check your .hgignore file and verify, that it only contains:

=C2=A0=C2=A0 ]sub

How is that behavior correct?=C2=A0 There should have been no change,
because the user is supposed to do everything themselves, right?

So how come, the correct documentation for vc-ignore before Emacs
27 is basically:

=C2=A0=C2=A0=C2=A0 (defun (vc-ignore FILE &optional DIRECTORY REMOVE)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "...
=C2=A0=C2=A0=C2=A0 You will be prompted for an absolute file path, but don=
't think
=C2=A0=C2=A0=C2=A0 that it has any significance, because for Bzr, Git, Hg,=
 Mnt:

=C2=A0=C2=A0=C2=A0 If you enter anything that ends with a slash, the strin=
g "./" is
=C2=A0=C2=A0=C2=A0 written into the nearest ignore file.

=C2=A0=C2=A0=C2=A0 Otherwise, everything up to and including the last slas=
h is thrown
=C2=A0=C2=A0=C2=A0 away and the rest is written into the nearest ignore fi=
le.

=C2=A0=C2=A0=C2=A0 For CVS, whatever is entered is used as a filename to d=
etermine
=C2=A0=C2=A0=C2=A0 the directory of the ignore file. What ever was entered=
 is then
=C2=A0=C2=A0=C2=A0 written entirely into that ignore file without modifica=
tion, which
=C2=A0=C2=A0=C2=A0 makes no sense.

=C2=A0=C2=A0=C2=A0 For SVN, other strange things happen."

Applying `file-name-nondirectory` to an escaped pattern *never makes
any sense at all*, so why does it happen?

The simplest explanation is, that there is no "pattern" use case at
all. There is really only one use case, which is to ignore files by
pressing `G` in vc-dir-mode. The additional shortcut `C-x v G` for
vc-ignore is just there to make things symmetrical with other VC
commands like `i` and `C-x v i` and so forth.

That is also the reason why vc-ignore prompts for an absolute file
name. Because it is the exact same input it gets from
vc-dir-ignore. Case closed. vc-ignore does not have a pattern mode. It
was always broken entirely. Period.

So the implementation you are talking about has never existed, you are
just trying to somehow justify the broken behavior by making stuff up
and insisting that the behavior is intentional. Let me ensure you,
that it is not.

And if something is so utterly broken like the original vc ignore
feature, we are not talking about an API change but about a proper
refactoring to get it working at all. Any solution is better than no
solution.

I actually like the idea of a "pattern" input, so I am not sad about
the lost time. But I will now quit this absurd discussion of
non-existing algorithms and just keep working with my correct
implementation of the vc ignore feature.

Should you get your facts straight, we can talk further. Otherwise, I
have invested enough.time now.

Am 13.02.20 um 00:20 schrieb Wolfgang Scherer:
>>>> The old behavior of vc-ignore was not broken for interactive
>>>> invocations.  It was broken (in rare cases) for invocations from
>>>> vc-dir-ignore, and that can IMO be fixed without affecting user-facin=
g
>>>> behavior.  So I see no backward-incompatible changes here.
>>> Sorry, not *rare* but **all** cases! The invocation from vc-dir-ignore
>>> placed an **absolute file path** into the ignore file.
>> That's not what I see, at least not with Git as the backend.  I see
>> only the basename of the file being added to the ignore file.
> Right, and that is incorrect for all cases, because it is
>
> 1. not anchored, i.e.it also matches files with the same name in
>    subdirectories,
> 2. if the basename comes from a file in a subdirectory, it also
>    matches files with the same name in the root directory.
>
> These reasons also apply to Bzr,Hg, Mtn, since the same functions are
> used. BTW, you are seeing these incorrect filenames so flawlessly,
> because I fixed the underlying functions in #37185 extensively.
>
> Originally, SVN at least got it right for files in the root directory,
> but none of the ignore specs for files in a subdirectory ever matched
> anything, which is probably better than matching the wrong thing..
>
>> Can you
>> show a use case where an absolute file name is written into the ignore
>> file by vc-dir-ignore?
> Yes, CVS is still broken in that manner, because the reviewer of
> #37215 thinks, that FILE is always a basename only.
>
> And there we are, *all* backend implementations fail utterly for
> vc-dir-ignore. Not just *rare*, but *almost all* cases (except root
> directory of SVN repo).
>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 12 Feb 2020 23:20:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 12 18:20:52 2020
Received: from localhost ([127.0.0.1]:59179 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j21JL-000615-Qe
	for submit <at> debbugs.gnu.org; Wed, 12 Feb 2020 18:20:52 -0500
Received: from mout.gmx.net ([212.227.15.19]:53533)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j21JI-00060n-Bx
 for 37189 <at> debbugs.gnu.org; Wed, 12 Feb 2020 18:20:50 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581549641;
 bh=LyPw3MK6s7cXyHEnpyylkk2Lz89WvO7sd5rb+++0XIQ=;
 h=X-UI-Sender-Class:From:Subject:To:Cc:References:Date:In-Reply-To;
 b=dUV8j+L60T3r7UsBVDQUWcYhxTiYm62Ry4PreLLVT8Qe8hZVMV2LyPULGrS0Gswx9
 VgBjqiE0HHL1vSMz4mPy885H6DSZ+VcwTB2mZFt22+UT2q3dKcRVrwmGCvO1FOCazQ
 TLFPRO7lXUT7RtZX/gLuzIzddDMQ52m2YbQzYU44=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MsYv3-1jMZOc2QlH-00u082; Thu, 13
 Feb 2020 00:20:41 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 993C519431D7;
 Thu, 13 Feb 2020 00:20:40 +0100 (CET)
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> <83o8u3r6wg.fsf@HIDDEN>
 <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <d1f7d7c3-1b54-d83e-7f1b-544f97ef20bc@HIDDEN>
Date: Thu, 13 Feb 2020 00:20:40 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <6f3ba261-e1f9-cf19-cc22-ec8c24cf3298@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:CY8+fguUOw7MIDGBzYRxCH3k8W8wJ0BEc1zpUNkAFriAViIQMQa
 kBGTS0jRt3k3CZIZRPWXCtE4K4wro/K+jJkUq1H7yGVOIsyjsU+IztnDZ3/g69dOLj7APsQ
 8LCCPy1ty4Jn1rVx9F4Q8mr2Eu/SsicZ7ftdW8dM/Sx2yruT5Huc++tVpgaT6d3pUS6E9pw
 urDCmsLUP0GmVdpo4Fbfw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:Y8gUehb3/FY=:FRHqf4mwo/u3GgFTzNYwWA
 53ilve/ZqEqIZAcRdI7qliUkQ0K0ZQLxz2Mwsq6IpAlGO0A2Uw0g7PeHE0lCDdBSz61xS2DD8
 KF0/lj1wbZul0bfm9+Grqx0uU/4e5pvlw8qgprjowt9RgbVIeWL4Td0eWWv24cDjvpl/u5f87
 l98pYBOtfUlaNIxlkFp2UHY98XqsEGZdvPkZUozEo10tm1UgnP7j3Q/PhV7fKf+ZX+x2f3B3e
 50yxG8TqSvbmTzPm9q3F5p68MRn6qRGF7Mrs5U2W195ooJdVxT6EpY8L3xeJVL5m0Z+ZcRODb
 49EUGEu5C/XoQ4nUyGKChnsWZfzL3zzTlIxoD+XzfX41DdExz6ghHwZY58aXQiiGXgCk5Z7wY
 KJpK+7clOIWQ8b2np3xzDWVqepKo42zUFmNe2xjZJVXtp/FmaxjJ8RU7i1oZqZfxuizbOXDJd
 4mMDcbQuQSYxmh1no29V1u4pPAShL4CQbMuk9uHWzYLt/Ac1BfmYRUXDESG33rw16Jo3DegMV
 SVH41l91fPaNh6e7zTuhzZxytLxrVGe2QJKYCZYQvFYABsY1d97sDZqWk+a3dV1O1mnzLp5ug
 xq0KfsucqlfrYAYzUe9wmHsQu91HWNqIa4/Q4Ohi/z3IP61pxblGxQKBVKx1n5iQMpKSkCtAq
 gCGF+VVsQTndnfjZGDdE12CarHXwRngWcktWVwBooO127RiiwgHycfkipd4zAh+m5JyGrtF2K
 4wW8TwwqBCBG/W9sJA7fDZJLJGl+uhceh0OYG6evRxWoH3RNsTAr3E8kTfg3x0SiD2pRnHPMs
 Wpj962ogtYffIsDpqqNTkbcBh9utCP8mbufkMfiGWqzrDViENPHj9JXTu0+1eTl3A5+jqA1tm
 wkNIcT6EAMRxxgdR1z5uRXEZ5R5ZP7IunaUK3VN/2xv/UyVo246PeSa9Cr67Kc/bTwhFKw+m1
 OBmqAI8G30KAdcwjDds5zRzLTDfQpYwb3C+W67YraVU0KW4ePPZYoMLOCcDQ7YbOE60Fi/fxA
 EDsYD6tj3+ns3AwnEsV1PHyGPRc6bpButFJXAL0MvuiEkrwYpg8+rdLgNsfPtkFEU8McdDXC1
 4dnrUd9627r9cgYHLMc+imNnlnAkIpLoF1o701IoQt/iyOD/sPXBLfxCMIiDE3kt/d6JT75g/
 lWFrj7rZQRzw4tEFr7YgcMj5j03g5nioCqJxgafnMHgaK8JpNi8NPsCchA8eKWZ2i0Mb2fm3V
 thh++YeEdq5+gk7sK
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Am 12.02.20 um 19:34 schrieb Eli Zaretskii:
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Tue, 11 Feb 2020 23:28:10 +0100
>>
>> I do not actually give up:-). I just think it is easier to
>> convince you that the "file path" use case is already supposed to
>> be supported by Emacs.
> What is the "file path use case"?  To what commands does it pertain?

The command is vc-dir-ignore. You already responded with:

> Since vc-dir-ignore computes the file name(s) to add to the ignore
> file, it indeed will need to escape all the special characters in file
> names it will add, before it invokes vc-ignore.  You are right here.

Let me just remind you, that the key shortcut in vc-dir-mode dates back to 2013:

    vc-dir.el (Xue Fuqiao 2013-07-30  305)     (define-key map "G" 'vc-dir-ignore)

It is not new, and the intention was always to support ignoring files
from vc-dir-mode wihtout escaping before calling vc-ignore, which is
really not necessary at all.

>>>> A command that locates an ignore file, but can only do so, if the
>>>> default-directory is already the one containing the ignore
>>>> file (always true for SRC, CVS, SVN)
>>> Is locating the ignore file a separate issue?  AFAICT, we currently
>>> always look for the ignore file in the repository root, is that right?
>>> If so, are you proposing a new feature here, where we would support
>>> ignore files in subdirectories?
>> I am not (yet) talking about a new feature, but about the "file path"
>> use case in *vc-dir-mode* for per-directory VCSs (CVS, SVN, SRC).
> Do we support per-directory ignore files in the current codebase?  I
> think we don't: I see that every backend simply looks in the root of
> the repository.

That is only true for per-tree VCs, because per-directory VCs do not
necessarily have a "root":

    vc-bzr.el681:(defun vc-bzr-find-ignore-file (file)
                    (vc-bzr-root file)))
    vc-git.el974:(defun vc-git-find-ignore-file (file)
                    (vc-git-root file)))
    vc-hg.el1210:(defun vc-hg-find-ignore-file (file)
                    (vc-hg-root file)))
    vc-mtn.el105:(defun vc-mtn-find-ignore-file (file)
                    (expand-file-name ".mtnignore" (vc-mtn-root file)))

You are missing the higher priority backend hook vc-backend-ignore,
which is used by CVS and SVN. The original implementations (before my
changes) are very pristine.

The oldest stuff - the CVS code - was mainly imported from pcl-cvs
(vc-cvs-append-to-ignore), which has always supported the "file path"
use case. In the thin vc-cvs-ignore wrapper the use case is also very
much "file path", albeit incomplete. I.e., for an absolute file path,
the correct .cvsignore is found, which can very well be a sub
directory of the repository root. If the FILE argument were made
relative to the effective directory, the code would actually be
correct. See also bug #37215.

    vc-cvs.el (Glenn Morris 2013-09-11 1223) (defun vc-cvs-ignore (file &optional _directory _remove)
    vc-cvs.el (Xue Fuqiao   2013-07-30 1224)   "Ignore FILE under CVS."
    vc-cvs.el (Xue Fuqiao   2013-09-20 1225)   (vc-cvs-append-to-ignore (file-name-directory file) file))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1226)
    vc-cvs.el (Xue Fuqiao   2013-09-20 1227) (defun vc-cvs-append-to-ignore (dir str &optional old-dir)
    vc-cvs.el (Xue Fuqiao   2013-07-30 1228)   "In DIR, add STR to the .cvsignore file.
    vc-cvs.el (Xue Fuqiao   2013-07-30 1229) If OLD-DIR is non-nil, then this is a directory that we don't want
    vc-cvs.el (Xue Fuqiao   2013-07-30 1230) to hear about anymore."
    vc-cvs.el (Xue Fuqiao   2013-07-30 1231)   (with-current-buffer
    vc-cvs.el (Xue Fuqiao   2013-07-30 1232)       (find-file-noselect (expand-file-name ".cvsignore" dir))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1233)     (when (ignore-errors
    vc-cvs.el (Xue Fuqiao   2013-07-30 1234)        (and buffer-read-only
    vc-cvs.el (Xue Fuqiao   2013-07-30 1235)             (eq 'CVS (vc-backend buffer-file-name))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1236)             (not (vc-editable-p buffer-file-name))))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1237)       ;; CVSREAD=on special case
    vc-cvs.el (Xue Fuqiao   2013-07-30 1238)       (vc-checkout buffer-file-name t))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1239)     (goto-char (point-max))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1240)     (unless (bolp) (insert "\n"))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1241)     (insert str (if old-dir "/\n" "\n"))
    vc-cvs.el (Glenn Morris 2013-09-11 1242)     ;; FIXME this is a pcvs variable.
    vc-cvs.el (Glenn Morris 2013-09-11 1243)     (if (bound-and-true-p cvs-sort-ignore-file)
    vc-cvs.el (Glenn Morris 2013-09-11 1244)         (sort-lines nil (point-min) (point-max)))
    vc-cvs.el (Xue Fuqiao   2013-07-30 1245)     (save-buffer)))

The SVN implementation is somewhat confusing, because for the "file
path" use case a relative path with possible subdirectories is
constructed, but not normalized.

    vc-svn.el (Dmitry Gutov 2014-10-03 354) (defun vc-svn-ignore (file &optional directory remove)
    vc-svn.el (Xue Fuqiao   2013-08-04 355)   "Ignore FILE under Subversion.
    vc-svn.el (Xue Fuqiao   2013-09-04 356) FILE is a file wildcard, relative to the root directory of DIRECTORY."
    vc-svn.el (Dmitry Gutov 2014-10-03 357)   (let* ((ignores (vc-svn-ignore-completion-table directory))
    vc-svn.el (Dmitry Gutov 2014-10-03 358)          (file (file-relative-name file directory))
    vc-svn.el (Dmitry Gutov 2014-10-03 359)          (ignores (if remove
    vc-svn.el (Dmitry Gutov 2014-10-03 360)                       (delete file ignores)
    vc-svn.el (Dmitry Gutov 2014-10-03 361)                     (push file ignores))))
    vc-svn.el (Dmitry Gutov 2014-10-03 362)     (vc-svn-command nil 0 nil nil "propset" "svn:ignore"
    vc-svn.el (Dmitry Gutov 2014-10-03 363)                     (mapconcat #'identity ignores "\n")
    vc-svn.el (Dmitry Gutov 2014-10-03 364)                     (expand-file-name directory))))

Since I never thought of a "pattern" use case, I submitted a fix for
SVN, which adds the basename to the correct sub directory:

    vc-svn.el (Wolf Scherer 2019-10-07 357) FILE is a wildcard specification, either relative to
    vc-svn.el (Wolf Scherer 2019-10-07 358) DIRECTORY or absolute."
    vc-svn.el (Wolf Scherer 2019-10-07 359)   (let* ((path (directory-file-name (expand-file-name file directory)))
    vc-svn.el (Wolf Scherer 2019-10-07 360)          (directory (file-name-directory path))
    vc-svn.el (Wolf Scherer 2019-10-07 361)          (file (file-name-nondirectory path))
    vc-svn.el (Wolf Scherer 2019-10-07 362)          (ignores (vc-svn-ignore-completion-table directory))

I concede, that for simple glob(7) expressions, it is pretty much
possible to get away with treating the wildcard specification as a
filename. And sure, by declaring a use case *rare* (although there are
infinitely many instances and one is enough to trigger an error) the
need for escaping literal filenames can be argued away.

However, with regular expression syntax, multiple syntax options and
sub-tree ignore files those times are long gone.

>   If I'm right, then supporting per-directory ignore
> files is an enhancement, which should then be considered separately
> from fixing bugs in the current code.

Per-directory means specifically, that the scope of the ignore
specification is the directory of the ignore file. And that has
always been supported.

The per-sub-tree ignore files are a feature of Git and Hg, where the
scope of the ignore specifications also extends into further
subdirectories. These are not supported and should definitely not be
discussed here.

>> E.g., in this *vc-dir-mode* buffer it is not possible to use *vc-ignore*
>> in "pattern" mode:for adding an ignore pattern for SVN to `sub/`
>> or for SVN or CVS in `sub/sub2/`:
>>
>> ``` {.sourceCode .text}
>> VC backend : SVN
>> Working dir: /the/top
>>
>>                   .svn
>>                   sub/CVS
>>    edited         sub/.cvsignore
>>                   sub/sub2/CVS
>>                   sub/sub2/RCS
>>    edited         sub/sub2/.cvsignore
>> ```
>>
>> In case of nested repositories with different VC backends (e.g. in
>> directories `sub` and `sub/sub2` above), it may even become necessary to
>> invoke *vc-dir* with a prefix argument to specify the appropriate VC
>> manually.
> I don't think we support such nesting at this time, do we?

Well, we actually do. With the "file path" use case (as implemented in
vc-svn-ignore) it is perfectly possible to just press "G" on say
"sub/something" or "sub/sub2/else" and they will be ignored for SVN
correctly.

The VC backend nesting is also supported perfectly (I was
over-dramatizing for effect, sorry). The variable vc-handled-backends
determines what backends are recognized and what their priority
is. So, to solve the problem of using "pattern" mode in the above
example of nested repositories,

   (setq vc-handled-backends '(SVN CVS RCS))

is sufficient to suppress recognition of the inner VC backends. Then
you could "pattern" away for SVN to your hearts content.

>>> Since vc-dir-ignore computes the file name(s) to add to the ignore
>>> file, it indeed will need to escape all the special characters in file
>>> names it will add, before it invokes vc-ignore.  You are right here.
>> In order to know, what part of the filename must be used, it is
>> necessary to know the location of the ignore file, which is only known
>> by the backend.
> If I'm right in saying that we currently support only ignore files in
> the root of the repository, then this is not an issue.

Since you are not right, that could have been the end of it ;-)

> And even if it
> is an issue, we already have a backend method to find the ignore file,
> so we could use it (or modify it if needed).

You obviously have not looked at the implementation yet. I introduce
all the missing backend methods to find ignore files (CVS, SRC, SVN
(virtual, just for directory determination)) to make the
implementation totally uniform.

If you use these methods in a front end, you obviously have to
determine the backend. And after locating the ignore file, vc-ignore
can no longer be called, because neither the backend, nor the
ignorefile can be specified. So you have to call vc-default-ignore
with the backend. You are actually programming a backend function now
and much of the frontend/backend separation goes out the window.

Then you would have to cut and paste the same code into other
functions that also need to do the same thing. Then you will realize,
that it is better to move the stuff to the backend default
implementations where it really belongs. And so you will just end up
with the optimized implementation that I am offering ;-)

>>>> They also expect a visual feedback, that the operation had the
>>>> desired effect, as they have come to expect from all the other
>>>> commands in `vc-dir-mode`.
>>> AFAICT, the command does provide feedback.  Or maybe I misunderstand
>>> what feedback you had in mind.
>> vc-dir-ignore currently does not provide the normal feedback, I only just now put it in:
>>
>>       (vc-dir-resynch-file file)
> OK, so you _did_ mean a different kind of feedback.  What I meant is
> the "/foo/bar/.ignore written" feedback.

I repeated that in the vc-ignore pattern prompt, where it is much more
useful to know, which ignore file is actually used ;-)

>>> The old behavior of vc-ignore was not broken for interactive
>>> invocations.  It was broken (in rare cases) for invocations from
>>> vc-dir-ignore, and that can IMO be fixed without affecting user-facing
>>> behavior.  So I see no backward-incompatible changes here.
>> Sorry, not *rare* but **all** cases! The invocation from vc-dir-ignore
>> placed an **absolute file path** into the ignore file.
> That's not what I see, at least not with Git as the backend.  I see
> only the basename of the file being added to the ignore file.

Right, and that is incorrect for all cases, because it is

1. not anchored, i.e.it also matches files with the same name in
   subdirectories,
2. if the basename comes from a file in a subdirectory, it also
   matches files with the same name in the root directory.

These reasons also apply to Bzr,Hg, Mtn, since the same functions are
used. BTW, you are seeing these incorrect filenames so flawlessly,
because I fixed the underlying functions in #37185 extensively.

Originally, SVN at least got it right for files in the root directory,
but none of the ignore specs for files in a subdirectory ever matched
anything, which is probably better than matching the wrong thing..

> Can you
> show a use case where an absolute file name is written into the ignore
> file by vc-dir-ignore?

Yes, CVS is still broken in that manner, because the reviewer of
#37215 thinks, that FILE is always a basename only.

And there we are, *all* backend implementations fail utterly for
vc-dir-ignore. Not just *rare*, but *almost all* cases (except root
directory of SVN repo).

>>> My point is that Grep patterns can include characters special for the
>>> shell, but we never escape them ourselves, we rely on the user to
>>> escape them as needed.
>> The pattern is not prompted for separately!
> True, but I don't think this detail matters for the purposes of the
> analogy.
>> There is no way, that the pattern argument for the *grep* command
>> could be reliably parsed and quoted.
> Of course it's possible.

No it is not! Without quoting, you cannot decide programmatically
where the argument ends and the first filename begins, if the argument
contains spaces (or a multitude of other characters). I will not
accept "machine learning" as an answer ;-).

> It's just very complex and tedious, and more
> importantly, requires the user to play by certain rules: e.g., the
> user must agree never to quote/escape the patterns he/she types.
> Instead, we give the user the freedom to decide when to quote and
> when not to quote.  The same should be done with vc-ignore
> (but not with vc-dir-ignore).

Aaah, so! It's not a *bug*, it's a *feature*! ;-)

Anyway, that is exactly the point I am trying to make.

As it is and always will be, vc-ignore does what it does and I am not
changing it.  I am just adding another option, a freedom of choice, if
you will. Invoke vc-ignore under a different name, supply a file path
and magically, the correct ignore file is located and the proper
quoting is applied. This enables vc-dir-mode to work correctly.

And as I said before, once you think it through you will end up at the
same conclusion: It is always best to have a single call chaing
that covers all cases. If it works, it works for all of them. No need
to maintain multiple cut and paste code snippets in various frontend
functions and backends. (The confusion with the old vc-cvs-ignore and
vc-svn-ignore that you have overlooked previously shows that).

I have implemented some options for prompts from vc-ignore in
vc-dir-mode (the completion collection contains an empty line and the
unquoted file name).

    VC backend : Hg
    Working dir: /srv/install/linux/emacs/

        edited               README-emacs-vc-ignore-feature.txt

                             doc/_static/
        unregistered         doc/_static/x-vc-repair.el-002
        unregistered         doc/_static/x-vc-repair.el-003

Pressing "G" on the line "doc/_static/x-vc-repair.el-002" displays:

    Add pattern verbatim to .hgignore: ^doc/_static/x\-vc\-repair\.el\-002$

Pressing :kbd:`M-n` or :kbd:`<down>` clears the prompt:

    Add pattern verbatim to .hgignore:

Pressing :kbd:`M-n` or :kbd:`<down>` shows the unquoted file name:

    Add pattern verbatim to .hgignore: doc/_static/x-vc-repair.el-002

Invoking :kbd:`C-x v G` in subdirectory "doc/_static" of the
repository prompts with:

    Add pattern verbatim to ../../.hgignore:

Which tells you where the pattern will go when you press ENTER.

How is that for freedom of choice?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 12 Feb 2020 18:35:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 12 13:35:04 2020
Received: from localhost ([127.0.0.1]:59039 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1wqm-0007ip-HC
	for submit <at> debbugs.gnu.org; Wed, 12 Feb 2020 13:35:04 -0500
Received: from eggs.gnu.org ([209.51.188.92]:39123)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j1wql-0007iI-DI
 for 37189 <at> debbugs.gnu.org; Wed, 12 Feb 2020 13:35:03 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:39945)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j1wqg-0006W6-3r; Wed, 12 Feb 2020 13:34:58 -0500
Received: from [176.228.60.248] (port=1417 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j1wqe-00089w-WA; Wed, 12 Feb 2020 13:34:57 -0500
Date: Wed, 12 Feb 2020 20:34:55 +0200
Message-Id: <83o8u3r6wg.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN> (message from
 Wolfgang Scherer on Tue, 11 Feb 2020 23:28:10 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
 <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Tue, 11 Feb 2020 23:28:10 +0100
> 
> I do not actually give up:-). I just think it is easier to
> convince you that the "file path" use case is already supposed to
> be supported by Emacs.

What is the "file path use case"?  To what commands does it pertain?

> >> A command that locates an ignore file, but can only do so, if the
> >> default-directory is already the one containing the ignore
> >> file (always true for SRC, CVS, SVN)
> > Is locating the ignore file a separate issue?  AFAICT, we currently
> > always look for the ignore file in the repository root, is that right?
> > If so, are you proposing a new feature here, where we would support
> > ignore files in subdirectories?
> 
> I am not (yet) talking about a new feature, but about the "file path"
> use case in *vc-dir-mode* for per-directory VCSs (CVS, SVN, SRC).

Do we support per-directory ignore files in the current codebase?  I
think we don't: I see that every backend simply looks in the root of
the repository.  If I'm right, then supporting per-directory ignore
files is an enhancement, which should then be considered separately
from fixing bugs in the current code.

> E.g., in this *vc-dir-mode* buffer it is not possible to use *vc-ignore*
> in "pattern" mode:for adding an ignore pattern for SVN to `sub/`
> or for SVN or CVS in `sub/sub2/`:
> 
> ``` {.sourceCode .text}
> VC backend : SVN
> Working dir: /the/top
> 
>                   .svn
>                   sub/CVS
>    edited         sub/.cvsignore
>                   sub/sub2/CVS
>                   sub/sub2/RCS
>    edited         sub/sub2/.cvsignore
> ```
> 
> In case of nested repositories with different VC backends (e.g. in
> directories `sub` and `sub/sub2` above), it may even become necessary to
> invoke *vc-dir* with a prefix argument to specify the appropriate VC
> manually.

I don't think we support such nesting at this time, do we?

> > Since vc-dir-ignore computes the file name(s) to add to the ignore
> > file, it indeed will need to escape all the special characters in file
> > names it will add, before it invokes vc-ignore.  You are right here.
> In order to know, what part of the filename must be used, it is
> necessary to know the location of the ignore file, which is only known
> by the backend.

If I'm right in saying that we currently support only ignore files in
the root of the repository, then this is not an issue.  And even if it
is an issue, we already have a backend method to find the ignore file,
so we could use it (or modify it if needed).

> >> They also expect a visual feedback, that the operation had the
> >> desired effect, as they have come to expect from all the other
> >> commands in `vc-dir-mode`.
> > AFAICT, the command does provide feedback.  Or maybe I misunderstand
> > what feedback you had in mind.
> 
> vc-dir-ignore currently does not provide the normal feedback, I only just now put it in:
> 
>       (vc-dir-resynch-file file)

OK, so you _did_ mean a different kind of feedback.  What I meant is
the "/foo/bar/.ignore written" feedback.

> > The old behavior of vc-ignore was not broken for interactive
> > invocations.  It was broken (in rare cases) for invocations from
> > vc-dir-ignore, and that can IMO be fixed without affecting user-facing
> > behavior.  So I see no backward-incompatible changes here.
> Sorry, not *rare* but **all** cases! The invocation from vc-dir-ignore
> placed an **absolute file path** into the ignore file.

That's not what I see, at least not with Git as the backend.  I see
only the basename of the file being added to the ignore file.  Can you
show a use case where an absolute file name is written into the ignore
file by vc-dir-ignore?

> > My point is that Grep patterns can include characters special for the
> > shell, but we never escape them ourselves, we rely on the user to
> > escape them as needed.
> 
> The pattern is not prompted for separately!

True, but I don't think this detail matters for the purposes of the
analogy.

> There is no way, that the pattern argument for the *grep* command
> could be reliably parsed and quoted.

Of course it's possible.  It's just very complex and tedious, and more
importantly, requires the user to play by certain rules: e.g., the
user must agree never to quote/escape the patterns he/she types.
Instead, we give the user the freedom to decide when to quote and
when not to quote.  The same should be done with vc-ignore (but not
with vc-dir-ignore).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 12 Feb 2020 17:23:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 12 12:23:42 2020
Received: from localhost ([127.0.0.1]:58997 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1vji-0005rZ-17
	for submit <at> debbugs.gnu.org; Wed, 12 Feb 2020 12:23:42 -0500
Received: from mout.gmx.net ([212.227.15.18]:59597)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j1vjg-0005rH-7K
 for 37189 <at> debbugs.gnu.org; Wed, 12 Feb 2020 12:23:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581528213;
 bh=QQwrYFpyv1CwXI47Lm0JJP+gze+tY5+T04lxaOsiRNI=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=B4PHoCxbwlYE6u+z+Wxf9LhYX5ZJ4bYswJBeOVsXvrFB3vg0iWCJeUgl4zdA7eXgy
 qE1FqHcYO3AMraxOP/w9KTIwwN8Doe8wmoHK1CWUbK5yxk2OW8Pgk8U5c1BUaRioJY
 XIjO51nRT60m4aaf9uWJV44OQju9dUw0PT/m9fF0=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZCfD-1ixp9Y30Ij-00V5yU; Wed, 12
 Feb 2020 18:23:33 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 9C62F19431D5;
 Wed, 12 Feb 2020 18:23:32 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <b0e313e3-8fee-b0cb-51fb-a20af44acf4a@HIDDEN>
Date: Wed, 12 Feb 2020 18:23:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83zhdpqbas.fsf@HIDDEN>
Content-Type: multipart/mixed; boundary="------------8E60B8CE610F788A012CC1AE"
Content-Language: de-DE
X-Provags-ID: V03:K1:AAAWMUiESWXDXGiG1LN9IymwH1iDvu2FZiP038iVRO1kX6Hq0mT
 l48Ma8BG8SVFXui2NV1ipnGKBlPRJ9WiLtaKdujMammb6F3Rv4DQueexZO1jYGTesEFJmyY
 W0rh2rQ8PYgk5qDo8zwwi9DkjGzs+BeFwvfdU47JOX8VT7Xqp58W9zoTcQagfrfsXNlxpNd
 N8Dvsk+vIXAQd7PZ1w+Bg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:KshCTWTZF2k=:aQeNYz4ZWk8eY3Zdvlkw0W
 azbawV7JGyWdjQbdFV1Zs/AQ4ul4bUFCbc3bPglqNDglegbyJ6b9hK9wmMcs83PzbpmJkm8mD
 8TrTRXebNS8V5YqyIuVmEc8dDciVLbHfPY/HF+pm/kOYl5Aaeg8QRsQj8hj8B6uhyiRaCLrMq
 41pomOI/bTKIWJT3v776D6/VAW91spt4gd1bED9fIrLbeUVVhx4Fa8RoWGChED1UIc0uFECPa
 l3UzZ9PVCSqH+IfUuDkh8lqLUHUnojudD8mVOXL3RQX6dLXv2tebVNxN0OCgOcWv8gcRyh1io
 mWYwFEU+KHHZ1fp+3uNAC7i+Ddk1pOfVgajsNkIlufSQoi1E9Cbkwc49bsTGi129DIc/kAIj1
 ahPYhjYirAKn6Q3fQkNbxZHtbZWkxRFVFBmIwECkMVsGc4oAU+zV3jZMWKst7171AGZ4IWL5e
 3jZES1HyPgknMfSbpdNGMH3y1CWAutZ6m0+YYWXp/GMJjEAMm/7Gx4CXB8GHZBmPOjFwX6TiM
 A3dIgee6GcrLA0ilrQ1n9tHuxnX3RpFhZut15vomtL4/gzV8xRMWiiOskP2hKRxiN4dq02qaK
 sAqrGHvJgELiOIS05Z+4AnHSAExYd101Wzok2blsqiJVxubpokNKtwgD96WG7BgqvTpnK7tx0
 XPKsdK8EtoJGjaapqt75YxqbYnLySHeC9+qv7aTh2DTT23OfYHqL/PvCpBSF7lzNGc8JYk0y3
 FMdGkdUP72UgUbsb7NauXHXKQ60/AAR5rOGfPIvNInNwbbA1ulIe7L2KpvXAP2g1B37YjE0ED
 WRu4NCnHtrge8EfpVy8zzh+a2rijJjgeU8pSy9GALO/L5fJakoB+hWmiSxq8spE7h2RPKp/Uo
 ZLoibyC9UrdBUM0U6cPz+59qSITA623ru3Vkp41h3CWJjhP5thxSx9q5qwSvfhfH9Uv/NWyut
 zQ5T+Gc38rsy+J/rgm/rcY/RkizIE884COUJNaj+BJ7QRJ6bRcvJ1gd8fle0MannoCFFBZXFn
 BOYLC1CmZap/Kbzft3a7Yv9UbqVAtOlBg8KvDKfSJp+YaKJ0PL96sxro4w13YNEM0EmMyJV4b
 oIm/0crt1Ei8QDClJxZY3F1792wLgs4//0zY9LJBk1LK0SgT9Xs4o501K3aMP26hzmOPRaqkf
 Ce+/WNbVwO4Bt2F57pW7s53scf5HUg4F3fbX9z83Xxms+5gFIxbUQl15jvuDMf9TfvJ1Y=
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

This is a multi-part message in MIME format.
--------------8E60B8CE610F788A012CC1AE
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Eli,

I have refactored the API change request according to the latest
discussion. I assume, that the "file path" use case must be
implemented anyway, correct?

I have changed the code, such that the user visible changes are
absolutely minimized. Only one change remains, which never worked
before anyway.

I have also attached a complete sequence diagram, with annotations to
show, that it is not possible to determine the correct ignore file in
a subdirectory with an escaped pattern in all cases.

### API change

Function func:vc-ignore is modified to handle both the "pattern" and the
"file path" use cases.

-=C2=A0=C2=A0 The parameter FILE of *cv-ignore* is renamed to PATTERN-OR-F=
ILE to
=C2=A0=C2=A0=C2=A0 clarify its dual purpose.

-=C2=A0=C2=A0 The additional optional parameter is-file is introduced to d=
etermine
=C2=A0=C2=A0=C2=A0 how the PATTERN-OR-FILE argument should be treated. If =
it is nil
=C2=A0=C2=A0=C2=A0 (the default) the behavior is unchanged. Otherwise, a f=
ile path is
=C2=A0=C2=A0=C2=A0 expected, which is transformed to fit the ignore file l=
ocation and
=C2=A0=C2=A0=C2=A0 then escaped according to the VC pattern syntax.

-=C2=A0=C2=A0 The documenation string of *vc-ignore* is clarified to avoid
=C2=A0=C2=A0=C2=A0 possible misconceptions,like a file somehow being equiv=
alent to a
=C2=A0=C2=A0=C2=A0 wildcard, or that glob(7) patterns are the only type of=
 patterns for
=C2=A0=C2=A0=C2=A0 version control systems.

-=C2=A0=C2=A0 For the "file path" use case, users have come to expect that=
 they
=C2=A0=C2=A0=C2=A0 can mark several file in *vc-dir-mode* and *dired-mode*=
 to perform
=C2=A0=C2=A0=C2=A0 VC operations on that fileset. This is implemented in f=
unction
=C2=A0=C2=A0=C2=A0 *vc-ignore-fileset*. in *dired-mode* the user is prompt=
ed before
=C2=A0=C2=A0=C2=A0 making any changes (similar to a delete operation).

-=C2=A0=C2=A0 The new function *vc-ignore-pattern* is an alias for *vc-ign=
ore* to
=C2=A0=C2=A0=C2=A0 allow for a clear and unambiguous documentation string =
that does not
=C2=A0=C2=A0=C2=A0 mix use cases.

-=C2=A0=C2=A0 The new function *vc-ignore-file*, when called interactively=
, either
=C2=A0=C2=A0=C2=A0 operates on the current fileset in *vc-dir-mode* and *d=
ired-mode* or
=C2=A0=C2=A0=C2=A0 prompts for a file to ignore.

-=C2=A0=C2=A0 The function *vc-dir-ignore* is modified to call
=C2=A0=C2=A0=C2=A0 *vc-ignore-pattern* interactively. After processing, a =
message is
=C2=A0=C2=A0=C2=A0 displayed in the echo area with a hint to press "F" for=
 ignoring files.

### Proposed keyboard shortcuts

`C-x v F` =3D> *vc-ignore-file*\
`C-x v G` =3D> *vc-ignore-pattern* ; functionality unchanged

in *vc-dir-mode*:

`F` =3D> *vc-ignore-file*\
`G` =3D> *vc-dir-ignore* ; functionality was broken

### User-visible changes

The only user-visible change in the current features is the keyboard
shortcut "G" in *vc-dir-mode*. It does no longer write an invalid
absolute file path into the ignore file, but prompts for a pattern
instead. An additional hint to press "F" for ignoring files is displayed
afterwards.

The only new feature is *vc-ignore-file* for ignoring an unescaped |file p=
ath|.

Greetings, Wolfgang



--------------8E60B8CE610F788A012CC1AE
Content-Type: image/png;
 name="vc-ignore-sequence-diagram.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="vc-ignore-sequence-diagram.png"

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
6vJx48ZlZGScOXNm3rx5MuULL7yg8xqFmpbo/3TlXd27d5cojh07JgOKWrhcNrWrJU6j06Ml
AwcOfOONN3r37i02VaVKleDgYDZmAICiUAgt4e4rAADFfkMnl1rSvHlzGf7888+Vp1JzOxb3
X331lQzn5+crFwqUlyIjI+XpkSNHZPjLL7+UYRlj+66jR49aP1Eqchlz4MABGZYyXYabNm3q
chUKCgpkyoiIiCJqif5PV961f/9+5akMyFOJyOWyqWmJ0+h0Xi1ZunTp4sWLly9fnpKSoiw8
AAC4DVoCAGBoLQkLC5PhM2fOKE9lQKPjuO3T0NBQGZaCW4bPnj0rwzIrtRo9JCTE7r9WwcHB
Thd727ZtnTt3Dg8PV+6vpV3N69QS/Z+uvGqXhnW9NJbNZd8S/V1N0BIAAC9rCZeWAAA8/yUu
5WpJZmam8tTp1RKnb2zcuLH21RLbT6xfv7710oE29erVkylXr14twnPy5Ental6nluj/dO2r
JRrLVuxawpe4AAC89iUupY9pQkJCWlpaSkpKgrd5+65HE8BUESnLI38/MQAGWQxDYZym0bk5
LTAYhV2kPn36BOjuWyLl77Fjx3Jych5++GGdWjJhwoSA231Ljh8/rvQtee+999RKcKUjSv/+
/b/55psTJ05Iwl27dnValNeuXVum3Lhxo0ymzLboWqL/05V3de/e/ejRoxJIjx495Om8efNc
Llt4eLgMHzp0qBivlsyePfvtt98eM2bMuHHjpkyZsgBMvksCgZO/d5ffnTtxoSVoCVqClqAl
HtMSYe7cuZGRkWFhYXffffecOXPkpVKlSrmsrc+dOzd+/PjGjRuHhoY2adJk6tSpdnfisvvQ
xYsXt27dusJtunXrlpSU5LQoT01NlcUoU6ZMRESE0lW96Fqi/9OVd0VHR8syKLftsu0cr7Fs
8rRq1ao6jQ4toUoDAid/c2hJVlaWxWJJ8zYfv/xWGpgqoner3K/83WQAlr4wdhMYMhNlO9Gz
OcUZjPmDRxRq+gEDBgQU/lfe9+3bJ++Sctw/v3msXx5KulOQaIno4rvvvhsVFTVp0iTRxTgw
+S4JBE7+XkRO6+5oyenTp/Py8nIBCsnc4DbK38MA6ijbiZ7Nyez/OBg6dKhOLenbt++OHTvO
nDmzf//+jh07Btz+4Q60xOtaEh0dPWPGjGnTpomfrFy5kv+FAQC4jZzW+TlF4OcUgZ9TNNzP
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
yjsp72gJo1u0hBfOWbWEeyDxd10tAY12GExTAAsEoyUuOLpVf+Xd19d30qRJpaWlSv2xY8cG
Dx4sld7e3g888MD58+fV9snJyQaDwc3NzXaz5cuXN23a9LbbbmvTps3evXtXrVoVFham0+ki
IyNzc3OVZmVlZYsWLQoNDdXr9aNGjSoqKlL2VbHRzPxidu3aFRERIacICQlZsWKFc79waAkA
WgJoCaAlaAla4lRaEhsb+80NpKCG6M4778zMzLxy5cqPP/44efLksWPHqu0HDhx49uzZcpv1
69dPIi8KsXjx4vr16w8YMODEiRPKw549eyrNli5dGhMTc/LkyYsXL44cOXL69OkWZ0tsNDO+
mMaNG6elpZWUlJw6dWrMmDFoCVoCgJYAWgJoCaAlmtGSo0ePKuUjR440b97cvM2lS5cMBoPa
vqCgwOKhTJp9++23Slk+PvKwsLBQfejl5aWUw8PD8/LylPK5c+dCQkIsaomNZsYX06RJk9TU
1NOnT/MlLrQEAC0BtATQErQELdGYlhQXFytlKeh0OqW8f//+6OhovV6vfJmqdu3aavvr16+r
u9toZnIWiw/FT4y/suXu7m6xvY1mxhdz4MCBhIQEPz+/sLCw7du3oyVoCYCrawkp75oLESnv
pLyT8o6WMFsiSEGdLZHC22+/feHChV9++UX+VT3BRBjsbGbtoQxt8/Pzza9KyRVRsdbMYma8
iEpGRkZgYCBagpZwDyT+rq4lTN1oLkQsEMwCwSwQjJa4spbExcUpuSVSmD9/vlIvw/oPPvig
pKTkxIkTgwcPtuYbdjaz9jAlJSU2NjYnJ6e0tPTw4cPDhg1T6v39/aVSbW+tmclhhw8fLmYl
bURLgoKC0BK0hHsg8UdL0BK0BC1BS+gS0BKHG91e++lKwXt/v/qfyyaGoKzEpdfrExMTRTCU
+m3btsm408PDIzg4ODU11Zpv2NnM2sOysjLZKzw83NPTs127dunp6Ur90qVLfXx8ym1mcti1
a9fKxeh0uoiIiMzMTLQELeEeSPzRErQELUFL0BK6BLTEgUa3F/bnfD7m2fTA+PN7D9nzPShA
S9ASIP5oCTdotAQtQUvoEtCSyhndXvvpyvHXN29rOUT+tNGrh7mToCVoCVoCxN+ZtYSUd82F
iJR3Ut5JeUdLnGx0e2F/zr8eXrDBq0faH+7dcFu3zb69LToJWoKWuIKWcA8k/q6rJaDRDoNp
CmCBYLRE86Pbd97f9tjz6aEDxEbWuXeWmjSvHjacBBzkhduyZcu+ffssrjaGlgCgJYCWAKAl
aInGRrfrPLqsc7vn18L/tg23dctfnXFkwQopKzPVlKu/bPyKWNxkWP/ll1+qP1ePlgCgJYCW
AKAlaImWZ0tS/vpB5MPrRU7+N97d1WXMFsP9l3LzudU7Alu2bNnwe6RGxvRffPHFV199df78
ebQEAC0BtAQtAbQELdG+ligpCrl5x5LXbA0esN7t1+9x/b3NcMzEQdi3b9/u3yM1X375pTjJ
2bNnL126hJYAoCWVCSnvmgsRKe+kvJPyjpY4lZb8L3P6Ut6pT/tN3+DRdX3tyPTAeMykxsnP
z5dXZ3vSc1/9D6kRITl//rw4ifqjMWgJ90BngpR3x+024L8sEMwCwSwQXO23VPpFV/7dkuvX
fjmWvGbnPaMwEzpB19QS7oHEHy0BtAQtQUvoEtCSmtcSlaL8b4+lrDP5lXegE0RLgPijJdyR
0RK0BC2hS0BLqk9LgE4QLQHij5YAWoKWoCV0CTWvJT179nxaywypdbvtvw4dOvThhx+eMmXK
06DZ19Hxkc8RWgJoiTa0hJR3zYWIlHdS3kl5dxEtAYDKgpR3cJH4s0AwuK6WAAsEQ1Uwb968
zv/jjjvuaHkDGVe10RRDat2+wDryV2mjPLU2AFXMsGHDWCAYXGS2By0BtATQEqgSNm3atHLl
yuXLl8ug6g1NUW5uyfTp02fMmLFw4cI3AKoY+fjIh0g+SvKB2rNnDzcWQEvQEkBLAC2BipGR
kbFmzZo333xTMRMNUa6WJCYmTpw4cdasWcsAqhj5+MiHSD5K8oHat28fNxZAS9ASQEsALYGK
sXv37vT09P/f3pnA13Tn/R9JJaqVhaRKJCRay1hLH7VGbLUUpZgpOp3qRi1dKLVXaaeWWKYE
kYRaUiEpIkJEJKESFSG2IMzoaD3TqWmnVJfpPM//9f/WmefMmbuce7Ld3HvP+/36vfI699yz
fn7nnPt759zfudKcSkhIWOdWONSSF1988aWXXpoxY8Y6gEpGTh85ieRUkhOqoKCACwugJXR5
p8s7Xd7p8o6WOIDunhbk5eVJQyotLS0lJSXRrXCoJeIkEyZMmDdvXiK4MB89NcUD9kJOHzmJ
5FSSE6qoqMiVT3mugeRvXi3h1o3bRcQDgnlAMA8INhXShCooKJC2VG5ubpZb4VBLJk2aNHXq
1Ojo6Cxw7Xr0gL2Q00dOIjmV5IQqLi528WYl1z3yR0sALUFL0BI+EsBJn47y7vTp0xcsWLBl
yxayopUGBE7+aAlagpagJWgJHwmAlgCnJIEDWkKbGy1BS9AStISPZLQEaKUBgZO/ybWELu90
eafLO13eXQq6e6IlwClJ4ED+ZtQScNO7N9ymAB4QDGgJAACgJYCWAFoCgJYAAKAlgJYAoCWA
lrgP1apV46gAALQE0BJAS9ASQEvQEgBAS+jyTpd3urzT5R0tMQDdPdES12H//v2NGjUyuZZw
ShI4+aMlTm3jghtFxAOCeUAwDwgGtMQ5zJ49e/To0SbXEk5JAid/tAQtISK0BC1BS8B0WlJS
UvL666+HhIT4+fmNGDHi3LlzyvjNmze3bNnSx8enYcOG7733njLy8uXLkyZNatCgQZ06dWbO
nKmMzMzM7N+/v7+//3333devX7+CggLVCmSNdevWlbfGjh178eJF/TUKPXv2XLNmjf4y33nn
Hdkk2bB27dqlp6frbJi9iYuLi3/3u9/Vu4sMyEt1evGi+vXrV69enVOSZjGQP1oCaAlagpbw
kQDO05JZs2Z16dIlJyensLBw6NCh48aNU8YHBwevXr1amuxHjhwZOXKkMvKNN97o1KnT4cOH
ZeLnnntOGdm8efOtW7eeP3/+9OnTzzzzzKhRo9RWfteuXY/dRQamTJmiv0bxFpGQU6dO6S+z
b9++Mq/IzKuvvtqhQwedDbM3sQiMbM8nd3nssccmT56sTt+nT5+8vDxOSZrFQP5oCaAlaAla
wkcCOFVLIiIiDh48qAwfP368YcOGyvCDDz44b968o0ePaicOCwtT7znYpKioqH79+mor/8CB
A8rw/v37Q0ND9deYmJjYtm1bh8vMz89XhkU2fH19dTbM3sSNGjVSN0zmUjdMps/NzeWUpFkM
5G8WLaHLO13e6fJOl3eXgu6eJtcSaaxX01CjRg1l/J49e/r27evv79+4ceP4+HhlpI+Pz4UL
FyzWu2vXrs6dO/v5+SlL8PLyUlv56sQyIPPqr/GVV16ZOHGiw2VaiIfOhhmZWLthMsGVK1c4
Jc0GgZO/ebUE3PTuDbcpgAcEg0dqSXh4eE5Ojr1lSjN9w4YNQUFByktRFOubEqGhoUuXLj15
8uTly5flr9r6194tkQH1poS9NbZt2/ajjz5yuEybpmFzw+xNrHO3hKMIANASQEsALQGoAi2Z
M2dO165dMzIyLl68uG/fvkGDBinjn3jiCWm7y0jRkuDgYGXk1KlTO3XqlJ2dre3CIdKydu3a
4uJiGd+/f3+tQnTr1k3pWyIDahcOm2uUBd5///2XLl1yuEybpmFzw+xN/Morr6h9Szp37qze
okFLAAAtAbQE0BKAqtGSkpKSefPmRURE1KxZs1mzZuvWrVPGr1y5Mjw83MfHp2XLllu3blVG
ijZMmDChfv36fn5+s2fPVkbGxcXJlN7e3g0aNJBFaRVCeRKXTDxmzBj1gVc217h69eqoqCh1
q3SWadM0bG6YvYkvXLjw29/+VnkSlwyoX+hCSwAALQG0BNASgKrRksqjVK38p59+es6cOVQi
AKAldHmnyztd3unyTpd3QEuqTEu0/T1MDqckgZM/WuLUNi64UUQ8IJgHBPOAYEBLKltLgFOS
wMkfLUFL0BK0BC1BSwAtAU5JAgfyR0sALUFL0BI+EgAtAU5JAid/tAQtQUvQErQELQG0BDgl
CRzI30RaQpd3urzT5Z0u7y4F3T3RklJh76m7wClJ4GDC/HlAMJhXS4AHBAOgJQAAaAmgJQBo
CXiUlqg/eujv7z927NiLFy8q4zMzM/v37y8j77vvvn79+hUUFCgTq1i/vHr3pxJff/31kJAQ
Pz+/ESNGnDt3Tl3L7Nmz69evX716deXlO++807BhQx8fn3bt2qWnp1N9AICWAKAlgJaAqbWk
a9eux+4iA1OmTFHGN2/efOvWrefPnz99+vQzzzwzatQoI3dLZs2a1aVLl5ycnMLCwqFDh44b
N06drE+fPnl5eerLvn37ymTiLa+++mqHDh2oPgBASwDQEkBLwNRaov6O4f79+0NDQ62XXFRU
VL9+fSNaEhERcfDgQWX4+PHjDRs2VCfLzc3VzpWfn68Mi5n4+vpSfQCAltDlnS7vdHmnyztd
3sHUWnLhwgVlWAZ8fHyU4V27dnXu3NnPz0/5jpaXl5cRLRHB0H6zq0aNGupkV65csTcXHVQ4
JQmc/NGSKmvjghtFxAOCeUAwDwgGk9wtkQH1bokMLF269OTJk5cvX5a/qjkonUNULF6Gh4fn
5ORYb5u+h6AlnJIETv5oCW1utAQtQUvQEj6Sza4l3bp1U/qWyMDkyZOV8UFBQWvXri0uLs7O
zu7fv79qDoGBgRkZGersFi/nzJnTtWtXGXPx4sV9+/YNGjQILeGUJHBAS9AStAQtQUvQEj6S
0RKjT+Ly8/MbM2aMeIgyPi4uLjw83Nvbu0GDBvPmzVPNYdasWXXq1LH3sqSkRCaOiIioWbNm
s2bN1q1bh5ZwShI4oCVoCVqClqAlaAkfyWiJYy0hOk5JAgfyN6OW0OWdLu90eafLu0tBd0+0
hOg4JQkcyN+MWgJueveG2xTAA4IBLQEAALQE0BJASwAqXksAAAAtAbQE0BIA52lJ1RYqCADQ
ErQE0BJASwAtqcq7JRz5AICW0OWdLu90eafLO1qiB9090RK0hFOSwIH8zagl3Lpxu4h4QDAP
COYBwYCWcJiRFYED+aMlaAlagpagJXwkAFpCKw0InPzRErQELUFL0BK0BNASDjOyInAgf7QE
LUFL0BK0hI8EQEtopQGBkz9aQpd3urzT5Z0u73R5B7SElh+nJIED+XuKloCb3r3hNgXwgGDw
bC0pOXvh0+hNl0+dQUsAANASQEsALQFwtpac2XUwa/SslKB+Rdv3cbcEAAAtAbQE0BIA52lJ
ydkL+QvXp7YcJW/t8O1aeU6ClgAAWoKWAFoCaAnw6WipJcrtkR21I3c1HJTk1XnnfZGV6iRo
CQCgJXR5p8s7Xd7p8o6WOIDunubRkrdem7pq8PMfhQ1K9u+VXK+vjJHiBCdBSzglCRw8NX8e
EGyKuxNoCQ8I5gHBTruk8rloEi2p2kIFcUoSOHhe/mgJWoKWAFrCRwKUWkvee3Lchw/00arC
oRHTP67f/1xGLulxShI4kD9aAmgJWoKW8JEAztASpW/J1rUbska9tbN2D8VM9vd8GTPhlCRw
IH+0BNAStAQt4SMBnKol6pO4TsZs39NsxPbqnZK8O6cE9cNMOCUJHMjfXFpCl3e6vNPlnS7v
LgXdPU2rJQqXC05njXprb5unMRNOSQIH8jeXloCb3r3hNgXwgGDwSC1RuZCTf2zO6kr6lXcA
ABNeeNESQEsALQE+HUutJQAAgJYAWgJoCQBaAgCAlgCgJYCWAFoCAADm0RK6vNPlnS7vdHl3
KejuiZYApySBA/mbUUu4deN2EfGAYB4QzAOCAS0BTkkCB/JHS9AStAQtQUv4SAC0hFYaEDj5
oyVoCVqClqAlaAk4jcslaAmtNCBw8kdL0BIiMqOWyGIpFIrrlJNxO9ESWmlA4OSPltDlnYhM
1+Vd9u6f/5xBoVBcocj5mOT1WBnMBC3xDOiBTeDkj5YAuIGWVN5NGNqCFIrraMmZ9yaUwUzQ
EgAAtATQErSEQqFUmJbI3xPzxiXV6LR34arc3NyCgoLi4mK0BAAALQG0BC2hUChO1RIpn879
3fYanVLmLsvKyjJiJmgJAABaAmgJWkKhUCpYS6Qcn/OLmeycvcSImaAlAABoCV3e6fJOl3cK
hVLxWiIlf/azBs0ELfEM6IFN4OSPlji1jQtuFJFJHhBss3m0cGGPgQMjHLai+vcPf/fdyAps
llWrVs3dW5YesAv2ytGjY5s2DaikHfTU3Eq1X9bno0EzQUs85p+vhEDg5I+WoCVEhJb8u3z7
7Rv16tW6ePElh62o8+dfCAq69/btqbRNzaAlXbuG7Nw5zMm5VV6elVpT6sLLqSUGzQQtoZUG
BE7+aAlagpZ4oJZs3PjE4MFNLfRj2LCHAwN9a9b06tCh/vbtT2pvmGzdOsRmG6uoaJy8e999
NaXIwOnT49CSsi3ERWKpU8fnzp1pFbVJrrmPZdikav9Jxd4tMWgmaAmtNCBw8kdL0BK0xAO1
ZMSI5ps2PaG+vHjxpQceqL1kSdQf/zhBWqXHjj0zfHgz9d34+IG/+U1L64VcuvRSUNC9S5f2
+vzzSVKWLeslL2UkWuK+TXbtZqAlBicrrZboleqdkv8Qa9NM0BJaaUDg5I+W0OWdLu8e2OW9
cWO/y5dfVl8+/XTLd97pYa8hJdISHu5vPX706JZz53bVjpkzp+uYMb9S22pr1vQLC6vj6+vd
qVODoqJx2jZct24h2jswokMPPnjf3/72mnZp//iHNLO6h4X5BQT4Pvts62+/fUMZn5Hxm3bt
HpDFysLXr++vjPzxxzdnz+4SGlrH399H/EoZWVz8ovhVYKBvnTo+Tz758F/+MkXdht//vmdw
8L3y1oQJj3z//TT9NcoE48e3l4lF3t5/v6fNZqi9ZdrcBot/vVv/J97elsgEon8hIfdXr15N
J2SbEWmLw60q8ybZvMNg5JAwstn2QhaXnjy5o9SOFBmwvuFjc9U6N0CMiIf1l7jsRVQqaUlI
SEhJSbE2E7TEM6AHNoGTP1oC4AZa4swHBNeq5X3r1r/bTNKYKyl52V5TSVpXMr31eJlL6zZS
5GX9+rXVttrQoQ9dvTpeZp8/v1uXLiHaNty+faOaN68rzThl5HPPtXnvPcuO9UuX9urVK+zK
lfFfffWq2M5rrz2qjBeBSUp6UpqeIjMyozJStCoyMlQ2QCaeMqWjMrJ166DMzKdv354qwvPK
K4+MG9dW3YbevRt/9tkrUmRg3rxu+msU+1Kmv3btlZ49Q+01Um0uU2cbdBq+9rZEJhsy5KE/
/3mifsg2I9IWI1tVtk3Sv1uic0gY2Wx7IYuRykupHaWCRI+tzUF/1RWiJfYiKpWWrFmzxqaZ
oCUAAGgJoCUeqCW+vv+hJd7eNb77bmpptcTLq7rFXNLMlUWpbbXPP5+kDMu61CWobbiOHR/c
vHmwcjcmJOR+7fYopVmzuhcuvKgMf/HFpLCwOspwo0Z1Vq7s86c/TdBOHBERoP733Wb5+uvX
ZC3qNpw9+7wyfObM8+q9IHtrlAnU6WUt9hqpNpepsw06DV97WyKTXb06QTuXzZBtRmQwmXJu
kr6W6B8SDjfbXshNmvxHBanjteagv+oy9C2xHrAXUWm1JCYm5sMPP9y9e3dubm5RURFaAgCA
lgBa4rFa0rixn7YTiP7dEtEGafZZjw8Ovlf/bon+v5ZTUoY//HDgTz9N/81vWkpj1OYtHW1b
sEaN6sr4Eyd+N3ToQ3Xr1mraNGDv3pGqaFmb1fHjz0ZFhQUE+CpLEI9St0GdWAZkXv01ahcu
A/a0xOYydbZBpwVvb0tk+OefHXfesBmRwWTKuUnG+5ZYHxION9teyBYVpI6397Cs0j5Ey+Dd
EnsRlUpLYmNjxUzWrVuXmJh44MCBgoICtAQAAC0BtMRjtWTEiObx8YO0fUsWLbL74yTx8QN/
/esW1uNFJ6z7lowe3dJgQ1Dasq1aBU2d2ikszE/tJKAtIi1Xr463t1Uy+549I1QLkoas9d2S
8HD/hIRBf/3rqyI/8le7Deo/12VA/ee6vTVq75acOfO8w7sl2mXa2waLnhgWL+1ticGGvs2I
DCZTzk3S2SmDbqCz2fZCNnK3xOaqLbawnFqif8Qa1JIPP/wwJiZG+SrX7t278/Ly0BIAALSE
Lu90effYLu8bNz4xaFCE9n6ItAKXLet17dord+5My8v7rfZJXAMHRijftrIoFy68WK9eLZlL
fRKXvCwuftF4G3TbtiHyMjZ2gM0m2vLlvXv3bnzu3AsiLadPjxs16l9qJI4kbVAZKY3XBg3u
U38dMjIytKTkP/qWyE4lJw+XPZLxskfabejbt4nSRUEG1K4I9tY4e3YXdXqZwF4j1eYy7W1D
UNC9siJ1douX9rbEoJbYjEhbdJIp5yZpi8USHB4SDjfbXsgzZ3ZW+5ZERYXNmtXFoJZYbKFD
A9HffnsRlUpLPvroo3Xr1omWxMbGJiUl5ebmoiWeBD2wCZz80RKntnHBjSIy7QOCb916Q6sQ
UqQt9eSTD/v7+9Ss6dWx44Pq75aIe+j8nOKpU+Mefzy8du17pPTr16Sw8LlS/Wtc1tK0acCP
P75pc+H/+Mf0lSv7NGtW18fHq1WroJSU4cr4rVuHPPxwoK+vd7t2D2RmPq2M/OGHN996q3NI
yP0BAb4iSMrI1NQRMuU999QIDf2l04J2G5QHOsnEL7/cXn1wk701ygQvvdReJpZZHD6Jy2KZ
9rZh6dJekra9l/a2xKCW2IxIW3SS0fZxL8MmWfSS1y7B4SHhcLPthfzdd1MnTuygPIlLBtQv
dDlctcUWllNL7EVUKi0RFdF+jysrKwst8bB/vhICgZM/WoKWEBFa8h9l0aLIAQMiHLaTZJp3
342spF+NeOKJplu2DPaMn2n34J9+97BfjHHlgpbQSgMCJ3+0BC1BS0ynJVVb/vGP6WvXPt6q
VZD6jGC0hELIaAmtNCBw8kdL0BK0BC1xdvsyLMzv+PFnPaZ1i5agJWgJ0EomcEBL6M9Nl3e6
vLuZllAoFLTEhNADm8DJHy0BcAMtceYDgvmnNf/gZzfREgAAQEsALUFLXHF7+HIXu4mWAAAA
WgJoietqif5zaWlMu0V7vVK3BC1BSwAA0BK0BNAStAQtQUvQErQEAAAtocs7Xd7drcu7+rN0
gYG+EyY88v33//pZuuLiF4cPbyYj69TxefLJh//ylynKxCrq7GvW9AsLq+Pr692pU4OionE2
HwG8YEH3sDC/gADfZ59t/e23b8jIl15qHxc3UJ1mw4YBMsbeepUVrV7dr3Fjv5o1vVq2rJeT
MyY+fmDTpgHKes+ff8H6h+1sbpjx/VJ/P3Hy5I7Kz/PJgPqzfUZ2XMIcP769rEvm1f72or1l
2gxKSkbGb9q1e0BWJKtbv76/zUq0uTE2V2S9s2oJD/c/c+Z5ZTg+fpAyIGNkvH4Uy5b1Cgm5
v3r1atroPv302YYN71++vLfFWnSq2HovunUL2bp1iDrvH/844cEH7/vb314zeDwY3GZ7yaMl
UHnQA5vAyR8tcWobF9woItM+IFjaZ717N/7ss1ekyMC8ed2U8a1bB2VmPn379lRpAr7yyiPj
xrW1d7dk6NCHrl4dLy25+fO7dekSYvMXvnv1CrtyZfxXX706ZsyvXnvtUaXJ3r17o8TEoTK8
bdsQGf7hhzf11ztwYMTlyy/LihYu7HH//TUHD25aUvKvlz16NLLWEpsbZny/lIHZs7tILNeu
vSKlZ8/QOXO6Gt/xuXO7Ktkq8zpcps2gpEhDPCnpSWlSS6P8uefa2KxEmxujs/E2m8IiUdLW
lwGZXhL+5pvXZfiDD/qJr+ovbciQh/7854nahe/ePSIo6F6bv26uUwXWe7Fv36jmzeuqv2kj
u//ee5HGjweD22wvebQEKrWVQwgETv5oCVpCRGjJf7Roz5593uL/4hbl669fCwm5317z/fPP
JynDt269UauWt/XszZrVvXDhRWX4iy8mhYXVUYcbN/abPv0x+SvDDtd7/fpEdUX21qvVEocb
pr9fykCTJv5qPkVF49R8jCxfJtbO63CZ9oJq1KjOypV9/vSnCTrfm7K5MTobb3M5H3/81KhR
LWRAmv4iFcqdmZEjm+/a9ZT+0q5enaDdmD/8oW+DBvfl5//WYePbogps7kXHjg9u3jxYBi5e
fEkmlreMHw8Gt9le8mgJ0EojcCB/tAQtQUucpyXffTdVGZYBX99/teeOH382KiosIMBX+baP
l1d1I31LbLZ3pY2o/eJQjRrV1bfmzOkqY5YsiVLHlHO91gMWL0u7fAnEZj5GdtxiXofLtBfU
iRO/Gzr0obp1azVtGrB370jjHX4Mbrxa/v7310NDf2mRt2oVtGfPiM6dG8qwjFG+1KSztJ9/
/o+1iwzMmPGYvQZ3aasgJWX4ww8H/vTT9N/8pqXoWamOB4PbrHOIoiVAK43AgfzRErQELXH2
3RIZUP+dLAMJCYP++tdXpTkof9V2nvJd/FJpibQpr14dbz2+sPC5kJD7d+4c1rDh/ZcuvaS/
3orSktLul8EbDjZ3XHu35MyZ5x0u015QSpFmtKhC/fq1jWuJvRVZ7Ky2REaGJiYOffTRB2VY
/ooS9OwZWtoorl17JSIi4P33e9pcRWmrWHZcNGnq1E5hYX5q3yeDx4PBbdZPHi0BWmkEDmgJ
Xd7p8k6Xd2doSd++TZS+JTKgfvlemr/JycPv3JlWUvLy8OHN1GZcUNC95869UCotWb68d+/e
jWUuaVOePj1O+ZrQt9++IW3Nw4dHy/CuXU+1a/fA7dtTddZbUVpS2v2aObOz2jkhKips1qwu
xnd89uwuarayEIfLtBmUlF//uoW0rWWkaEmDBvcZ1xJ7K7LYWW15771IsUTlpsSKFX3EG3//
+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
n59fjx494uLi1Mm6d+9+5coVe/Omp6dHRkbeexcZ2Ldvn3YyBX9//6ioKNWvqllhbwutp7Ee
0JlFf5p69eoNGzbs5MmT2ndnzJjh5eUlf3WWaQ+dDdCJQj/eMocpA02bNtUuWYYjIiIc1l1m
ZmZwcHBxcbHFBpw6dapZs2aFhYU6IctCVq5cSSMPANASQEsALfEoLRkwYEB0dHRla8mxY8ca
Nmz4/PPPZ2RknD9/XprpsbGx0lZWJxs8ePD8+fNtzpuVlRUYGDhr1qz8u8yePVteykiLyWSZ
kyZNat++falu5thrnRt51+COS8JDhgxR3yopKRE3mzdvXqNGjWS4VNujvwE6UejEa3AJ9tbY
unVrqUp1zNq1a2WMkbrr37//u+++a7HAadOmjRo1Sj/kxYsXy+7QSAIAtATQEkBLPEpLpIl8
+PBhpSUaEBBQWFioviVj6tatK2MuX74sjdQGDRrUqVNn5syZapN0+vTpMoG/v//YsWMvXryo
08wdOXLk+PHjdRrxp06dCg8PF2mxnnfo0KFTpkzRTj958mQZad1iPnPmjK+vr0tpifDpp59K
ROrLDRs2/OpXv5KBNm3aqPeLKlZLrKPQidfgEuyt8YMPPujQoYM6pl27dqtXrzZSd3v27GnS
pIlWzOQQql+/fmZmpn7Ihw4dCg0NpZEEAGgJoCWAlniUlkjT89y5c8rw6NGj33zzTe2/rp97
7jkZeOONNzp16iT2IoqijFEajl27dj12FxmwaH1aNGeDg4OV5qZOe3rbtm2tW7e+dOmSxbz1
6tVTxElFXgYFBVn/g3/ixIlt27Z1cS3p2bPn+++/r/zXX4Yr6W6JdRT24jW+BJvTi1c0btx4
x44dyipkWMYYrLtu3bqJw2hvgzz++OMOQ5bDVfUlAAC0hC7vdHmnyztd3j2ky7uPj4+qJRkZ
GQ0aNLh8+bIMy9+QkJAjR47IcFhYWHp6unWT9MCBA8rw/v37bf4DW21cenl5absp2+vL8eKL
L6o3VbTzXrhwQbtYWZSMtFiUIPKTk5NjPb5K+pYoA3l5eU/cRXmZnZ0dGBio7I78lWF1g0ul
Jfp9S6yj0InX3pKNhKkMLFq0SOme1L17d+V7WQbrTjRGNR+hWbNmKSkpDkP2GC2hBzaBkz9a
4tQ2LrhRRDwgmAcEm/MBweIeaj+Nq3f7E69atUoGVq5cqfaIEHWxaFwqDUd1pAzINDrt6aCg
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
QmCC
--------------8E60B8CE610F788A012CC1AE--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 11 Feb 2020 22:28:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 11 17:28:21 2020
Received: from localhost ([127.0.0.1]:57674 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1e0y-00029r-FN
	for submit <at> debbugs.gnu.org; Tue, 11 Feb 2020 17:28:21 -0500
Received: from mout.gmx.net ([212.227.17.22]:54261)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j1e0v-00029d-QN
 for 37189 <at> debbugs.gnu.org; Tue, 11 Feb 2020 17:28:18 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581460091;
 bh=w7b9a1onwjxwR4AQWbyXnl/QpRrjUd/59RbzftsS+8E=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=Exp9N+2QbtUy0orGe7b8P6Qxc5LHsqJagTRdqLQh74y4F6woCpCD/hRG9S4uhYb5s
 d2yy7q84HBiPxnNNkGxken+2qChWA0XAzcmF1k2uf0LWO5/+Qjgxk0V8GVz7BrZlsv
 IU48FhnGWmC9VLqrTDvKJee0x1hwN2IKHOtFAMHw=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MNKlu-1iqAb30JP0-00Oqhs; Tue, 11
 Feb 2020 23:28:11 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 5A0241943196;
 Tue, 11 Feb 2020 23:28:10 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> <83zhdpqbas.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <2c8419ae-723d-c7ae-a60e-59d1b1cbc2c1@HIDDEN>
Date: Tue, 11 Feb 2020 23:28:10 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83zhdpqbas.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:FoB0JqbCOgx6AYRkUgdEC0w98+Vc2aYhdOM0FpKj+cxD/cuY7LX
 4QX21BB6O6gx/KaIGiGZJc/MQDbq2e9Pcwa59mPaRJsTAZayuFgskudfWuJtuth/J2IkbPb
 hSxkx5gZ6P58vl6Cs5LKV1hnJ+lSceVRKIAA/4PW859B/FDoWloTevr3O0tbRPUNCtQgIpp
 n3mXD56WLAeZiiHbliryg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:JasEDOzoyC8=:kQPwQ1NPx8mIcqTRCFbB14
 UJx671HvlCjVG80RZwSs2XWKWAMaT/GVG+dQC4x3UBf9YXQGfLilmiAQj67rLkHUOOs742l6r
 mr7qCv7Tx+RIl520xulrYu1zJY2IIBlvvfDjfwY8RcQwRZgnOizdwu+GFp/RH1Y8xh5d/QVnx
 cYl5LSOTw0hF5KRth9m/tL+7JIhJQ7na7/nbYcRqsmzixscCSQAP5uJ2QhKQni3hcchwVtXX/
 EWe/HqAt8wPvXYgCgSleX+tZ2jALu7ssYN8DX7joiJy7xf5tUZv1hUGq06CWx2hsm0LOaDts3
 pIt7xYbOMburW3+G1z6HmMlYccyvYk6H56B++uigS8988xOH0GW+CGpVePf3yfTjQ3k5hwOly
 noxruvdS1Q4fKglfybLgxNDqpJRKr2oxej1AocW8eKcN+XsMckRJvk0j1kg9CI0M6KnuPIqj5
 8lucEZ0EgX0ZsN+Mml0x9WafInm06XIfSNOtze+qpJ9PmqRrKlzW0wJhR133LGg9DmhMeyLIa
 Nbnn0Aj0Heo0bEQmeFJYKXbdWo1IvUWhfMl8xes3uGFmmePm3vHEPFE6odOWbR9FrepeODQGX
 WnWznd318K1kwUdNQ7aD6Wab3cRsu2qC3wWN/nIfVh97NnFxxkitNQpNge5bHt78ECA9ZA92Q
 ut2AYNm8oi4ftGbveNTlerBxhkWjtwEUnZ3ziXGUEH4GPhixLFuralV/0YrWnIHkNmQ9pUY9T
 GCGrwX2oMaI5ieWId5QamK2JUaguAVxenh87CFCVC79FQ2odK7ropH+7UW16p/NLM6cabUho/
 u8qeQMm5FyA299f0FMX9ehtXQdwrSd1SYPVMzwpztANw5uycHlGfe1Kv0O/4XuqjLREKQWBXb
 EN0iq8DPVdRLMqluNVdlJ1K7XmuOIoebt+P9kSYg9B8/X0R3IB4DHxrv3E3JFp28p53A2hmxi
 jcKBg7/z3ciQ8tDvoQNqJUALMeKN0eyxyzYOMfeqx3i+eaoEP8SEDLk2TIE2NfBu3cPVZFzEm
 fSyTDY2Lh86mWUAPmrnS8syXKKzJHygt+14tpluTXbD47iDJtJC9f6xNvs6gyti4oT+LRe79N
 Wfqeef8Yf0PEgCsOlpuOHFxiVNphvPs0W3yQMPrs2b6bpxuAXmpdkP+IJIOVPMVrM1EZv7piz
 +7itnXgkaoH1Ls9/yQAdMiTg2d18XL0qqphx8s9Pknp9DiZBuNoyucZDCsQnfTDbhoABaqjFl
 86qoqhJFecrDsIm2i
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 11.02.20 um 18:32 schrieb Eli Zaretskii:
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Tue, 11 Feb 2020 02:45:41 +0100
>>
>> I suggest, we stop talking about the use case, where `vc-ignore`
>> is called interactively, I will let you have your opinion,
>> although I strongly disagree
> If you strongly disagree, then why do you give up so easily on your
> opinion?  I didn't yet make up my mind, so maybe you will be able to
> convince me.
I do not actually give up:-). I just think it is easier to
convince you that the "file path" use case is already supposed to
be supported by Emacs. In that case we are first talking about
fixing the broken functionality, before deciding how to implement
it exactly. Otherwise we will get lost in a "pattern" discussion,
which has no point, since I don't oppose it.
>
>> and the unsolved problem of interactively locating the correct
>> ignore file makes it ultimately hilarious:
>>
>> A command that locates an ignore file, but can only do so, if the
>> default-directory is already the one containing the ignore
>> file (always true for SRC, CVS, SVN)
> Is locating the ignore file a separate issue?  AFAICT, we currently
> always look for the ignore file in the repository root, is that right?
> If so, are you proposing a new feature here, where we would support
> ignore files in subdirectories?

I am not (yet) talking about a new feature, but about the "file path"
use case in *vc-dir-mode* for per-directory VCSs (CVS, SVN, SRC).

With a "pattern only" implementation it will become an issue, when
dealing with a recursive SVN repository in *vc-dir-mode*. Invoking
*vc-ignore* in a *vc-dir-mode* buffer will always use the current root
of the SVN tree. However, when a pattern shall be added to the ignore
spec in a subdirectory, a new buffer must be opened with the
subdirectory as root.

E.g., in this *vc-dir-mode* buffer it is not possible to use *vc-ignore*
in "pattern" mode:for adding an ignore pattern for SVN to `sub/`
or for SVN or CVS in `sub/sub2/`:

``` {.sourceCode .text}
VC backend : SVN
Working dir: /the/top

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .svn
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sub/CVS
=C2=A0=C2=A0 edited=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sub/.c=
vsignore
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sub/sub2/CVS
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sub/sub2/RCS
=C2=A0=C2=A0 edited=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sub/su=
b2/.cvsignore
```

In case of nested repositories with different VC backends (e.g. in
directories `sub` and `sub/sub2` above), it may even become necessary to
invoke *vc-dir* with a prefix argument to specify the appropriate VC
manually.

``` {.sourceCode .elisp}
>>> (let ((default-directory "/the/top/")) (vc-responsible-backend "./"))
SVN

>>> (let ((default-directory "/the/top/sub/")) (vc-responsible-backend "./=
"))
CVS

>>> (let ((default-directory "/the/top/sub/sub2/")) (vc-responsible-backen=
d "./"))
RCS
```

It is obvious, that it is quicker and safer in that case to just open
the ignore file directly and edit it. Ignoring a pattern in `sub` or
`sub/sub2/` leaves only the command
``svn propset svn:ignore pattern dir``, which overwrites previous
patterns making the whole operation complicated. This is a very good
point for implementing the "file path" use case.

With the "file path" algorithm none of these problems arise, because the
VC is determined by the current directory (SVN in `/the/top/`) and the
search for the ignore file starts in the appropriate subdirectory with
the correct backend.

``` {.sourceCode .elisp}
>>> (let ((default-directory "/the/top")) (vc-responsible-backend "./"))
SVN

>>> (let ((default-directory "/the/top")) (vc-responsible-backend "sub/"))
SVN

>>> (let ((default-directory "/the/top")) (vc-responsible-backend "sub/sub=
2/"))
SVN
```

So, if the "file path" use case remains broken or is removed entirely,
it will be a an issue which ultimately discourages users to apply the
function at all. While I appreciate the added functionality of the
"pattern" use case (which is most useful for modern VCs with a single
ignore file at the root), I would most certainly not bother with it,
should it be the only option.

I have been using the command line and Emacs **vc** package for more
than 25 years for almost all my VC needs, whenever support for a VC
became available. However, ignoring files I always had to do with other
packages, e.g. **pcl-cvs**, **dvc**, which all support the "file path"
use case, none of them support the "pattern" use case. Sigh, it is
finally really nice to phase out other vc packages.
>> Since the escaping must also be correct, I'm probably better off
>> locating and editing the ignore file manually. Inserting the output
>> of "ls -1" and editing away - as I sometimes do - is much more
>> convenient than calling `vc-ignore` multiple times and repeating
>> more complex editing of an absolute file path each time in the
>> minibuffer.
> vc-ignore is not only for adding ignored files/patterns, it is also
> for deleting entries in the ignore files.  And that functionality
> definitely needs the users to type the patterns exactly as they are in
> the ignore file.
I was making a case of editing the ignore file directly, so the REMOVE
case is obviously also covered.

But yes and no for the typing. The "file path" use case is covered,
since the escaped file path is removed. If the file path was added
automatically before, then that is exactly what is in the ignore
file. No typing required. Since there are many ways to specify the
same pattern, the manual approach is really less desirable than
automatic escaping.

This is where the completion list of active patterns comes in handy,
as those are the actual patterns that can be removed. As I said, I do
appreciate the "pattern" use case, it just needs a little bit of
enhancement to become more useful.
>> However, there is a use case that you keep avoiding to comment
>> on, namely pressing "G" in `vc-dir-mode`, which calls
>> `vc-dir-ignore`, which in turn calls `vc-ignore`
>> **programmatically** with an absolute file path. It has been
>> officially supported by Emacs since 2013. I did not invent it and
>> I did not alter its API.
>>
>> Since there is no interactive prompt whatsoever for a user to
>>
>> 1. properly construct an escaped pattern and
>> 2. specify the directory, where the search for the ignore file
>> =C2=A0=C2=A0 should start,
>>
>> the function called to ignore the file must consequently escape
>> and anchor it properly, just like any command that uses
>> `shell-quote-args` because the use case requires it and the
>> purpose of the argument is well-known.
>>
>> How do you plan to support this use case?
> Since vc-dir-ignore computes the file name(s) to add to the ignore
> file, it indeed will need to escape all the special characters in file
> names it will add, before it invokes vc-ignore.  You are right here.
In order to know, what part of the filename must be used, it is
necessary to know the location of the ignore file, which is only known
by the backend.

So, please have a look at *vc-default-get-ignore-file-and-pattern*,
which does exactly that, it returns the correct ignore file, and the
escaped pattern.

You want this function to be called from *vc-dir-ignore*, and then only
use the pattern for *vc-ignore* and voila: **it is impossible for
vc-ignore to find the correct ignore file** when it is in a
subdirectory, as I have shown previously.

Setting *default-directory* to the directory of the ignore file results
in *vc-ignore* being unable to determine the correct backend, as shown
above.

Since *vc-dir-ignore* already knows the backend, it can call the backend
function *vc-default-ignore* directly. And *vc-default-ignore* in turn
will call *vc-default-get-ignore-file-and-pattern* **again**, since it
must **again** find the ignore file.

Don't you think, that this is a waste of resources and possible cause of
many errors?

My implementation uses a single path for both *vc-ignore-file* and
*vc-ignore-pattern* eliminating that quite nicely. *vc-ignore-file* is
used for both interactive specification of files as well as
*vc-dir-mode* and *dired-mode* file sets, eliminating the function
*vc-dir-ignore*.
>> According to your opinion `vc-ignore` can only be used
>> **interactively** by a learned expert user, who wants to make
>> ignore file administration even more complicated by editing
>> random ignore files without any feedback.
> Given that vc-ignore can also delete a an entry from the ignore file,
> and given that we supported patterns there (albeit with bugs) for some
> time, I don't see how we can change that in a radical way like you
> suggest.
I think you misunderstand me. The pattern REMOVE functionality is
supported exactly the same way as before. There is no change besides the
missing bugs and the complete support of all backends (that *is*
probably a bit radical).

-=C2=A0=C2=A0 If you call *vc-ignore* programatically, you get the same re=
sult
=C2=A0=C2=A0=C2=A0 as before.
-=C2=A0=C2=A0 If you invoke `C-x v G`, you get the same result as before.
-=C2=A0=C2=A0 If you invoke `G` in *vc-dir-mode*, you get the same result
=C2=A0=C2=A0=C2=A0 as before.
-=C2=A0=C2=A0 **Only** if you invoke `M-x vc-ignore RET`, **you get an err=
or**.
=C2=A0=C2=A0=C2=A0 This is intended to provide the incentive for noticing =
the
=C2=A0=C2=A0=C2=A0 modifications and also to have better doc strings.

=C2=A0=C2=A0=C2=A0 If you don't like it, **we can keep the old behavior** =
and make
=C2=A0=C2=A0=C2=A0 *vc-ignore-pattern* an alias for *vc-ignore*. In that c=
ase there is
=C2=A0=C2=A0=C2=A0 **no user visible change at all** for the "pattern" use=
 case.

Just the previously broken functionality of ignoring "file pathes" (also
including the REMOVE feature) is now properly supported.

The only real API change is an additional flag AS-IS for *vc-ignore*.
>
>> So it is the wrong candidate for a noob user of `vc-dir-mode`
>> who just wants to ignore the selected files literally without
>> worrying about ignore files and escaping.
> I agree with you wrt vc-dir-ignore.
Good.
>
>> They also expect a visual feedback, that the operation had the
>> desired effect, as they have come to expect from all the other
>> commands in `vc-dir-mode`.
> AFAICT, the command does provide feedback.  Or maybe I misunderstand
> what feedback you had in mind.

vc-dir-ignore currently does not provide the normal feedback, I only just =
now put it in:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-dir-resynch-file file)

When ignoring files in vc-dir-mode, the status is now immediately checked =
and updated to "ignored".

>> If you are just worried, that somebody will use `vc-ignore` and
>> expect the old broken behavior
> The old behavior of vc-ignore was not broken for interactive
> invocations.  It was broken (in rare cases) for invocations from
> vc-dir-ignore, and that can IMO be fixed without affecting user-facing
> behavior.  So I see no backward-incompatible changes here.
Sorry, not *rare* but **all** cases! The invocation from vc-dir-ignore
placed an **absolute file path** into the ignore file. That is
**always** wrong.=C2=A0 The commands I fixed recently, now do no longer
fully support the "pattern" case anymore. The whole point of the
proposed implementation is, that both use cases, "pattern" and "file
path" are supported correctly and to the full extent.
>>> This concept is similar to what we do in commands such as "M-x grep",
>>> where we expect the users to escape special characters in the
>>> command-line arguments to be passed to Grep the program via the shell.
>> That is not at all comparable, since there is no use case "search
>> for file path in a bunch of files".
> My point is that Grep patterns can include characters special for the
> shell, but we never escape them ourselves, we rely on the user to
> escape them as needed.

The pattern is not prompted for separately! There is no way, that the
pattern argument for the *grep* command could be reliably parsed and
quoted. If the pattern was read separately from the rest of the
arguments, it would be quite alright to quote it for the shell.

If the vc-ignore supplied pattern was to be passed on to a shell
command, it would of course have to be properly quoted for the shell.
But nobody expects the user to do that.

In fact, I wrote myself a *grep-find* derived command to search for tags
in files, which prompts the user for an unquoted regular expression of
symbols. That expression is then augmented with the tag delimiters, it
is further quoted for the shell and inserted at the proper location for
the *grep-find* command which is then presented to the user for editing
the options. And why? Because I know in advance what the exact structure
of the pattern will be and that it has to be quoted for the shell ;-).

Provided with a pattern of "LOG\|BGX", the command prompt looks like this
(slightly edited):

``` {.sourceCode .sh}
/usr/bin/find . -name '*' -type f -exec /bin/grep --color -nH --null -e \
=C2=A0=C2=A0=C2=A0 \\\(\\\(\\\(\\\(\\\)\|\:\\\)\\\(LOG\\\|BGX\\\)\\\)\:\|\=
\\) \{\} +
```





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 11 Feb 2020 17:33:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 11 12:33:10 2020
Received: from localhost ([127.0.0.1]:57447 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1ZPK-0005xa-64
	for submit <at> debbugs.gnu.org; Tue, 11 Feb 2020 12:33:10 -0500
Received: from eggs.gnu.org ([209.51.188.92]:52801)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j1ZPJ-0005xN-18
 for 37189 <at> debbugs.gnu.org; Tue, 11 Feb 2020 12:33:09 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:47939)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j1ZPC-0004Mb-Sx; Tue, 11 Feb 2020 12:33:03 -0500
Received: from [176.228.60.248] (port=1291 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j1ZPC-0002mV-5M; Tue, 11 Feb 2020 12:33:02 -0500
Date: Tue, 11 Feb 2020 19:32:59 +0200
Message-Id: <83zhdpqbas.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN> (message from
 Wolfgang Scherer on Tue, 11 Feb 2020 02:45:41 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
 <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Tue, 11 Feb 2020 02:45:41 +0100
> 
> I suggest, we stop talking about the use case, where `vc-ignore`
> is called interactively, I will let you have your opinion,
> although I strongly disagree

If you strongly disagree, then why do you give up so easily on your
opinion?  I didn't yet make up my mind, so maybe you will be able to
convince me.

> and the unsolved problem of interactively locating the correct
> ignore file makes it ultimately hilarious:
> 
> A command that locates an ignore file, but can only do so, if the
> default-directory is already the one containing the ignore
> file (always true for SRC, CVS, SVN)

Is locating the ignore file a separate issue?  AFAICT, we currently
always look for the ignore file in the repository root, is that right?
If so, are you proposing a new feature here, where we would support
ignore files in subdirectories?

> Since the escaping must also be correct, I'm probably better off
> locating and editing the ignore file manually. Inserting the output
> of "ls -1" and editing away - as I sometimes do - is much more
> convenient than calling `vc-ignore` multiple times and repeating
> more complex editing of an absolute file path each time in the
> minibuffer.

vc-ignore is not only for adding ignored files/patterns, it is also
for deleting entries in the ignore files.  And that functionality
definitely needs the users to type the patterns exactly as they are in
the ignore file.

> However, there is a use case that you keep avoiding to comment
> on, namely pressing "G" in `vc-dir-mode`, which calls
> `vc-dir-ignore`, which in turn calls `vc-ignore`
> **programmatically** with an absolute file path. It has been
> officially supported by Emacs since 2013. I did not invent it and
> I did not alter its API.
> 
> Since there is no interactive prompt whatsoever for a user to
> 
> 1. properly construct an escaped pattern and
> 2. specify the directory, where the search for the ignore file
>    should start,
> 
> the function called to ignore the file must consequently escape
> and anchor it properly, just like any command that uses
> `shell-quote-args` because the use case requires it and the
> purpose of the argument is well-known.
> 
> How do you plan to support this use case?

Since vc-dir-ignore computes the file name(s) to add to the ignore
file, it indeed will need to escape all the special characters in file
names it will add, before it invokes vc-ignore.  You are right here.

> According to your opinion `vc-ignore` can only be used
> **interactively** by a learned expert user, who wants to make
> ignore file administration even more complicated by editing
> random ignore files without any feedback.

Given that vc-ignore can also delete a an entry from the ignore file,
and given that we supported patterns there (albeit with bugs) for some
time, I don't see how we can change that in a radical way like you
suggest.

> So it is the wrong candidate for a noob user of `vc-dir-mode`
> who just wants to ignore the selected files literally without
> worrying about ignore files and escaping.

I agree with you wrt vc-dir-ignore.

> They also expect a visual feedback, that the operation had the
> desired effect, as they have come to expect from all the other
> commands in `vc-dir-mode`.

AFAICT, the command does provide feedback.  Or maybe I misunderstand
what feedback you had in mind.

> If you are just worried, that somebody will use `vc-ignore` and
> expect the old broken behavior

The old behavior of vc-ignore was not broken for interactive
invocations.  It was broken (in rare cases) for invocations from
vc-dir-ignore, and that can IMO be fixed without affecting user-facing
behavior.  So I see no backward-incompatible changes here.

> > This concept is similar to what we do in commands such as "M-x grep",
> > where we expect the users to escape special characters in the
> > command-line arguments to be passed to Grep the program via the shell.
> That is not at all comparable, since there is no use case "search
> for file path in a bunch of files".

My point is that Grep patterns can include characters special for the
shell, but we never escape them ourselves, we rely on the user to
escape them as needed.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 11 Feb 2020 01:45:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 20:45:51 2020
Received: from localhost ([127.0.0.1]:55738 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1KcZ-0004Ep-0P
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2020 20:45:51 -0500
Received: from mout.gmx.net ([212.227.17.22]:59277)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j1KcX-0004Ec-A9
 for 37189 <at> debbugs.gnu.org; Mon, 10 Feb 2020 20:45:50 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581385542;
 bh=SPEaVKpAuwSpnUi86YCVGlx3mNlDkfVuwGrRFymr1mo=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=G9DPzexJnjj10s+HXweyTb0GT0V6uoRezCQp/o6BSvGWqmYVBNkEVk0m+Cj86z0j4
 wURBaHi/XsYM+tXt8k87D38h88ZJxCeYP8dPiOxWtCqtJmtR9QIKT8WTU9JEYjcRJI
 eTYgzXJmS2eWg9zaP15rJisxg6b3aX4F3OZU6i2c=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpUYu-1jrDqc2zBk-00ptYm; Tue, 11
 Feb 2020 02:45:42 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id B956B1943190;
 Tue, 11 Feb 2020 02:45:41 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> <83wo8ubfbo.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <e944b679-fef2-9a7e-2cae-bf596754b821@HIDDEN>
Date: Tue, 11 Feb 2020 02:45:41 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83wo8ubfbo.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:Jqt2+B0quWdXvBInsYJ9d/Kp5x1SvPbaAAAqmaU0YBvLAOCpb3d
 4xI1pAUhkItfWW4DOmH5kfsx6sTOjFGcY1n17YD8vnotcp1lr2twzV2m8wdC6/1e4HipymZ
 BWMeIWC00UgIbxH9fqailVgZhO7zqr9Yhl2bpZJNvBQmnLany4ssbEmyjCiwUWi0SkyPbtd
 NymDTd9LaW5RKHVFBAmgA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:RC/AIQ1amYQ=:LkuzTbOMSLmGFpgurZMs3g
 MvRA2xTZshpWiisPXnqFvLuh5NNgLLbDcqOdRbOoNchDhL7rdM9wuZtjF9DDQ7hXIRm0qs3nh
 fhZ0CMLa6whvGnD8q3FdrKwKKCazxHP7UH+D01rFHXTwtpsWJV662iV6qgRMJ+p1VlrAM9A6L
 QUcRzuoWZx6W0NSOtHHgPxlnI4pJwanFUwIGFNolwybnnq/kuKjI6Rfir14fb8owxEYawDNzl
 aDKeh16S1nzO1HkEZL7II4mximoqp5vIWTWuPSac+MMd3BmswW8u5WgeyOxLlHxmxJbOO8N8S
 YpRgpZthpaet3PRf3MppGTPVxuxt1D8qrxY/XK8fkTAMYehvYTUaUar5l2J2BM88Jv5a+wAaA
 1V1SXXQV3wia+W1A1gP0ybEYMh3m+pO2xDYDmCmvGjQcoQkC6Eyl+TWo79wf7ovjAtrWef+6d
 yAzQBFcYGf5Uu8jlztZZ2YcAyZTsCqKyIQeG6oBKVSsl0eqyaI7Jha/MCcgfSi5UjPehpKFhj
 kT5MJlG/vWd6x8pI4SEJ7bB5adROeIb5U8OvB/xcusa+J5Kvc9iueajpNSOKhWJ3V7GyGjGcc
 IhBKBfO5RR4Zd7F37zMH+nMcuXZmnprJA9tL/v6tmRbeROPvHb4RKcv7ubp1dqcwCZOkatme9
 FZ/hjQxypr6MHBsGbNwH2YCtf+a1FCdDOJVkm8uSFGed7SBHn+qob4bAPcT9YjGqbVCarhpwE
 xEb0ln0LjLK6HQ7Dfr2iG1j3JeMTMi2kt1Ox6jsxcS/XqXhTbq/vxdAl+vlGLCg3vbJUodJ8I
 kZxHs00dBKWrAxw9a9ozQVUg9q2XmN/xFHI3qWIRvFxYETAMBF6JwUzYqT10SxNVyBlpnuTUH
 6qqrXlb1gay15Bqc/vGhw1vWh2QyKk9a2QjgVoqMiYDdYysNERmsfJwXOHVmbNNw229vXi8oY
 vln3mJE1OjcKAPAj6zqjr+RNhrXplRfbV/LRa+yMmYlAAjekwjBPUz1hqFn9LEAsi8e9VIuqT
 9eo+mra9HVeD4mX3Ytg3YfRU1OOgeOUJ8EOAn1eVSFyUnhweSJ+jnnQSH4vy+E7B1x83vH3Xj
 WWBSbqzwyG4MnQY1SKIJjDI81XAnUUJVAPbD4BRwbMAfZNpUDN9WcjZ4uvFQu8viAqDnYoQfK
 3+WEUe+TZGAaRAD1W2tiWMxDp9iVxlGHL9P22iOXBvGQ2EIWt+FT5lP+JDcLgXKK2dSS9Nsn9
 fNOKd65RNHt8Cx5FG
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Eli,

I suggest, we stop talking about the use case, where `vc-ignore`
is called interactively, I will let you have your opinion,
although I strongly disagree and the unsolved problem of
interactively locating the correct ignore file makes it
ultimately hilarious:

A command that locates an ignore file, but can only do so, if the
default-directory is already the one containing the ignore
file (always true for SRC, CVS, SVN) .Since the escaping must
also be correct, I'm probably better off locating and editing the
ignore file manually. Inserting the output of "ls -1" and editing
away - as I sometimes do - is much more convenient than calling
`vc-ignore` multiple times and repeating more complex editing of
an absolute file path each time in the minibuffer.

However, there is a use case that you keep avoiding to comment
on, namely pressing "G" in `vc-dir-mode`, which calls
`vc-dir-ignore`, which in turn calls `vc-ignore`
**programmatically** with an absolute file path. It has been
officially supported by Emacs since 2013. I did not invent it and
I did not alter its API.

Since there is no interactive prompt whatsoever for a user to

1. properly construct an escaped pattern and
2. specify the directory, where the search for the ignore file
=C2=A0=C2=A0 should start,

the function called to ignore the file must consequently escape
and anchor it properly, just like any command that uses
`shell-quote-args` because the use case requires it and the
purpose of the argument is well-known.

How do you plan to support this use case? (For a humorous
suggestion, see below).

According to your opinion `vc-ignore` can only be used
**interactively** by a learned expert user, who wants to make
ignore file administration even more complicated by editing
random ignore files without any feedback.

So it is the wrong candidate for a noob user of `vc-dir-mode`
who just wants to ignore the selected files literally without
worrying about ignore files and escaping. They also expect a
visual feedback, that the operation had the desired effect, as
they have come to expect from all the other commands in
`vc-dir-mode`.

So, if you do not plan to drop this feature from `vc-dir-mode`
altogether, then a new function must be implemented, which does
exactly what my implementation does. Therefore, it only fixes the
broken behavior in `vc-dir-mode`.

If you are just worried, that somebody will use `vc-ignore` and
expect the old broken behavior, I suggest to accept my
implementaton and add a custom variable
`vc-ignore-posixly-correct` with a default value of `t` to prefer
the same behavior as before (see below for a draft
implementation).

I don't think it is really necessary, since I removed interactive
from `vc-ignore` and `C-x v G` calls `vc-ignore-pattern` which
essentially behaves like the old `vc-ignore` minus the real bugs.
So a user would only realize the API change when executing `M-x
vc-ignore`.

Am 10.02.20 um 17:02 schrieb Eli Zaretskii:
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> Date: Sun, 9 Feb 2020 14:57:12 +0100
>>
>> =C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+---=
--------------+--------------------+
>> =C2=A0=C2=A0=C2=A0 | `file path` | glob(7)=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 | anchored glob | Hg `regex`=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 | Bzr `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> =C2=A0=C2=A0=C2=A0 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
>> =C2=A0=C2=A0=C2=A0 | test[56].xx |=C2=A0=C2=A0 test\[56].xx=C2=A0 | /te=
st\[56].xx | ^test\[56]\.xx$ | RE:^test\[56]\.xx$ |
>> =C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 test[[]56].xx |=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> =C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+---=
--------------+--------------------+
>> =C2=A0=C2=A0=C2=A0 | simple.txt=C2=A0 |=C2=A0=C2=A0 simple.txt=C2=A0=C2=
=A0=C2=A0 | /simple.txt=C2=A0=C2=A0 | ^simple\.txt$=C2=A0=C2=A0 | RE:^simp=
le\.txt$=C2=A0=C2=A0 |
>> =C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 simple[.]txt=C2=A0 |=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> =C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+---=
--------------+--------------------+
> Just a note: this table might be interpreted to mean that hg and bzr
> only support regexes in their ignore files, but that is of course
> false: they also support glob-style widlcards.
This is not an exhaustive table of ignore specification
syntaxes. It is meant to illustrate that the case

=C2=A0 file path =3D=3D=3D ignore specification

is really the exception.
>> =C2=A0=C2=A0=C2=A0 The correct escaping of FILE can only be determined =
by the
>> =C2=A0=C2=A0=C2=A0 backend. Therefore neither vc-dir-ignore nor lisp co=
de calling
>> =C2=A0=C2=A0=C2=A0 vc-ignore can escape the FILE parameter correctly wi=
thout support
>> =C2=A0=C2=A0=C2=A0 from the backend. This makes pattern input for FILE =
only useful
>> =C2=A0=C2=A0=C2=A0 during interactive calls.
>>
>> Even, if it was magically possible to determine the correct
>> pattern in the frontend, submitting an anchored
>> glob "/some-sub/file.txt" to `vc-ignore` would be interpreted as
>> an absolute path.
>>
>> In other words, the API specificaton
>>
>> =C2=A0 [...] FILE is a wildcard specification, either relative to
>> =C2=A0 DIRECTORY or absolute.
>>
>> which asks for implementing the pattern use case inextricably
>> mixed with the file path use case, is nonsense.
>>
>> It also means, that all of the backend functions which currently
>> demand a pattern are absolutely useless.
> I don't think I agree.  While the direction in which you propose to
> move -- which AFAIU is to offer 2 different commands, one to ignore a
> file name, the other to ignore a file pattern -- is definitely
> possible,

(Sorry, I did not have time to clean the ReStructured Text source, it is r=
endered in HTML at http://sw-amt.ws/emacs/doc/_build/html/emacs-vc-ignore-=
feature.html#implementation-of-vc-ignore-parameter-extension)

The actual implementation is in a single function

:defun:`vc-ignore`. The use cases "pattern" and "file path" are
selected with the flag AS-IS.

For interactive use, there are 2 separate commands
:defun:`vc-ignore-file` and :defun:`vc-ignore-pattern`, both of which
just call :defun:`vc-ignore` with a different value for the flag
AS-IS.

This decision was made, because the prefix argument as usual choice to
specify a flag parameter interactively is already appropriated for the
flag REMOVE. Instead of an interactive y/n question for each
invocation - which is pretty annoying - 2 separate functions also
facilitate keymap definitions. It also has the advantage that only the
relevant information for each use case can be presented in the doc
string.

Granted that typing :kbd:`C-x v F` instead of :kbd:`C-x v G` or
:kbd:`F` instead of :kbd:`G` is also a decision, but it does not
necessarily have to be made each time, especially if a user only cares
about a single use case. That concludes the argument for 2 separate
interactive commands as user interface.

The implementation consists of a linear call chain with two short code
path variations. Besides backend specific implementations for some
functions, there are **never** 2 separate functions in the entire
chain.

.. uml::
=C2=A0=C2=A0 :caption: :defun:`vc-ignore` call chain

=C2=A0=C2=A0=C2=A0 @startuml
=C2=A0=C2=A0=C2=A0 participant "vc-default-\nignore" as VCDI
=C2=A0=C2=A0=C2=A0 participant "vc-default-\nget-ignore-file-\nand-pattern=
" as VCDIAP
=C2=A0=C2=A0=C2=A0 participant "vc-backend-\nignore-param" as VCBIP
=C2=A0=C2=A0=C2=A0 participant "vc-backend-\nfind-ignore-file" as VCBFIF
=C2=A0=C2=A0=C2=A0 participant "vc-default-\nmod-ignores" as VCDMI

=C2=A0=C2=A0=C2=A0 VCDI=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 VCDIAP : (vc-call=
-backend FILE-OR-PATTERN\n DIRECTORY AS-IS REMOVE)
=C2=A0=C2=A0=C2=A0 alt AS-IS non-nil
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 VCDIAP ->=C2=A0 VCDIAP : absolute FILE-PATH=
\nnormalize DIRECTORY
=C2=A0=C2=A0=C2=A0 end
=C2=A0=C2=A0=C2=A0 VCDIAP=C2=A0=C2=A0 ->=C2=A0 VCBFIF : (vcb DIRECTORY)
=C2=A0=C2=A0=C2=A0 VCDIAP=C2=A0=C2=A0 <-- VCBFIF :IGNORE-FILE
=C2=A0=C2=A0=C2=A0 alt AS-IS nil
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 VCDIAP ->=C2=A0 VCDIAP : null ignore spec p=
rocessing parameters
=C2=A0=C2=A0=C2=A0 else AS-IS non-nil
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 VCDIAP ->=C2=A0 VCDIAP : relative FILE-PATH
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 VCDIAP ->=C2=A0 VCBIP : (vcb IGNORE-FILE)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 VCDIAP <-- VCBIP : ignore spec processing p=
arameters
=C2=A0=C2=A0=C2=A0 end
=C2=A0=C2=A0=C2=A0 VCDIAP=C2=A0=C2=A0 ->=C2=A0 VCDIAP : escape/anchor patt=
ern
=C2=A0=C2=A0=C2=A0 VCDI=C2=A0=C2=A0=C2=A0=C2=A0 <-- VCDIAP : '(IGNORE-FILE=
 PATTERN REMOVE)
=C2=A0=C2=A0=C2=A0 VCDI=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 VCDMI : (vcb IGNO=
RE-FILE PATTERN REMOVE)
=C2=A0=C2=A0=C2=A0 VCDI=C2=A0=C2=A0=C2=A0=C2=A0 <-- VCDMI
=C2=A0=C2=A0=C2=A0 @enduml

The code path variations based on the AS-IS flag are confined to
:defun:`vc-default-get-ignore-file-and-pattern`.

First, if AS-IS is nil, the FILE-OR-PATTERN argument is expanded to an
absolute FILE-PATH. DIRECTORY is set to the immediate parent directory
of :elisp:`(vc-no-final-slash FILE-PATH)`: This normalization is
necessary, because the search for an ignore file starts at DIRECTORY.

.. code-block:: elisp

=C2=A0=C2=A0 (when (not as-is)
=C2=A0=C2=A0=C2=A0=C2=A0 (setq file-or-pattern (expand-file-name file-or-p=
attern directory))
=C2=A0=C2=A0=C2=A0=C2=A0 (setq directory (file-name-directory (vc-no-final=
-slash file-or-pattern))))

Second, if AS-IS is non-nil, the parameters for escaping and anchoring
an ignore pattern are set to an identity function.

If AS-IS is nil, FILE-PATH is made relative to the path of the
directory where the pattern will be stored.=C2=A0 Parameters for escaping
and anchoring an ignore pattern are obtained from the VC backend.

.. code-block:: elisp

=C2=A0=C2=A0 (if as-is
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (setq ignore-param vc-ignore-param-no=
ne)
=C2=A0=C2=A0=C2=A0=C2=A0 (when (not (string=3D (substring file-or-pattern =
0 (length ignore-dir))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i=
gnore-dir))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (error "Ignore spec %s is not below p=
roject root %s"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 file-or-pattern ignore-dir))
=C2=A0=C2=A0=C2=A0=C2=A0 (setq is-dir (or (file-directory-p file-or-patter=
n)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-has-final-slash=
 file-or-pattern)))
=C2=A0=C2=A0=C2=A0=C2=A0 (setq file-or-pattern (vc-no-final-slash
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (substring file-or-pattern (length ignore-dir))))
=C2=A0=C2=A0=C2=A0=C2=A0 (setq ignore-param (vc-call-backend backend 'igno=
re-param ignore-file)))

E.g. an invocation of :elisp:`(vc-ignore "some/rel/path/" "/re/po")`
translates to:

.. code-block:: elisp

=C2=A0=C2=A0 ;; normalize FILE-PATH and DIRECTORY
=C2=A0=C2=A0 (setq file-or-pattern "/re/po/some/rel/path/" )
=C2=A0=C2=A0 (setq directory "/re/po/some/rel/" )

=C2=A0=C2=A0 ;; determine, whether file path is a directory
=C2=A0=C2=A0 (setq is-dir t)
=C2=A0=C2=A0 ;; prepare pattern as relative file path to directory of igno=
re file
=C2=A0=C2=A0 (setq file-or-pattern "path" )

=C2=A0=C2=A0 ;; obtain parameters for escaping and anchoring an ignore pat=
tern from VC backend

All further processing is identical for verbatim patterns and for file pat=
hs.

If you insist on calling a code path difference of 3 lines versus 13
lines two independent functions, then technically you are correct and
we should just remove the extra 13 lines of code (and also the two
separate interactive commands) to get a **properly working**
implementation of the pattern use case for **all** VC backends, which
is still needed, because right now, the vc ignore feature is
incomplete and very buggy.
>  I question its necessity.

>   In the use cases I have in mind,
> the ignore file-or-pattern always comes from the user, because only
> the users can decide which files they want to ignore.
These are my major use cases. I do not have a real use case involving Lisp=
 code, but it is always worth considering.
>   And the users
> always know both which backend they are working with, and whether the
> file-or-pattern is a filename or a pattern.
Yes, I do. 99.9% of the time I want to ignore one or more files in `vc-dir=
-mode` or `dired-mode`
>   It follows that we can
> ask the users to escape and anchor the file-or-pattern argument they
> type,

Are you aware, that the current implementation of
`vc-dir-ignore` calls `vc-ignore` with a plain absolute file
path obtained from (vc-dir-current-file)?=C2=A0 There is no prompting
whatsoever that would let the user escape and anchor anything.

How would you propose to handle this officially supported use
case (since 2013)?

=C2=A0=C2=A0 (defun vc-dir-ignore (&optional arg)
=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore the current file."
=C2=A0=C2=A0=C2=A0=C2=A0 (interactive "P")
=C2=A0=C2=A0=C2=A0=C2=A0 (vc-ignore
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (if (called-interactively-p 'any)
=C2=A0=C2=A0=C2=A0 =C2=A0 (read-string "Make the path relative to the igno=
re file,
=C2=A0=C2=A0=C2=A0 which may or may not be at the location you expect. The=
n guess
=C2=A0=C2=A0=C2=A0 the currently active pattern escape syntax, apply it to=
 the file
=C2=A0=C2=A0=C2=A0 path and anchor it: " (vc-dir-current-file))
=C2=A0=C2=A0=C2=A0 (error "This will fail, when called from lisp code.")))=
)

>  and that is not an unreasonable expectation.
If you analyze the above humorous prompt, you will see, that it
is entirely unreasonable, since it is no longer possible to
determine the correct ignore file for a given pattern, unless the
DIRECTORY parameter is also correct, which is always necessary for
CVS, SVN, SRC. So before calling `vc-ignore` I have to change
into the correct directory?
=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
1. Locating the correct ignore file is no simple task for Git or
=C2=A0=C2=A0 Hg, which support sub-tree ignore files. The current
=C2=A0=C2=A0 implementation via

=C2=A0=C2=A0 : (expand-file-name ".hgignore" (vc-root-dir))

=C2=A0=C2=A0 is extremely simplistic and should be augmented in a separate
=C2=A0=C2=A0 effort.

2. The current syntax in an Hg ignore file may be either regex
=C2=A0=C2=A0 or glob. Since we are in a collaborative environment, after
=C2=A0=C2=A0 all, anybody may have changed the default syntax since we las=
t
=C2=A0=C2=A0 checked.

3. Nobody knows all ignore spec syntaxes all the time (memory is
=C2=A0=C2=A0 always fading).

4. If I have to contribute to a project that uses an unfamiliar
=C2=A0=C2=A0 VC, it would be extremely reasonable, if my development
=C2=A0=C2=A0 environment (Emacs) would spare me the trouble of totally
=C2=A0=C2=A0 avoidable "ignore file" mistakes. It would be so extremely
=C2=A0=C2=A0 reasonable, that it would be actually unreasonable not to hav=
e
=C2=A0=C2=A0 it implemented.

5. I have users, which are only just learning how to program. I
=C2=A0=C2=A0 do not wish for them to delve into just another distraction
=C2=A0=C2=A0 from the task at hand. It would be very reasonable, if Emacs
=C2=A0=C2=A0 helped me keep them on point.
=C2=A0=C2=A0 ("Don't worry, Emacs will handle that for you!")
>   In fact, your
> approach expects the same from the users, because you are asking the
> users to decide which of the two commands to invoke in each case.
I handled that above. If you only ever add files from
`vc-dir-mode` or `dired-mode` you only have to make that decision
once in your lifetime.
> If there are no flaws in my way of reasoning, then I think the
> resulting changes will be much less extensive, because the same
> vc-ignore command can then be used for both ignoring a specific file
> and for ignoring a pattern of any kind.

I can give you that with my implementation as a bonus added interactive co=
mmand:

=C2=A0=C2=A0 (defun vc-ignore-posixly-correct (file &optional directory re=
move as-is)
=C2=A0=C2=A0=C2=A0=C2=A0 (interactive
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (let ((remove current-prefix-arg) file as-i=
s)
=C2=A0=C2=A0=C2=A0 (if (not (y-or-n-p "Ignore a file?"))
=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 (setq file (read-string "Pattern: ")=
)
=C2=A0=C2=A0=C2=A0 =C2=A0 (setq as-is (not (y-or-n-p "Escape manually?")))
=C2=A0=C2=A0=C2=A0 =C2=A0 (setq file (read-file-name "File: ")))
=C2=A0=C2=A0=C2=A0 (list file nil remove as-is)))
=C2=A0=C2=A0=C2=A0=C2=A0 (vcignore file directory remove as-is))

>   We just need to document that
> if the argument is a pattern of any kind, the user will have to make
> sure it is escaped and anchored for the backend to DTRT.
>
> A further advantage of my proposal is that we don't need to write any
> backend-specific code to escape special characters in patterns,
> because we expect the users to do that.
Since we have to check for the active syntax anyway, it may be
better to abandon the entire ignore feature and just open the
appropriate ignore file for editing. It is a lot simpler and much
more convenient than the minibuffer for editing multiple files.
It would also help the user to determine what the correct
relative file name should be.
>
> This concept is similar to what we do in commands such as "M-x grep",
> where we expect the users to escape special characters in the
> command-line arguments to be passed to Grep the program via the shell.
That is not at all comparable, since there is no use case "search
for file path in a bunch of files". If such a command
`grep-for-file-name` were derived from `grep`, a user could
reasonably expect that the file argument is properly quoted as a
grep pattern.

The correct comparison would be with various employments of
`shell-quote-argument`, when passing a string to the shell, which
is known to be interpreted verbatim. Or as just recently reported
in bug #35492, where file arguments for Git commands must be
properly quoted to work correctly (this is not because of the
shell but because of Git!). If this quoting is omitted,
`vc-dir-mode` becomes entirely unreliable for Git. If it is done
quick and dirty instead of properly, it causes other problems.
> Am I missing something?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 10 Feb 2020 16:03:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 11:03:12 2020
Received: from localhost ([127.0.0.1]:55287 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j1BWi-0002wM-Cb
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2020 11:03:12 -0500
Received: from eggs.gnu.org ([209.51.188.92]:57246)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j1BWg-0002w5-Lg
 for 37189 <at> debbugs.gnu.org; Mon, 10 Feb 2020 11:03:11 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:49444)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j1BWb-0007TQ-40; Mon, 10 Feb 2020 11:03:05 -0500
Received: from [176.228.60.248] (port=3301 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j1BWZ-0002jO-CC; Mon, 10 Feb 2020 11:03:04 -0500
Date: Mon, 10 Feb 2020 18:02:51 +0200
Message-Id: <83wo8ubfbo.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN> (message from
 Wolfgang Scherer on Sun, 9 Feb 2020 14:57:12 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> Date: Sun, 9 Feb 2020 14:57:12 +0100
> 
> "pattern" is a generic term, which does not imply a specific syntax.
> 
> "wildcard specification" is a pattern following the rules of a glob(7)
> syntax variant.
> 
> "regexp pattern" implies one of the regular expression syntaxes
> (regex(7), Emacs, Perl, Python, ...).

Got it, thanks.

>     +-------------+-----------------+---------------+-----------------+--------------------+
>     | `file path` | glob(7)         | anchored glob | Hg `regex`      | Bzr `regex`        |
>     +=============+=================+===============+=================+====================+
>     | test[56].xx |   test\[56].xx  | /test\[56].xx | ^test\[56]\.xx$ | RE:^test\[56]\.xx$ |
>     |             |   test[[]56].xx |               |                 |                    |
>     +-------------+-----------------+---------------+-----------------+--------------------+
>     | simple.txt  |   simple.txt    | /simple.txt   | ^simple\.txt$   | RE:^simple\.txt$   |
>     |             |   simple[.]txt  |               |                 |                    |
>     +-------------+-----------------+---------------+-----------------+--------------------+

Just a note: this table might be interpreted to mean that hg and bzr
only support regexes in their ignore files, but that is of course
false: they also support glob-style widlcards.

>     The correct escaping of FILE can only be determined by the
>     backend. Therefore neither vc-dir-ignore nor lisp code calling
>     vc-ignore can escape the FILE parameter correctly without support
>     from the backend. This makes pattern input for FILE only useful
>     during interactive calls.
> 
> Even, if it was magically possible to determine the correct
> pattern in the frontend, submitting an anchored
> glob "/some-sub/file.txt" to `vc-ignore` would be interpreted as
> an absolute path.
> 
> In other words, the API specificaton
> 
>   [...] FILE is a wildcard specification, either relative to
>   DIRECTORY or absolute.
> 
> which asks for implementing the pattern use case inextricably
> mixed with the file path use case, is nonsense.
> 
> It also means, that all of the backend functions which currently
> demand a pattern are absolutely useless.

I don't think I agree.  While the direction in which you propose to
move -- which AFAIU is to offer 2 different commands, one to ignore a
file name, the other to ignore a file pattern -- is definitely
possible, I question its necessity.  In the use cases I have in mind,
the ignore file-or-pattern always comes from the user, because only
the users can decide which files they want to ignore.  And the users
always know both which backend they are working with, and whether the
file-or-pattern is a filename or a pattern.  It follows that we can
ask the users to escape and anchor the file-or-pattern argument they
type, and that is not an unreasonable expectation.  In fact, your
approach expects the same from the users, because you are asking the
users to decide which of the two commands to invoke in each case.

If there are no flaws in my way of reasoning, then I think the
resulting changes will be much less extensive, because the same
vc-ignore command can then be used for both ignoring a specific file
and for ignoring a pattern of any kind.  We just need to document that
if the argument is a pattern of any kind, the user will have to make
sure it is escaped and anchored for the backend to DTRT.

A further advantage of my proposal is that we don't need to write any
backend-specific code to escape special characters in patterns,
because we expect the users to do that.

This concept is similar to what we do in commands such as "M-x grep",
where we expect the users to escape special characters in the
command-line arguments to be passed to Grep the program via the shell.

Am I missing something?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 9 Feb 2020 21:06:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 16:06:16 2020
Received: from localhost ([127.0.0.1]:53312 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0tmR-0005Mi-0i
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2020 16:06:16 -0500
Received: from mout.gmx.net ([212.227.17.20]:39795)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0tmL-0005MN-Uh
 for 37189 <at> debbugs.gnu.org; Sun, 09 Feb 2020 16:06:13 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581282363;
 bh=hzUvFtZ7yKr+5OpBnUfSrumnraSJ0/i/IOEQvggRn0M=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=ZoIV19nCG9dBsIrpiFx6KbwMeBCSfPQZFFN0tqV8BR/Eg3ByHqRXIRL4IZxgWfIqL
 wIx54PCV78EAkxCjYZx+6divGt1aGEc2XhRs4f62TzWZkfVT8k8NBysKkaUhHBOVLW
 wJvDBcVqn9kjNqfVyG1FjIaE9DgRL0ixJy3M9hNM=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MrhQC-1joTfD1IEG-00nhaW; Sun, 09
 Feb 2020 22:06:03 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 53B7D19431CE;
 Sun,  9 Feb 2020 22:06:02 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <6f6fe037-056c-67cf-58d3-17bce36f8f03@HIDDEN>
Date: Sun, 9 Feb 2020 22:06:02 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <8336bmg1o9.fsf@HIDDEN>
Content-Type: multipart/mixed; boundary="------------5734CFC43CA54F90F53A969E"
Content-Language: de-DE
X-Provags-ID: V03:K1:Fv5JmQFKIj2ctoqnmny7Y/TbxVs/9CLZxjjW+Bs4Y7PQhWG0+YU
 EgdrpncZ7jT6P0LUcaQt0W9FFZi7ZQmDJOQA7KC0ywlGfETC3+zXRqAna66vT1JaJqWvu/M
 C1cFpxmdcXkU7oMNmryhh6sO1+Tx6Y7k8KUdcXWaF3WkZanwA6CviYxHlRm7p2Xq/Lj9DYz
 OcZS5cxDRJhY6BNcvEMqQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:WfFJA3m59uc=:E922YzmesSiicB+RtGvJAx
 11G6uxQW6rolZX3PVnz2V/UXCNpAhB6UGc4EzbHpKPybXUY4bnOFOB2mEVxcD43/v/v2pxtjm
 CMgGPrxR+8hWbt3kgsIDgQoZ4gqyFEj2pqQ6XiamHqjwiL4PLKWMDBWGRI8LXLW7g7LCxAvOX
 AJSaWBlG6vMthlBK+IoSxwJaPZ9P2Pc5ghIfW80rMPiIx0x03Hs7k+B2P9fGdQggk6M01sFlr
 C8q5r//23WGH5iTaq1o2IvbEeVKa+JYmNKICue+JQdn5Wq2OE899M7S1bvtU7qhNcRmCFt0+T
 rbelwWRNAm2ZL/sgjSpCACgwVE6c96qapkUKMQw1VgZAjy+yO67Lw14+M9dFTv7WAqweSlMk+
 E5wEpYAl39n1GqD+7qbkU79q6VJSGOAvJoacpwVmuincljoPQwkk8jxdiU/XhW+uQXazpvBK9
 7xIPp3yD6jfkyTmdNaYGq65E+b0sgr4g7qAa68+Qa8Et2Lcdv/ZVAbhvsg164Bnk3YPg+PWJ1
 aMgPmdfJUsWxLsvFWZZWGlWdVWC1v1iAEtWJtoQDRfVPJUmIdQC8lNjJoX8YvRUE5NYf7vtth
 rwrGi3V46wMSgKblFfG79Up/SAkqP2lvbn+sLuAF6J/cejq4oV+gOmWdaIlX5H5Tu3BOxWfsH
 pe1fBwg9kKgujh6fDR8so28SC1oIP49nL/oTi2GWucmjJYutIj7cWAchFCMZuw5pS6fdUCKos
 NkVmRvwowZpxYpR/ixfqOC5eRPgb+J6H8bYUPt0oRcRUw1vjHGC3ZU3s4M/HS3kzieS0BI2y/
 z4bixRNf3U6F2tmyQZlf3pCCdxnWqkDbTPzHU+Em8ret0QUA6PDVuat6E6k/3nkvJKCnx1eCu
 l04iln4imTQYxUhjA+b+q2l3KoCqySw0TnhPliqhN3bkjTIbQhxVoc1R+iWb3y0qiI+p6UEH3
 kdKaBcQRRzmVcUcW4t5sBXn/edWuh/oYD85quHcw0GtzbKz/wnd4F3uoKsa73IXey293IMae4
 p+rTzPwFQ7UdrFFaonw5dnx4UzZboC04Q3S3BOZrdURGzxWoa3kAouhM5MzlFNlgcW/izgDdn
 V6fo6eIv81Txz83lLo35N/cHUQBLcRt3eyNnwD6ZvnC1x5JTbgDaXWf+qss/QL4/A1bZRZlmB
 vQ8vsQI3pC053UMwS7WVI0Y9vTAkTFcG5/tgvSUefAGUr4oB/pTfOoywKISoaygH0ZMDjvfal
 fCI0pEOOGAdhI2yR4
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------5734CFC43CA54F90F53A969E
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Am 07.02.20 um 10:57 schrieb Eli Zaretskii:
>> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Wed, 5 Feb 2020 20:06:15 +0100
>>
>> coming to think of it, I realized that there probably is no maintainer =
for the vc ignore feature. I.e., there is no use in explaining the design =
with many words, since it will not be implemented anyway.
> AFAIU, Dmitry oversees the VC development and maintenance.  That
> includes the issues you raised here.

I have finished the implementation of the vc ignore feature. See attached =
patch.

The standalone vc extension for old Emacsen is available at http://sw-amt.=
ws/emacs/doc/_build/html/_static/x-vc-repair.el

This obsoletes #37215 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D372=
15>vc-cvs-ignore writes absolute filenames and duplicate strings, <https:/=
/debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37215>

=2D-----

Subject: [PATCH] vc ignore feature repair

Complete implementation of ignore feature with proper filename
escaping and anchoring for all applicable supported backends:

=C2=A0 CVS, SVN, SRC, Bzr, Git, Hg, Mtn.

Going back to my day job ...


--------------5734CFC43CA54F90F53A969E
Content-Type: text/x-patch;
 name="0001-vc-ignore-feature-repair.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename="0001-vc-ignore-feature-repair.patch"

=46rom 08d888a903796ef65fa0fe733ecfd71e3b367c26 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Sun, 9 Feb 2020 21:50:34 +0100
Subject: [PATCH] vc ignore feature repair
MIME-Version: 1.0
Content-Type: text/plain; charset=3DUTF-8
Content-Transfer-Encoding: 8bit

Complete implementation of ignore feature with proper filename
escaping and anchoring for all applicable supported backends:

  CVS, SVN, SRC, Bzr, Git, Hg, Mtn.

* lisp/vc/vc.el: (vc-ignore-param-none, vc-ignore-param-glob)
  (vc-ignore-param-glob-anchored, vc-ignore-param-regexp)
  (vc-default-ignore-param, vc-glob-escape)
  (vc--py-regexp-special-chars, vc-py-regexp-quote): new vc ignore
  parameters
  (vc-ignore-pattern, vc-ignore-file): new user interface commands
  (vc-ignore-fileset): new frontend command
  (vc-ignore): thin wrapper around =E2=80=98vc-default-ignore=E2=80=99
  (vc-default-ignore): thin wrapper around
  =E2=80=98vc-default-get-ignore-file-and-pattern=E2=80=99 and
  =E2=80=98vc-default-modify-ignores=E2=80=99
  (vc-default-get-ignore-file-and-pattern): workhorse for preparing
  pattern and file ignore parameters
  (vc-default-modify-ignores): default ignore ignore file manipulator
  (vc-file-name-directory, vc-file-relative-name):
  (vc-no-final-slash, vc-has-final-slash): utilities

* lisp/vc/vc-bzr.el: (vc-bzr-ignore-param-regexp)
  (vc-bzr-ignore-param): new vc ignore parameters

* lisp/vc/vc-cvs.el: (vc-cvs-find-ignore-file)
  (vc-cvs-ignore-param-glob, vc-cvs-ignore-param)
  (vc-cvs-glob-escape): new vc ignore parameters
  (vc-cvs-ignore, vc-cvs-append-to-ignore): removed

* lisp/vc/vc-git.el: (vc-git-ignore-param): new vc ignore parameters

* lisp/vc/vc-hg.el: (vc-hg-ignore-param-regexp)
  (vc-hg-ignore-param-glob, vc-hg-ignore-param): new vc ignore
  parameters

* lisp/vc/vc-mtn.el: (vc-mtn-ignore-param-regexp)
  (vc-mtn-ignore-param): new vc ignore parameters

* lisp/vc/vc-src.el: (vc-src-find-ignore-file, vc-src-glob-escape)
  (vc-src-ignore-param-glob, vc-src-ignore-param): new vc ignore
  parameters

* lisp/vc/vc-svn.el: (vc-svn-find-ignore-file)
  (vc-svn-ignore-param-glob, vc-svn-ignore-param)
  (vc-svn-modify-ignores): new vc ignore parameters,
  (vc-svn-ignore): removed

* lisp/vc/vc-dir.el: (vc-dir-mode-map)
  new binding "F" =3D> 'vc-ignore-file
  new binding "G" =3D> 'vc-ignore-pattern

* lisp/vc/vc-hooks.el: (vc-prefix-map)
  new binding "F" =3D> 'vc-ignore-file
  new binding "G" =3D> 'vc-ignore-pattern
  (vc-menu-map): new menu item "Ignore Pattern..."
=2D--
 lisp/vc/vc-bzr.el   |   8 ++
 lisp/vc/vc-cvs.el   |  38 +++----
 lisp/vc/vc-dir.el   |   3 +-
 lisp/vc/vc-git.el   |   4 +
 lisp/vc/vc-hg.el    |  23 +++++
 lisp/vc/vc-hooks.el |   8 +-
 lisp/vc/vc-mtn.el   |   8 ++
 lisp/vc/vc-src.el   |  26 +++++
 lisp/vc/vc-svn.el   |  26 +++--
 lisp/vc/vc.el       | 278 +++++++++++++++++++++++++++++++++++++++++++++--=
-----
 10 files changed, 352 insertions(+), 70 deletions(-)

diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index e5d307e..1546aba 100644
=2D-- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -683,6 +683,14 @@ or a superior directory.")
   (expand-file-name ".bzrignore"
 		    (vc-bzr-root file)))

+(defvar vc-bzr-ignore-param-regexp
+  '(:escape: vc-py-regexp-quote :anchor: "RE:^" :trailer: "$" :dir-traile=
r: "/.*")
+  "Ignore parameters for Bzr anchored regular expressions.")
+
+(defun vc-bzr-ignore-param (&optional _ignore-file)
+  "Appropriate Bzr ignore parameters for IGNORE-FILE."
+        vc-bzr-ignore-param-regexp)
+
 (defun vc-bzr-checkout (_file &optional rev)
   (if rev (error "Operation not supported")
     ;; Else, there's nothing to do.
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index 16566a8..ae60c6c 100644
=2D-- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -1220,29 +1220,21 @@ is non-nil."
   "Return the administrative directory of FILE."
   (vc-find-root file "CVS"))

-(defun vc-cvs-ignore (file &optional _directory _remove)
-  "Ignore FILE under CVS."
-  (vc-cvs-append-to-ignore (file-name-directory file) file))
-
-(defun vc-cvs-append-to-ignore (dir str &optional old-dir)
-  "In DIR, add STR to the .cvsignore file.
-If OLD-DIR is non-nil, then this is a directory that we don't want
-to hear about anymore."
-  (with-current-buffer
-      (find-file-noselect (expand-file-name ".cvsignore" dir))
-    (when (ignore-errors
-	    (and buffer-read-only
-		 (eq 'CVS (vc-backend buffer-file-name))
-		 (not (vc-editable-p buffer-file-name))))
-      ;; CVSREAD=3Don special case
-      (vc-checkout buffer-file-name t))
-    (goto-char (point-max))
-    (unless (bolp) (insert "\n"))
-    (insert str (if old-dir "/\n" "\n"))
-    ;; FIXME this is a pcvs variable.
-    (if (bound-and-true-p cvs-sort-ignore-file)
-        (sort-lines nil (point-min) (point-max)))
-    (save-buffer)))
+(defun vc-cvs-find-ignore-file (file)
+  "Return the ignore file for FILE."
+  (expand-file-name ".cvsignore" (if file (file-name-directory file))))
+
+(defvar vc-cvs-ignore-param-glob
+  '(:escape: vc-cvs-glob-escape :anchor: "" :trailer: "" :dir-trailer: "/=
")
+  "Ignore parameters for CVS partially anchored glob wildcards.")
+
+(defun vc-cvs-ignore-param (&optional _ignore-file)
+  "Appropriate CVS ignore parameters for IGNORE-FILE."
+  vc-cvs-ignore-param-glob)
+
+(defun vc-cvs-glob-escape (string)
+  "Escape special glob characters and spaces in STRING."
+  (replace-regexp-in-string " " "?" (vc-glob-escape string) t))

 (provide 'vc-cvs)

diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 0c29352..0a1deeb 100644
=2D-- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -302,7 +302,8 @@ See `run-hooks'."
     (define-key map "Q" 'vc-dir-query-replace-regexp)
     (define-key map (kbd "M-s a C-s")   'vc-dir-isearch)
     (define-key map (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp)
-    (define-key map "G" 'vc-dir-ignore)
+    (define-key map "F" 'vc-ignore-file)
+    (define-key map "G" 'vc-ignore-pattern)

     (let ((branch-map (make-sparse-keymap)))
       (define-key map "B" branch-map)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 2caa287..5292f21 100644
=2D-- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -976,6 +976,10 @@ It is based on `log-edit-mode', and has Git-specific =
extensions.")
   (expand-file-name ".gitignore"
 		    (vc-git-root file)))

+(defun vc-git-ignore-param (&optional _ignore-file)
+  "Appropriate Git ignore parameters for IGNORE-FILE."
+  vc-ignore-param-glob-anchored)
+
 (defun vc-git-checkout (file &optional rev)
   (vc-git-command nil 0 file "checkout" (or rev "HEAD")))

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index eac9a6f..3d22ae2 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1212,6 +1212,29 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))

+(defvar vc-hg-ignore-param-regexp
+  '(:escape: vc-py-regexp-quote :anchor: "^" :trailer: "$" :dir-trailer: =
"/")
+  "Ignore parameters for Hg anchored regular expressions.")
+
+(defvar vc-hg-ignore-param-glob
+  '(:escape: vc-glob-escape :anchor: "" :trailer: "" :dir-trailer: "/*")
+  "Ignore parameters for Hg anchored regular expressions.")
+
+(defun vc-hg-ignore-param (&optional ignore-file)
+  "Appropriate Hg ignore parameters for IGNORE-FILE."
+  (let ((syntax "regexp"))
+    (if (not ignore-file)
+        (setq ignore-file (vc-hg-find-ignore-file default-directory)))
+    (if (file-exists-p ignore-file)
+        (with-current-buffer (find-file-noselect ignore-file)
+          (save-match-data
+            (goto-char (point-max))
+            (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$" ni=
l t)
+                (setq syntax (match-string 1))))))
+    (if (string=3D syntax "regexp")
+        vc-hg-ignore-param-regexp
+      vc-hg-ignore-param-glob)))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 345a28d..3492dc1 100644
=2D-- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -883,7 +883,8 @@ In the latter case, VC mode is deactivated for this bu=
ffer."
     (define-key map "b" 'vc-switch-backend)
     (define-key map "d" 'vc-dir)
     (define-key map "g" 'vc-annotate)
-    (define-key map "G" 'vc-ignore)
+    (define-key map "F" 'vc-ignore-file)
+    (define-key map "G" 'vc-ignore-pattern)
     (define-key map "h" 'vc-region-history)
     (define-key map "i" 'vc-register)
     (define-key map "l" 'vc-print-log)
@@ -970,8 +971,11 @@ In the latter case, VC mode is deactivated for this b=
uffer."
       '(menu-item "Register" vc-register
 		  :help "Register file set into a version control system"))
     (bindings--define-key map [vc-ignore]
-      '(menu-item "Ignore File..." vc-ignore
+      '(menu-item "Ignore File..." vc-ignore-file
 		  :help "Ignore a file under current version control system"))
+    (bindings--define-key vc-menu-map [vc-ignore-pattern]
+      '(menu-item "Ignore Pattern..." vc-ignore-pattern
+                  :help "Ignore a pattern under current version control s=
ystem"))
     (bindings--define-key map [vc-dir]
       '(menu-item "VC Dir"  vc-dir
 		  :help "Show the VC status of files in a directory"))
diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el
index 092d8b5..af42d3f 100644
=2D-- a/lisp/vc/vc-mtn.el
+++ b/lisp/vc/vc-mtn.el
@@ -106,6 +106,14 @@ switches."
   "Return the mtn ignore file that controls FILE."
   (expand-file-name ".mtnignore" (vc-mtn-root file)))

+(defvar vc-mtn-ignore-param-regexp
+  '(:escape: vc-py-regexp-quote :anchor: "^" :trailer: "$" :dir-trailer: =
"/")
+  "Ignore parameters for Mtn anchored regular expressions.")
+
+(defun vc-mtn-ignore-param (&optional _ignore-file)
+  "Appropriate Mtn ignore parameters for IGNORE-FILE."
+  vc-mtn-ignore-param-regexp)
+
 (defun vc-mtn-registered (file)
   (let ((root (vc-mtn-root file)))
     (when root
diff --git a/lisp/vc/vc-src.el b/lisp/vc/vc-src.el
index db127ee..cd9f032 100644
=2D-- a/lisp/vc/vc-src.el
+++ b/lisp/vc/vc-src.el
@@ -310,6 +310,32 @@ If LIMIT is non-nil, show no more than this many entr=
ies."
   "Rename file from OLD to NEW using `src mv'."
   (vc-src-command nil 0 new "mv" old))

+(defun vc-src-find-ignore-file (file)
+  "Return the ignore file for FILE."
+  (expand-file-name ".srcignore" (if file (file-name-directory file))))
+
+(defun vc-src-glob-escape (string)
+  "Escape special glob characters in STRING."
+  (save-match-data
+    (if (string-match "[?*[]" string)
+        (mapconcat (lambda (c)
+                     (pcase c
+                       (?? "[?]")
+                       (?* "[*]")
+                       (?\[ "[[]")
+                       (_ (char-to-string c))))
+                   string "")
+      string)))
+;; (vc-src-glob-escape "full[glo]?\\b*")
+
+(defvar vc-src-ignore-param-glob
+  '(:escape: vc-src-glob-escape :anchor: "" :trailer: "" :dir-trailer: ""=
)
+  "Ignore parameters for SRC unanchored glob wildcards.")
+
+(defun vc-src-ignore-param (&optional _ignore-file)
+  "Appropriate SRC ignore parameters for IGNORE-FILE."
+  vc-src-ignore-param-glob)
+
 (provide 'vc-src)

 ;;; vc-src.el ends here
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index d039bf3..9d35b75 100644
=2D-- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -352,17 +352,25 @@ to the SVN command."
 		(concat "-r" rev))
 	   (vc-switches 'SVN 'checkout))))

-(defun vc-svn-ignore (file &optional directory remove)
-  "Ignore FILE under Subversion.
-FILE is a wildcard specification, either relative to
-DIRECTORY or absolute."
-  (let* ((path (directory-file-name (expand-file-name file directory)))
-         (directory (file-name-directory path))
-         (file (file-name-nondirectory path))
+(defun vc-svn-find-ignore-file (file)
+  "Return the virtual ignore file for FILE."
+  (expand-file-name ".svnignore" (if file (file-name-directory file))))
+
+(defvar vc-svn-ignore-param-glob
+  '(:escape: vc-glob-escape :anchor: "" :trailer: "" :dir-trailer: "")
+  "Ignore parameters for SVN unanchored glob wildcards.")
+
+(defun vc-svn-ignore-param (&optional _ignore-file)
+  "Appropriate SVN ignore parameters for IGNORE-FILE."
+  vc-svn-ignore-param-glob)
+
+(defun vc-svn-modify-ignores (pattern ignore-file remove)
+  ;; implements =E2=80=98vc-default-modify-ignores=E2=80=99 for SVN
+  (let* ((directory (file-name-directory ignore-file))
          (ignores (vc-svn-ignore-completion-table directory))
          (ignores (if remove
-                      (delete file ignores)
-                    (push file ignores))))
+                      (delete pattern ignores)
+                    (push pattern ignores))))
     (vc-svn-command nil 0 nil nil "propset" "svn:ignore"
                     (mapconcat #'identity ignores "\n")
                     directory)))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index ec252b7..d3e5537 100644
=2D-- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1392,54 +1392,262 @@ first backend that could register the file is use=
d."
   (let ((vc-handled-backends (list backend)))
     (call-interactively 'vc-register)))

-(defun vc-ignore (file &optional directory remove)
-  "Ignore FILE under the VCS of DIRECTORY.
-
-Normally, FILE is a wildcard specification that matches the files
-to be ignored.  When REMOVE is non-nil, remove FILE from the list
-of ignored files.
+(defvar vc-ignore-param-none
+  '(:escape: identity :anchor: "" :trailer: "" :dir-trailer: "")
+  "Property list of ignore parameters for plain strings.
+
+All properties are optional.
+
+Property :escape: is a function that takes a pattern string as parameter
+and returns an escaped pattern (default is =E2=80=98identity=E2=80=99).
+
+Property :anchor: is a string that is prepended to the ignore
+pattern (default is an empty string).
+
+Property :trailer: is a string that is appended to non-directory
+ignore patterns (default is an empty string).
+
+Property :dir-trailer: is a string that is appended to directory
+ignore patterns (default is an empty string).")
+
+(defvar vc-ignore-param-glob
+  '(:escape: vc-glob-escape :anchor: "" :trailer: "" :dir-trailer: "")
+  "Ignore parameters for unanchored glob wildcards.")
+
+(defvar vc-ignore-param-glob-anchored
+  '(:escape: vc-glob-escape :anchor: "/" :trailer: "" :dir-trailer: "/")
+  "Ignore parameters for anchored glob wildcards.")
+
+(defvar vc-ignore-param-regexp
+  '(:escape: regexp-quote :anchor: "^" :trailer: "$" :dir-trailer: "/")
+  "Ignore parameters for anchored regular expressions.")
+
+(defun vc-default-ignore-param (_backend &optional _ignore-file)
+  "Default ignore parameters for IGNORE-FILE."
+  vc-ignore-param-glob)
+
+(defun vc-glob-escape (string)
+  "Escape special glob characters in STRING."
+  (save-match-data
+    (if (string-match "[\\?*[]" string)
+        (mapconcat (lambda (c)
+                     (pcase c
+                       (?\\ "\\\\")
+                       (?? "\\?")
+                       (?* "\\*")
+                       (?\[ "\\[")
+                       (_ (char-to-string c))))
+                   string "")
+      string)))
+
+(defvar vc--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (c)
+      (cons c (concat "\\" (char-to-string c)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-py-regexp-quote (string)
+  "Python regexp to match exactly STRING and nothing else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (c)
+      (or (cdr (assq c vc--py-regexp-special-chars))
+          (char-to-string c))))
+   string ""))
+
+(defun vc-ignore-pattern (pattern &optional directory remove)
+  "Ignore PATTERN under VCS of DIRECTORY.

 DIRECTORY defaults to `default-directory' and is used to
 determine the responsible VC backend.

-When called interactively, prompt for a FILE to ignore, unless a
-prefix argument is given, in which case prompt for a file FILE to
-remove from the list of ignored files."
+PATTERN is an expression following the rules of the backend
+pattern syntax, matching the files to be ignored.  When REMOVE is
+non-nil, remove PATTERN from the list of ignored files.
+
+When called interactively, prompt for a PATTERN to ignore, unless
+a prefix argument is given, in which case prompt for a PATTERN to
+remove from the list of ignored files offering currently defined
+patterns for completion."
   (interactive
    (list
     (if (not current-prefix-arg)
-        (read-file-name "File to ignore: ")
+        (read-string "Pattern to ignore: ")
       (completing-read
-       "File to remove: "
+       "Pattern to remove: "
        (vc-call-backend
         (or (vc-responsible-backend default-directory)
             (error "Unknown backend"))
         'ignore-completion-table default-directory)))
     nil current-prefix-arg))
-  (let* ((directory (or directory default-directory))
-	 (backend (or (vc-responsible-backend default-directory)
-                      (error "Unknown backend"))))
-    (vc-call-backend backend 'ignore file directory remove)))
-
-(defun vc-default-ignore (backend file &optional directory remove)
-  "Ignore FILE under the VCS of DIRECTORY (default is `default-directory'=
).
-FILE is a wildcard specification, either relative to
-DIRECTORY or absolute.
-When called from Lisp code, if DIRECTORY is non-nil, the
-repository to use will be deduced by DIRECTORY; if REMOVE is
-non-nil, remove FILE from ignored files.
-Argument BACKEND is the backend you are using."
-  (let ((ignore
-	 (vc-call-backend backend 'find-ignore-file (or directory default-direct=
ory)))
-	file-path root-dir pattern)
-    (setq file-path (expand-file-name file directory))
-    (setq root-dir (file-name-directory ignore))
-    (when (not (string=3D (substring file-path 0 (length root-dir)) root-=
dir))
-      (error "Ignore spec %s is not below project root %s" file-path root=
-dir))
-    (setq pattern (substring file-path (length root-dir)))
-    (if remove
-	(vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") i=
gnore)
-      (vc--add-line pattern ignore))))
+  (vc-ignore pattern directory remove t))
+
+(defun vc-ignore-file (file &optional directory remove)
+  "Ignore FILE under VCS of DIRECTORY.
+
+DIRECTORY defaults to `default-directory' and is used to
+determine the responsible VC backend.
+
+If FILE is nil, =E2=80=98vc-ignore-fileset=E2=80=99 is called.
+
+Otherwise, FILE is a file path that must be escaped and anchored.
+The directory name of FILE expanded against DIRECTORY is used to
+determine the ignore file.  The effective pattern consists of the
+file path relative to the directory of the ignore file, properly
+escaped and anchored by the VC backend.
+
+The effective pattern is added to the list of ignored files,
+unless REMOVE is non-nil, in which case it is removed.
+
+When called interactively and the mode is neither =E2=80=98vc-dir-mode=E2=
=80=99
+nor =E2=80=98dired-mode=E2=80=99, prompt for a FILE to ignore, unless a p=
refix
+argument is given, in which case prompt for a FILE to remove from
+the list of ignored files."
+  (interactive
+   (list
+    (unless (or (derived-mode-p 'vc-dir-mode) (derived-mode-p 'dired-mode=
))
+      (read-file-name
+       (concat "File to "
+               (if (not current-prefix-arg) "ignore" "remove") ": ")))
+    nil current-prefix-arg))
+  (if file
+      (vc-ignore file directory remove nil)
+    (vc-ignore-fileset nil remove)))
+
+(defun vc-ignore-fileset (&optional vc-fileset remove)
+  "Ignore file set under a version control system..
+
+If VC-FILESET is not given, it is deduced with
+=E2=80=98vc-deduce-fileset=E2=80=99.
+
+When REMOVE is non-nil (prefix arg, if interactive), remove the
+files from the list of ignored files."
+  (interactive (list nil current-prefix-arg))
+  (let* ((fileset-arg (or vc-fileset (vc-deduce-fileset t t)))
+         (backend (car fileset-arg))
+         (files (delq nil (nth 1 fileset-arg))))
+    (when files
+      (message "Ignoring %s... " files)
+      (mapc
+       (lambda (file)
+         (vc-call-backend backend 'ignore file nil remove nil)
+         (vc-dir-resynch-file file))
+       files))
+    (when (derived-mode-p 'vc-dir-mode)
+      (vc-dir-move-to-goal-column))
+    (when files (message "Ignoring %s... done" files))))
+
+(defun vc-ignore (file-or-pattern &optional directory remove as-is)
+  "Ignore FILE-OR-PATTERN under VCS of DIRECTORY.
+
+DIRECTORY defaults to `default-directory' and is used to
+determine the responsible VC backend.
+
+When REMOVE is non-nil, remove FILE-OR-PATTERN from the list of
+ignored files.
+
+If AS-IS is nil, FILE-OR-PATTERN is considered a file path that
+must be escaped and anchored.  The directory name of
+FILE-OR-PATTERN expanded against DIRECTORY is used to determine
+the ignore file.  The effective pattern consists of the file path
+relative to the directory of the ignore file, properly escaped
+and anchored by the VC backend.
+
+If AS-IS is non-nil, FILE-OR-PATTERN is considered a pattern that
+should not be modified.  DIRECTORY is used to determine the
+ignore file."
+  (setq directory (or directory default-directory))
+  (vc-call-backend (or (vc-responsible-backend directory)
+                       (error "Unknown backend"))
+                   'ignore file-or-pattern directory remove as-is))
+
+(defun vc-default-ignore (backend file-or-pattern &optional directory rem=
ove as-is)
+  ;; implements =E2=80=98vc-ignore=E2=80=99 generically
+  (apply #'vc-call-backend backend 'modify-ignores
+         (vc-call-backend backend 'get-ignore-file-and-pattern
+                          file-or-pattern directory as-is remove)))
+
+(defun vc-default-get-ignore-file-and-pattern (backend file-or-pattern &o=
ptional directory as-is remove)
+  "Determine ignore file and pattern for BACKEND from FILE-OR-PATTERN.
+Implements API of =E2=80=98vc-ignore=E2=80=99 for FILE-OR-PATTERN, DIRECT=
ORY and AS-IS.
+REMOVE is passed through without evaluation.
+Returns (pattern ignore-file remove) suitable for calling
+=E2=80=98vc-default-modify-ignores=E2=80=99."
+
+  (setq directory (or directory default-directory))
+  (when (not as-is)
+    (setq file-or-pattern (expand-file-name file-or-pattern directory))
+    ;; apply directory-as-file-name, otherwise, if file-or-pattern was
+    ;; a sub-repository, find-ignore-file would return the wrong
+    ;; ignore file:
+    ;; (vc-cvs-find-ignore-file "/re/po/dir/") =3D> /re/po/dir/.cvsignore
+    ;; (vc-cvs-find-ignore-file "/re/po/dir") =3D> /re/po/.cvsignore
+    (setq directory (file-name-directory (vc-no-final-slash file-or-patte=
rn))))
+
+  (let* ((ignore-file (vc-call-backend backend 'find-ignore-file director=
y))
+         (ignore-dir (file-name-directory ignore-file))
+         is-dir ignore-param pattern)
+    (if as-is
+        (setq ignore-param vc-ignore-param-none)
+      (when (not (string=3D (substring file-or-pattern 0 (length ignore-d=
ir))
+                          ignore-dir))
+        (error "Ignore spec %s is not below project root %s"
+               file-or-pattern ignore-dir))
+      ;; directory may not yet exist
+      (setq is-dir (or (file-directory-p file-or-pattern)
+                       (vc-has-final-slash file-or-pattern)))
+      (setq file-or-pattern (vc-no-final-slash
+                             (substring file-or-pattern (length ignore-di=
r))))
+      (setq ignore-param (vc-call-backend backend 'ignore-param ignore-fi=
le)))
+
+    (setq pattern
+          (concat
+           (plist-get ignore-param :anchor:)
+           (funcall (or (plist-get ignore-param :escape:) #'identity)
+                    file-or-pattern)
+           (or (and is-dir (plist-get ignore-param :dir-trailer:))
+               (plist-get ignore-param :trailer:))))
+    (list pattern ignore-file remove)))
+
+(defun vc-default-modify-ignores (_backend pattern ignore-file remove)
+  "Add PATTERN to IGNORE-FILE, if REMOVE is nil..
+Otherwise remove PATTERN from IGNORE-FILE."
+  (if remove
+      (vc--remove-regexp
+       (concat "^" (regexp-quote pattern) "\\(\n\\|$\\)") ignore-file)
+    (vc--add-line pattern ignore-file)))
+
+(defun vc-file-name-directory (file &optional dir dir-as-file)
+  "Get directory name for FILE.
+FILE is expanded against DIR.  If FILE is a directory and DIR-AS-FILE
+is non-nil, its parent directory is returned."
+  (and file
+       (let* ((path (expand-file-name file dir)))
+         (file-name-directory
+          (if dir-as-file
+              (vc-no-final-slash path)
+            path)))))
+
+(defun vc-file-relative-name (file &optional dir dir-is-empty)
+  "Get relative file name for FILE against DIR.
+If FILE is a directory and DIR-IS-EMPTY is non-nil, nil is returned.
+Otherwise, if FILE is a directory, the final slash is removed."
+  (and (not (and dir-is-empty (file-directory-p file)))
+       (vc-no-final-slash (file-relative-name file dir))))
+
+(defun vc-no-final-slash (s)
+  "Remove optional final slash from string S."
+  ;; based on =E2=80=98ido-no-final-slash=E2=80=99
+  (let ((l (vc-has-final-slash s)))
+    (if l (substring s 0 l) s)))
+
+(defun vc-has-final-slash (s)
+  ;"Return index of final slash in string S or nil."
+  (let ((l (1- (length s))))
+    (and (> l 0) (eq (aref s l) ?/) l)))

 (defun vc-default-ignore-completion-table (backend file)
   "Return the list of ignored files under BACKEND."
=2D-
2.7.4


--------------5734CFC43CA54F90F53A969E--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 9 Feb 2020 14:07:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 09:07:42 2020
Received: from localhost ([127.0.0.1]:52220 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0nFN-0003YW-Uy
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2020 09:07:42 -0500
Received: from mout.gmx.net ([212.227.17.20]:36839)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0nFM-0003YH-EP
 for 37189 <at> debbugs.gnu.org; Sun, 09 Feb 2020 09:07:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581257253;
 bh=JqkWJHCvr6O4NiHFScKbWeWRs3aUV+2+E7Lgzb1JIHI=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=YikZFlQiUwLXmM+x0KKLEXRF+OonZIEbRvQRC0+rUEQt5qSZ7z1v9tFAVw70nT7wb
 kHXk9PfZfxhux8GAjtgEmkVvFvfd0bCJt7aseDPeeu6yUOSxPqK8EPBYkf45TsukHa
 9muhIxpM6yhiSKsMy97yAHYHA6l7icEcd2zrqe9M=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MNKhm-1iqP0R3L4c-00OpwM; Sun, 09
 Feb 2020 15:07:33 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 2734219431CE;
 Sun,  9 Feb 2020 15:07:33 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
 <bd9a18c9-a1ce-9776-ec83-dbeeba26cf75@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <c902945a-a02f-f00a-73f2-d36f047c01d0@HIDDEN>
Date: Sun, 9 Feb 2020 15:07:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <bd9a18c9-a1ce-9776-ec83-dbeeba26cf75@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:ob25K1Cp+dHBaBS3nBGBXQw3jGBy4uCC3B6jLBmAUL8xYvj7smN
 6joTAYiV+wUi848a1g4cTP7m2m5rSKoYn34cEUtxPSaqYYy0TX3o9A3xBkNQP7M0zhe95C2
 oIAQmhDhAsk8jKaxLUKUcjac/Tl9adtLpDA8O1hs2zLHNVANczKKNCT0AJEJykvVtAofOEF
 MpSISCDZ5vt6ML/INE3Rw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:D5C2BPuDXig=:chacbgMaEvEr9pvU9qdLgs
 Dz7QCSk58IC912AxAPhvhxR112g+3zc6N2r8WKn4SNtmxvM40A5FfidVsBY+0jgkbo2vRbb96
 GsEd5malgf/MDJ+bRMzjwgV7B0InGlK47T77uC9F6hRRiL/YaoZo+L/TLo5GKXdRW9FUkvtAP
 Zq30LUNBES9tpeMtRxjLXxcVL5UwtZHNm8po7rzazkmdS7BIZlNgzGdi9fdG38JdiM6LqwC1Y
 ye9zFVNpeE1vcguaUPOhvTTQIK+opSxjh3y37kmH84659WLc1W+X6Q90sVUtwaOyhGppY4H5X
 b/qGZsgesFy3ZmqUVubLtLV/NHaycQMSUCGxKZ9MUfldguTPmEltZ7mzZJ8YU5+sy3lj+pQsT
 sdBNXu9hdw6c26AUCnqmuPsTWnbdKVxC3nKVul9bnSTz497iN73YZYIvgpOgMa4bA6grWzffq
 eGf/rh9A9wDczI/DUW3DsY1XyO1NV0EyDtKYhGAplQxANdddwu1x7mX4GlRJ+lS4ISG3mbaDB
 JKc7mFYTtuj5kplkSJw5891IPZ2J5FmLHo3v8IUCl00rWdsufYLghgk3fqQSEgx0XoJQtMKQ2
 gK1WPI7YgGNq8h6iGMHMMoGZ+f5qRl9x3mSYIa+GTcKRCBTCGhftxOo1/gib4hZmUWhokCUiM
 uRkQR2qV1xaA/qoHNy8TUOBCvWsVgksKNCNaCzD/OHgelGSIe5crDAzDDMSb/0ik59tUr6W5W
 dPxGIfCdKcIcpMulXFOnH093PauBzB89k8eFNugWPFXTK+kbUzJYmPCb28YxiOdzQG6kN3t8Z
 AvimTUTE2o4D5Z6TD8bptEutCKWlT+If3Cc3mmWtFnKI1Yi3h3i02oCQJIxe++kwgnlIVjbt3
 XPvEqGamOgGxJp7/hj8vgMVZZsbxz8jjpDMj+9sWuDXwlQVnNNxFhKUgvHrhzzlpK1gYk4z/M
 g8g4gvBIATEB+ZUxxaxf9EnxlGqLiH2RzCnLHL1GXFBsnr+OBVPSR9zYteJ/cf3r00KxaGE1G
 7w3UXjkLjLIrc8WCbZtjO1w6AVaeZ7GtN3+F6ip3bQoWOgOO78JIdcMqZpLZb0445aX9ZHnd8
 I5+gfhz6EjNig0uaTuQWxQtLUTc/C5Ant5LNkydZq6ysnaZP8rVxhmvA2TpBJwaBniof1agmQ
 6OGUSWxs/0L4Id2D4hjTWogF6TqiJNbRajNT0PFfcr+s+bgjYny9UBeFI4PisS1fv1nh/yXqL
 3SWe4XsPYMzv8ef68
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Sorry, my mail client had problems sending the mail, so it went out three times.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 9 Feb 2020 13:57:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 08:57:25 2020
Received: from localhost ([127.0.0.1]:52202 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0n5R-0003H3-0M
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:25 -0500
Received: from mout.gmx.net ([212.227.17.22]:33527)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0n5N-0003GR-7r
 for 37189 <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:22 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581256635;
 bh=IoPR5l19VCoDcEEBsHG5g4aONi+ORYr+RaWsDdeSmk4=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=JSZXlbIV2bFD9PdKD8WbBSdk1UAWJwq6/lcDvgSC9TZuCWTRdkTMIBE1GlFE5wLCW
 2Xt5WI0hVMD1DQ61kH/WSYCxNWj/PiNoGNYpkpKRyxqNUyONs/q7gVVpraIDn67N21
 wy91tfhfXeI+7YzyPnn/AHD1i0IgsgUoxgsM3Y38=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1wll-1jTtVj3TZJ-012K8X; Sun, 09
 Feb 2020 14:57:14 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 88D3B19431CF;
 Sun,  9 Feb 2020 14:57:13 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <5622487d-a21f-49cf-5420-21f87415af4f@HIDDEN>
Date: Sun, 9 Feb 2020 14:57:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:WTtdtmDpB9dwG8kNB5v+WYzbdb1RWw20eBk8Bdo510FzXVDnxf2
 nOaG68UsUMUARuOpSQO48ZkMbecC9NxjqpDrVZ53BXvpwvWbzbRaT20eJsbPpv3XOHXLcGf
 Qy+Y6fUzGPDK/4+DoHTg3Rh9FlU9BG58rKeopUzRXAHUQ+nxlML4Ke0ktRNECltzfEMef+5
 /4l06rBhz5MzooZqnQyUQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:nAqJof3tJ8o=:D2Fp/szW6HEbcLoqmZFdps
 oOIixOFaJ4AFYFHxtNEocePrjZsD2gm0iwiEoWf475lNXtOPNDY8bXhvptFjFf2Y5zyGJ+AvD
 hM3/7z5WrZyFzBMkd0cauMXWGgqCtXo+Q20YVkvqa0/J00COwtjwN+FYAI1ccnCpfM5hqwkAb
 nBiNTAV/ObkRKNC8/XCO5bO+5cwu7AiovkL6/tftQVXU02vxsRTZsvAFT80s8GlXdtQlvrdCB
 CRqzQ74OWSBp/nZaTky7JeBWGb8C+VNTNSLZyEBmbnJzUCTaF4F6bAj4oobpch6kQYNJRb6Ci
 lRZ1uZZYRzoHtBfmCrvilojMIN+Ml+7RH24VpnPHyYcu8qOQSgcPmmYTSxYdqGpcKFaqHECtw
 rvBu8Y/jUSKCo7nSwAyJ60yIvUR5suBL5SdWpQ/mZwjXJG31ugqTxFh7xvFajdQFcLOqWMhHE
 vE9odWGN7t1rWlN5VzLgfkJ1EhhdNPcxqhZ93db2Asb71GIlkDsOw6HPJtFVr58BTWCFLBY0y
 WwRZa8ymJss9pSUiGqyXpA6r/N6Kn+naX8LRSmy0KzgOKafeINiNLfuiP/At55K6FEGSZHnSP
 sPKTyke41rjXGzP7b8Gk4BYXRpZmMS3q0rxKCRHiTWSrw6Y1k85oA7ai36wQwQ+A+d5cL39a5
 n6iMiMvlBmiZM+vuX+gP9OYgbQP6LgfbjXnCGV3DkFyA2SLYGmA24HIyn6cQg9tiKdrAHQGOi
 tzUmmMTLi4YJ9a+pPqbd2jf4zhAUHmsciVRAduIOXSNJpQ/O21Kkr7o5uGPHCCycixKwhI9OT
 vOpjmdEABd/WfqZNCMNhgxCn6/MZ7enLSDnAcUCuk7Ry0FOyvWGwzcuXfQ6ClY9eO+1XfVD/b
 sd960h2Xb8Nj6ULlLsrJy+Xx7qvyeYuSM5FvkPoX8wx8UPKDLCxn56KcXEpx7KpNgW+ak5Gl1
 ljvmP6kgo2uryAazn4TBDlbChHiGEQAggSMdKDXsl0O2++8pkWEPT67OIVJgLOrfSv3XYI5mx
 RV/uJ7bl/+RWCWXneQuPJRU/bPbZDeWRl3Iajxr22JT3ZV8ZlklktoJlLPXuS1/a/HA7xuFPh
 NizTdqtlr/HJMSDP+0lg7/16fGEl4RSPNazWYRF924fb3YyRqIoIXrzT3LHT7J4BPSwvntZTg
 pJ6kqhp/SnPvBlQBcRmh6kszFNjq6mz5h2a3P6mpg7QjxbsPCth6BAKWV8O67rgGk5m82y0yu
 BO0dRaFK7QODn2n9Y
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Let me clarify this one last time.

> The "pattern" use case is not the "wildcard" use case. "pattern" is an u=
nspecified string, while "wildcard" is backend specific. For SVN it is a g=
lob(7) expression without subdirectories (otherwise it does not match anyt=
hing).
>
"pattern" is a generic term, which does not imply a specific syntax.

"wildcard specification" is a pattern following the rules of a glob(7)
syntax variant.

"regexp pattern" implies one of the regular expression syntaxes
(regex(7), Emacs, Perl, Python, ...).

Citing from 4.2.1. file pathes are not patterns (http://sw-amt.ws/emacs/do=
c/_build/html/emacs-vc-ignore-feature.html#file-pathes-are-not-patterns):

=C2=A0=C2=A0=C2=A0 Assuming that a file path is always a pattern that matc=
hes the
=C2=A0=C2=A0=C2=A0 file path unambiguously is simply wrong.

=C2=A0=C2=A0=C2=A0 When ignoring a specific file path and nothing but that=
 file
=C2=A0=C2=A0=C2=A0 path, a pattern must be constructed that matches the fi=
le path
=C2=A0=C2=A0=C2=A0 exactly. The syntax for this pattern is backend specifi=
c and the
=C2=A0=C2=A0=C2=A0 pattern is generally not the file path itself. In other=
 words: it
=C2=A0=C2=A0=C2=A0 is an exception that a file path and the exactly matchi=
ng pattern
=C2=A0=C2=A0=C2=A0 are identical strings. Specifically, if a file path con=
tains a
=C2=A0=C2=A0=C2=A0 character with special meaning in the pattern syntax, t=
hen the
=C2=A0=C2=A0=C2=A0 matching pattern cannot be identical to the file path s=
ince the
=C2=A0=C2=A0=C2=A0 special character must be escaped.

=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | `file path` | glob(7)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | anchored glob | Hg `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | Bzr `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
=C2=A0=C2=A0=C2=A0 | test[56].xx |=C2=A0=C2=A0 test\[56].xx=C2=A0 | /test\=
[56].xx | ^test\[56]\.xx$ | RE:^test\[56]\.xx$ |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 test[[]56].xx |=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | simple.txt=C2=A0 |=C2=A0=C2=A0 simple.txt=C2=A0=C2=A0=
=C2=A0 | /simple.txt=C2=A0=C2=A0 | ^simple\.txt$=C2=A0=C2=A0 | RE:^simple\=
.txt$=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 simple[.]txt=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+

=C2=A0=C2=A0=C2=A0 The correct escaping of FILE can only be determined by =
the
=C2=A0=C2=A0=C2=A0 backend. Therefore neither vc-dir-ignore nor lisp code =
calling
=C2=A0=C2=A0=C2=A0 vc-ignore can escape the FILE parameter correctly witho=
ut support
=C2=A0=C2=A0=C2=A0 from the backend. This makes pattern input for FILE onl=
y useful
=C2=A0=C2=A0=C2=A0 during interactive calls.

Even, if it was magically possible to determine the correct
pattern in the frontend, submitting an anchored
glob "/some-sub/file.txt" to `vc-ignore` would be interpreted as
an absolute path.

In other words, the API specificaton

=C2=A0 [...] FILE is a wildcard specification, either relative to
=C2=A0 DIRECTORY or absolute.

which asks for implementing the pattern use case inextricably
mixed with the file path use case, is nonsense.

It also means, that all of the backend functions which currently
demand a pattern are absolutely useless.

Therefore the API change request is specifically:

=C2=A0=C2=A0=C2=A0 (defun vc-ignore (file-or-pattern &optional directory r=
emove as-is)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE-OR-PATTERN under VCS of DIRECT=
ORY.

=C2=A0=C2=A0=C2=A0 DIRECTORY defaults to `default-directory' and is used t=
o
=C2=A0=C2=A0=C2=A0 determine the responsible VC backend.

=C2=A0=C2=A0=C2=A0 When REMOVE is non-nil, remove FILE-OR-PATTERN from the=
 list of
=C2=A0=C2=A0=C2=A0 ignored files.

=C2=A0=C2=A0=C2=A0 If AS-IS is nil, FILE-OR-PATTERN is considered a file p=
ath that
=C2=A0=C2=A0=C2=A0 must be escaped and anchored. The directory name of
=C2=A0=C2=A0=C2=A0 FILE-OR-PATTERN expanded against DIRECTORY is used to d=
etermine
=C2=A0=C2=A0=C2=A0 the ignore file.=C2=A0 The effective pattern consists o=
f the file path
=C2=A0=C2=A0=C2=A0 relative to the directory of the ignore file, properly =
escaped
=C2=A0=C2=A0=C2=A0 and anchored by the VC backend.

=C2=A0=C2=A0=C2=A0 If AS-IS is non-nil, FILE-OR-PATTERN is considered a pa=
ttern that
=C2=A0=C2=A0=C2=A0 should not be modified.=C2=A0 DIRECTORY is used to dete=
rmine the
=C2=A0=C2=A0=C2=A0 ignore file."





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 9 Feb 2020 13:57:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 08:57:25 2020
Received: from localhost ([127.0.0.1]:52200 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0n5Q-0003Gv-Jo
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:24 -0500
Received: from mout.gmx.net ([212.227.17.22]:53917)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0n5N-0003GP-7h
 for 37189 <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:22 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581256634;
 bh=IoPR5l19VCoDcEEBsHG5g4aONi+ORYr+RaWsDdeSmk4=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=Da0IlJziBDt9idLTqUcAvThZCuLl1ICzyimfgsDhfSmt4mSjNS7ZY2OicaVtD3HD2
 LQZ4y3DAVLWXaoFezrHQr6YnhS5YKuHHSk2H5/zcjon1y4MMbEdJXi1NSDsnSHCq3l
 8tFuHrjWLDXJJwuXSd4ofIyb7w+9y9pkWEdOb68Q=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MVNB1-1iu0nV2gBb-00SRLr; Sun, 09
 Feb 2020 14:57:14 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 881A119431CE;
 Sun,  9 Feb 2020 14:57:13 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <bd9a18c9-a1ce-9776-ec83-dbeeba26cf75@HIDDEN>
Date: Sun, 9 Feb 2020 14:57:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:zhCvjKhtZ/x0gZe82OpHFdLkwARWpiPJnlZOv19pDT1w8Kt3lpt
 9ipMSwNOyXUC7quqBD/TDIQOEGi10q2J83zLQP0XSftr2oTMy+sh/VH3WImG2CgAEVxR25T
 2NgeveqGR9PLLQ0fMObnQ7mBYbI3bpqWLe0H3x2DE+MAmNHCmwWrO9EHvJV4Vjziam+r3W4
 LBeIAfVuaYhruoy6sVaFA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:FpLkACZkHwo=:ch68Qv+n164HFdKa7ZWHza
 o0SG+hpWMh1gIYsA0VYdraZb4+3F9oOaQ4VKlgI5Q6AKQGcCIxLU2a6tu/ZS7gjja9mgdYbQW
 lUcqho+smbLeMl+X7NiZs3zGk8i0AiabPZnXLZrh5AoYwidlsdzzOcXFNr+wZrIJm7QJ6VDHy
 gbGd6R1yo10b/vIPzgN8sApwAvKoEBPdhTrZSGCpjA/rHXj2olYwzvfh95SC75R0s72z7jC3t
 xsJrAAGqpc4XXyVJlv5l9c1Z83E6dziLQu75iWSewpxPPRtt+fQ0Rq4F99ictfb+bSfvKr6Ob
 TQbRYsTbRzWIsVBendwbNPn8A/rP6AE7dhar+fc4JcGReMNXsRiG88jbnksiK1rR17mic5Gpm
 lGfFXdhUnaSBoLCLdF2SJJK/b5OFydON1Shg/gc2QCGC2jXdkXg/2FsyoEv3Uj2exxt5+oyWD
 HqasLUYwIn1UvMAKqP2OsjlNttH6hsp77eTDA8/Iwn/pvOC12UXx4CWnzvcLQ4DuL7Ggiedu2
 EtoTEfhGSTy64BBaLbQKHTncrlGod4+A0cGrhcNtyypCpfL6CpVLpdqmP/SXZ+3tBXYbWN76o
 QU/3X+LjtU/aEm7p0Kofhac+rV/5opjWP4z59QGdgTLSmuPvnjHyTXKMMUGCBRxm+Z2HRfWDN
 xvwuWJnCKWpyyR0DH1gYhsTR4x1tOrxHCUrLBfOuvmQw6XmD0P5Kz12R+QlO85gYgeN2aqT7m
 59nE7/2QbZuPAUMj4MOJf1P+UZ15FpmYyRYf4B7ukJYrGhY7N5F1xyiHA3IX9th4zyMClvQB0
 bNh/pawBgCY3yb4vj1exLcTYmptQOTbaguNwFbQ26lwkW6I0VquOu3Zzj6az+ZBLUhirt4LER
 /4+tTgmNKwm3BUxlL/LpT8s9Sd897FAdYF9Az7S4beX19i2+SkEoW8+D458ETpo1lwhqxVf1h
 eLYogMOWZqLhNly+wgw2l8+iC6P+cB12sMw+2JuKQ4x4tg/9OyZ3pTfFSzEgGBCv0no/cOIUL
 xl2yER2K9xeCGlbfk2KpTBthr6mGPNbQypUsRyHqmCyN45m4KGSM+7MTFM3ibtLJXhRYd6ELz
 TUklbpDx3V5NXqdfOB+2Vgcyimfa9VkwAkX0SauYTgV6clBgu4zd7suRoYMzuZi00IadKqiEa
 CNciKS7mks2gopg7Z7wNXv4y2s+ULQBvRB9PON9o8ZzBz8YIAXvu3C3TABomvJPQ5116/tw2O
 fcr7C8drSXaxEIExQ
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Let me clarify this one last time.

> The "pattern" use case is not the "wildcard" use case. "pattern" is an u=
nspecified string, while "wildcard" is backend specific. For SVN it is a g=
lob(7) expression without subdirectories (otherwise it does not match anyt=
hing).
>
"pattern" is a generic term, which does not imply a specific syntax.

"wildcard specification" is a pattern following the rules of a glob(7)
syntax variant.

"regexp pattern" implies one of the regular expression syntaxes
(regex(7), Emacs, Perl, Python, ...).

Citing from 4.2.1. file pathes are not patterns (http://sw-amt.ws/emacs/do=
c/_build/html/emacs-vc-ignore-feature.html#file-pathes-are-not-patterns):

=C2=A0=C2=A0=C2=A0 Assuming that a file path is always a pattern that matc=
hes the
=C2=A0=C2=A0=C2=A0 file path unambiguously is simply wrong.

=C2=A0=C2=A0=C2=A0 When ignoring a specific file path and nothing but that=
 file
=C2=A0=C2=A0=C2=A0 path, a pattern must be constructed that matches the fi=
le path
=C2=A0=C2=A0=C2=A0 exactly. The syntax for this pattern is backend specifi=
c and the
=C2=A0=C2=A0=C2=A0 pattern is generally not the file path itself. In other=
 words: it
=C2=A0=C2=A0=C2=A0 is an exception that a file path and the exactly matchi=
ng pattern
=C2=A0=C2=A0=C2=A0 are identical strings. Specifically, if a file path con=
tains a
=C2=A0=C2=A0=C2=A0 character with special meaning in the pattern syntax, t=
hen the
=C2=A0=C2=A0=C2=A0 matching pattern cannot be identical to the file path s=
ince the
=C2=A0=C2=A0=C2=A0 special character must be escaped.

=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | `file path` | glob(7)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | anchored glob | Hg `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | Bzr `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
=C2=A0=C2=A0=C2=A0 | test[56].xx |=C2=A0=C2=A0 test\[56].xx=C2=A0 | /test\=
[56].xx | ^test\[56]\.xx$ | RE:^test\[56]\.xx$ |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 test[[]56].xx |=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | simple.txt=C2=A0 |=C2=A0=C2=A0 simple.txt=C2=A0=C2=A0=
=C2=A0 | /simple.txt=C2=A0=C2=A0 | ^simple\.txt$=C2=A0=C2=A0 | RE:^simple\=
.txt$=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 simple[.]txt=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+

=C2=A0=C2=A0=C2=A0 The correct escaping of FILE can only be determined by =
the
=C2=A0=C2=A0=C2=A0 backend. Therefore neither vc-dir-ignore nor lisp code =
calling
=C2=A0=C2=A0=C2=A0 vc-ignore can escape the FILE parameter correctly witho=
ut support
=C2=A0=C2=A0=C2=A0 from the backend. This makes pattern input for FILE onl=
y useful
=C2=A0=C2=A0=C2=A0 during interactive calls.

Even, if it was magically possible to determine the correct
pattern in the frontend, submitting an anchored
glob "/some-sub/file.txt" to `vc-ignore` would be interpreted as
an absolute path.

In other words, the API specificaton

=C2=A0 [...] FILE is a wildcard specification, either relative to
=C2=A0 DIRECTORY or absolute.

which asks for implementing the pattern use case inextricably
mixed with the file path use case, is nonsense.

It also means, that all of the backend functions which currently
demand a pattern are absolutely useless.

Therefore the API change request is specifically:

=C2=A0=C2=A0=C2=A0 (defun vc-ignore (file-or-pattern &optional directory r=
emove as-is)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE-OR-PATTERN under VCS of DIRECT=
ORY.

=C2=A0=C2=A0=C2=A0 DIRECTORY defaults to `default-directory' and is used t=
o
=C2=A0=C2=A0=C2=A0 determine the responsible VC backend.

=C2=A0=C2=A0=C2=A0 When REMOVE is non-nil, remove FILE-OR-PATTERN from the=
 list of
=C2=A0=C2=A0=C2=A0 ignored files.

=C2=A0=C2=A0=C2=A0 If AS-IS is nil, FILE-OR-PATTERN is considered a file p=
ath that
=C2=A0=C2=A0=C2=A0 must be escaped and anchored. The directory name of
=C2=A0=C2=A0=C2=A0 FILE-OR-PATTERN expanded against DIRECTORY is used to d=
etermine
=C2=A0=C2=A0=C2=A0 the ignore file.=C2=A0 The effective pattern consists o=
f the file path
=C2=A0=C2=A0=C2=A0 relative to the directory of the ignore file, properly =
escaped
=C2=A0=C2=A0=C2=A0 and anchored by the VC backend.

=C2=A0=C2=A0=C2=A0 If AS-IS is non-nil, FILE-OR-PATTERN is considered a pa=
ttern that
=C2=A0=C2=A0=C2=A0 should not be modified.=C2=A0 DIRECTORY is used to dete=
rmine the
=C2=A0=C2=A0=C2=A0 ignore file."





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 9 Feb 2020 13:57:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 08:57:24 2020
Received: from localhost ([127.0.0.1]:52198 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0n5Q-0003Gt-6l
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:24 -0500
Received: from mout.gmx.net ([212.227.17.22]:59333)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0n5N-0003GQ-7c
 for 37189 <at> debbugs.gnu.org; Sun, 09 Feb 2020 08:57:22 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581256635;
 bh=IoPR5l19VCoDcEEBsHG5g4aONi+ORYr+RaWsDdeSmk4=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=JSZXlbIV2bFD9PdKD8WbBSdk1UAWJwq6/lcDvgSC9TZuCWTRdkTMIBE1GlFE5wLCW
 2Xt5WI0hVMD1DQ61kH/WSYCxNWj/PiNoGNYpkpKRyxqNUyONs/q7gVVpraIDn67N21
 wy91tfhfXeI+7YzyPnn/AHD1i0IgsgUoxgsM3Y38=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M2wKq-1j44s23SRg-003JMy; Sun, 09
 Feb 2020 14:57:14 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 8986B19431D1;
 Sun,  9 Feb 2020 14:57:13 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
 <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <c275d76f-89d0-267c-c598-72b1e089e351@HIDDEN>
Date: Sun, 9 Feb 2020 14:57:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:7fKVmjJF8FxEvUe7AxY+ccLAt+od1897lsyDdbzYRrF7N4DNEni
 T4VEuWfYR7aRHEpe0F03YtqGRBUXjjd6VA9BgAWHwRVHh3fehh3c/KJ6wUieUTCgaHAJOGF
 NNRMdft8O2khHacD2303IWQBangeP918yOboqCWVXf2i4W9q5cKJneu1v80CGUpruOnHJ9z
 wh4cepsK7YvBPPD1gfD1Q==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:iFcrubHJ9So=:0duaevhw2QgU7nFy4EkzYZ
 xNSinKyof1Qz98I76m3MUT5UslIDr2nI5ty+MTTdegRBldypUP9yHZIY/ZIbHL71bxcpt9Pwd
 SlgdB/AmRlypcRy22fvUPLc9SMRFEqg6pvwSlXo/Y+CektBHdZYwS6o92Jh4zt6O+N5Oo2YIO
 fJDJkaL6Ki0Ef16ScEacvlL7BiupK1zqXOxpMERajbLWZztYOhqsHsvOkeiOhua/FYHgzXom7
 MceTEtWiMe+ShTwupiuDvi6K2bKJRsgOPWTDZzlOlOc8bE9UO0vpkLSeH7V7ivDjcmhJljtGC
 69+TCR/eiIw980h/YQ98FKLQiJ+EHF8CLXA8qvKnmiSJZA/ufdQ3FQv53HEdr40EpE+cw3XoI
 I8bShFv87PuvK0Z0+zON8VPVVjxBwOYL67BS0L9WZt7zKmVHIEJnNaBLaVFOFP6NwJrKGq/X8
 evKl3eIA0I+Es9F/ORYK7Kchb7G8lQ2db9GXMnBQenRU3kjt7gMM5l5X1GBkgQXArDCzpxOSE
 GH0JhwHwZ/YLaXC15RiPNGDeu/aSIJPbaygpio3FBYlC6DHaLsaEfyQfotaLsI2VPIYRu7m9M
 +8Uew4fBnjPjq3ejTdZ9UXouTxHcWlfES9lcoM1fRq11coB4sVlznNEx2IVb5efG6b/3FQbts
 pVUSW6/J7ARU+0aOhxY3eaYLk8t1lwCySkgO6ikStLmREShBX60zQqnTbX08U6FClFOonWs20
 82rorcXm4E1BQ5z2iaWUaJuCRSW8tER2T+oCY7UhKp1DMX72WoOCYq8Z8mjkiwwxAo5jHktfZ
 6c9x6eG9bVThLaTsYRYQew6sOS7yFuU1oOSuL0F6/K21UJENqcORv8Er67YQpg3NLx8GjcbFj
 vzdrVVtZ15h+hceCi9px1/bC5J37uChI6ohh+Jgq8MiVh0Uu0OnHgA8XYJN2vO/neb3ntJS2E
 kmuzgo+tNk9sgZ95wnO0v48bwbWkPDJa+/twOvVwzkf+bKHOkLBiBz6Djsyk/9h1/3G68KZRU
 TzHB0C5lBXPG9lsjpPbZpZD256f/qj4DEyMG/s9IU/vL65nSVpJohmdPRXDxyCT9MqdQP47Xc
 m3amvc5OwmOOxasv8jvLAGa1wKfHLi9Nxx52aA63RAw3wGCrr7gMxP3fjIIFt//EpnBmLJyso
 oUtsVXt2bd1v/p/0+sMhl81gUWo3VjSGgsI174S60ySznpCPixCIak10O0tTwA9XGzRznVvfQ
 XSVcvfoRAL4cJJ/q/
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Let me clarify this one last time.

> The "pattern" use case is not the "wildcard" use case. "pattern" is an u=
nspecified string, while "wildcard" is backend specific. For SVN it is a g=
lob(7) expression without subdirectories (otherwise it does not match anyt=
hing).
>
"pattern" is a generic term, which does not imply a specific syntax.

"wildcard specification" is a pattern following the rules of a glob(7)
syntax variant.

"regexp pattern" implies one of the regular expression syntaxes
(regex(7), Emacs, Perl, Python, ...).

Citing from 4.2.1. file pathes are not patterns (http://sw-amt.ws/emacs/do=
c/_build/html/emacs-vc-ignore-feature.html#file-pathes-are-not-patterns):

=C2=A0=C2=A0=C2=A0 Assuming that a file path is always a pattern that matc=
hes the
=C2=A0=C2=A0=C2=A0 file path unambiguously is simply wrong.

=C2=A0=C2=A0=C2=A0 When ignoring a specific file path and nothing but that=
 file
=C2=A0=C2=A0=C2=A0 path, a pattern must be constructed that matches the fi=
le path
=C2=A0=C2=A0=C2=A0 exactly. The syntax for this pattern is backend specifi=
c and the
=C2=A0=C2=A0=C2=A0 pattern is generally not the file path itself. In other=
 words: it
=C2=A0=C2=A0=C2=A0 is an exception that a file path and the exactly matchi=
ng pattern
=C2=A0=C2=A0=C2=A0 are identical strings. Specifically, if a file path con=
tains a
=C2=A0=C2=A0=C2=A0 character with special meaning in the pattern syntax, t=
hen the
=C2=A0=C2=A0=C2=A0 matching pattern cannot be identical to the file path s=
ince the
=C2=A0=C2=A0=C2=A0 special character must be escaped.

=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | `file path` | glob(7)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | anchored glob | Hg `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | Bzr `regex`=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
=C2=A0=C2=A0=C2=A0 | test[56].xx |=C2=A0=C2=A0 test\[56].xx=C2=A0 | /test\=
[56].xx | ^test\[56]\.xx$ | RE:^test\[56]\.xx$ |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 test[[]56].xx |=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+
=C2=A0=C2=A0=C2=A0 | simple.txt=C2=A0 |=C2=A0=C2=A0 simple.txt=C2=A0=C2=A0=
=C2=A0 | /simple.txt=C2=A0=C2=A0 | ^simple\.txt$=C2=A0=C2=A0 | RE:^simple\=
.txt$=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 simple[.]txt=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
=C2=A0=C2=A0=C2=A0 +-------------+-----------------+---------------+------=
-----------+--------------------+

=C2=A0=C2=A0=C2=A0 The correct escaping of FILE can only be determined by =
the
=C2=A0=C2=A0=C2=A0 backend. Therefore neither vc-dir-ignore nor lisp code =
calling
=C2=A0=C2=A0=C2=A0 vc-ignore can escape the FILE parameter correctly witho=
ut support
=C2=A0=C2=A0=C2=A0 from the backend. This makes pattern input for FILE onl=
y useful
=C2=A0=C2=A0=C2=A0 during interactive calls.

Even, if it was magically possible to determine the correct
pattern in the frontend, submitting an anchored
glob "/some-sub/file.txt" to `vc-ignore` would be interpreted as
an absolute path.

In other words, the API specificaton

=C2=A0 [...] FILE is a wildcard specification, either relative to
=C2=A0 DIRECTORY or absolute.

which asks for implementing the pattern use case inextricably
mixed with the file path use case, is nonsense.

It also means, that all of the backend functions which currently
demand a pattern are absolutely useless.

Therefore the API change request is specifically:

=C2=A0=C2=A0=C2=A0 (defun vc-ignore (file-or-pattern &optional directory r=
emove as-is)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE-OR-PATTERN under VCS of DIRECT=
ORY.

=C2=A0=C2=A0=C2=A0 DIRECTORY defaults to `default-directory' and is used t=
o
=C2=A0=C2=A0=C2=A0 determine the responsible VC backend.

=C2=A0=C2=A0=C2=A0 When REMOVE is non-nil, remove FILE-OR-PATTERN from the=
 list of
=C2=A0=C2=A0=C2=A0 ignored files.

=C2=A0=C2=A0=C2=A0 If AS-IS is nil, FILE-OR-PATTERN is considered a file p=
ath that
=C2=A0=C2=A0=C2=A0 must be escaped and anchored. The directory name of
=C2=A0=C2=A0=C2=A0 FILE-OR-PATTERN expanded against DIRECTORY is used to d=
etermine
=C2=A0=C2=A0=C2=A0 the ignore file.=C2=A0 The effective pattern consists o=
f the file path
=C2=A0=C2=A0=C2=A0 relative to the directory of the ignore file, properly =
escaped
=C2=A0=C2=A0=C2=A0 and anchored by the VC backend.

=C2=A0=C2=A0=C2=A0 If AS-IS is non-nil, FILE-OR-PATTERN is considered a pa=
ttern that
=C2=A0=C2=A0=C2=A0 should not be modified.=C2=A0 DIRECTORY is used to dete=
rmine the
=C2=A0=C2=A0=C2=A0 ignore file."





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 8 Feb 2020 23:59:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 18:59:29 2020
Received: from localhost ([127.0.0.1]:51950 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0a0X-0004Yh-8N
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2020 18:59:29 -0500
Received: from mout.gmx.net ([212.227.15.19]:39529)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0a0V-0004YU-C2
 for 37189 <at> debbugs.gnu.org; Sat, 08 Feb 2020 18:59:28 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581206360;
 bh=Zmf7R4EfgXt6kfBGpSsUuoUsWe/k/SPOFjU/qsu7Vf0=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=lrDeuapDGBcxseZHdrj6UMcYHl7xU2Fx68jHTfsrrlTCMCpJBz7AZImQOx5lhPGZ3
 V6t/B4TcfsfYRYs8XTzfLjH/knvXJeLLF5y0mLM1+GYCkgp5Gn1mhGXZ+XA4H2/sys
 3RBaj0j47lUQWnErjB4PQ/oHOZNQ//uYTe9F0n8M=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7sHo-1ive3O2iEE-00504Y; Sun, 09
 Feb 2020 00:59:20 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id C596B19431CE;
 Sun,  9 Feb 2020 00:59:19 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <e6aa7b6f-407c-87e7-2dff-46527100d785@HIDDEN>
Date: Sun, 9 Feb 2020 00:59:19 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83sgjkdev5.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Content-Language: de-DE
X-Provags-ID: V03:K1:nXqAxCZ8TUmFF+4Lwh9SZ+eTCCc7Ue9VIkIjEwqlwRWbIqUDkv5
 hEjfVeVaOJSPBuiyyGdb35Uhk4MbLtYc9EHo3ULcKASZB12v777iHwKrJGo46JI6Z9Kf8yf
 5lggnsza5D1uSh1nK9ufzYQWhe2KLapg3KZgDDDAiNdIVkoLpgb5NKGKmj/QDZ78dewr6g5
 QJtHJ2HAGSF8MXNjvS/5g==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:tBj/t6xcwQs=:PmmppKaMW8dIZuiITAq0Ra
 QhpyLKAEh4XN7aKSU+rpMVA//lp6f1o9ZUlRR2hdrsVffAD2cEJjZDB1AYc98T/BO92hgY/IX
 DMMlRte4QnMTQemcQUa09nz/5YNukgu3a+atjgBz34GEYM8ueoesuoJCseIv2mlUtAHoJgeh9
 N29f9TIDTO4LPM6UQ/Xp5DSCQPpkvvLbFzi52hgGqMOEmCuouPyjks8L1eT5eO04ooLhd0mhH
 TGT+35aKzLufTBWStZOR44ruG5CRmaH6+VG25uDbqf03qAc17i6CSdLg2XiPv9aEOuAyUicun
 tOE8JfKF0Rg62+uRmPFCEdhPqHlYC/Vv1QBAkhp6JNU9gbNqY6TGkFX/20VfFNKIbX+0qECRI
 NjbFk75z6HDXyQgeihIiKx2sut8cRgitdfL7TV4PBbB2Eso0AiTbyX2KRd5hZEMdvYs46xysl
 lpX6+gntwT6bH6haNgNQmULBnI9cCMkfrHW+v7/vSsVrtBBsuobcePOAVC63swUq2orLQ2kw6
 pp+CkPMCVc3Nwv//b9Ph9C8Y5lqGTkeJDsdBiTdzt+igq6W0ieFfbGAn7HzILH3/EH73iRcCl
 t/uvMlDkdG4ygfe6F9Dl29QHASDe8TmZwXdsMa7GOV4TQuH4CosHVXOJ8XrQSrWBp6p2IZZ4/
 XDXQihBbM4uF64jOD7Hw6nFl9/Vy1PnjAxnMK1gXn3ly1d2S80C+DmDOlhSwDpGseg3jcDQLs
 2CLkOXQXjFXaAkjFC/gp+GhLJ8sdbtSDQu2FU0oDWrwrMaDMrj23Sw4C32R3obkcZ2DJGszGp
 aNzgNjn4yQXtCO0bparUSVj3zHO6ov66vZqAB/oamADSOqrzMZjpw1sgtnHNkcmsuWHuQnv4Q
 5emv8UJSDj2GfgIQcnT18Dpq8EuVT/3aX8KqxbY8SNFuhcc9OrkAFMux/o2QsM922AE+QhUkq
 KaymjGx0FDajxAH0ygkHHWIYXyANOxv46Ei5fAwngmpvUJV9qvyDy8BXkJRWfFzRp2uAxPpA/
 M17da1/9aFCyrVxa+CQLTSMSxzi3MrfINYiT9RsE0in30Pc49BSGKvJ2bbRmF6NtgYA7z5Cz7
 mN61o2KEjRzxAqNnAFfYdlT/Ffx7m0BtFv+VnEdqSTVbpeo7H0178Q91TyPc/pW3EXYn2cb16
 ro0qaYmnGOS8YmjmX+ie++qheKAV7SBY4hRM2RsAtKfl69YsfGUNS7SICPY4RNVDfXnvrwB9f
 9pnGfL4DuykEhugT+
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

TWF5YmUgdGhpcyBoZWxwcy4NCg0KTXkgcGFydGlhbCBjdXJyZW50IHRlc3QgdHJlZSBvZiBtYWlu
bHkgZ2xvYiBhbm9tYWxpZXMgKHRoaXMgaXMgYWxzbyBob3cgSSBkaXNjb3ZlcmVkIEdpdCBidWls
dC1pbiBwYXRoc3BlY3MgIzM5NDUyKToNCg0KwqAgVkMgYmFja2VuZCA6IFNSQw0KwqAgV29ya2lu
ZyBkaXI6IC9zcnYvaW5zdGFsbC9saW51eC9lbWFjcy9jaGVjay1zcmMvDQoNCsKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLi8NCsKgwqDCoMKgwqAg
ZWRpdGVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhDQrCoMKgwqDCoMKgIHVucmVn
aXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViLWZpbGUNCsKgICrCoMKgIHVucmVnaXN0ZXJlZMKg
wqDCoMKgwqDCoMKgwqAgdGVzdC0/Lnh4DQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKg
wqDCoMKgwqAgdGVzdC14Lnh4DQrCoCAqwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKg
IHRlc3QyKi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHRlc3Qy
Lnh4DQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgdGVzdDUueHgNCsKg
wqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCB0ZXN0Ni54eA0KwqDCoMKgwqDC
oCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHRlc3Q5Lnh4DQrCoCAqwqDCoCB1bnJlZ2lz
dGVyZWTCoMKgwqDCoMKgwqDCoMKgIHRlc3Q5XC54eA0KwqAgKsKgwqAgdW5yZWdpc3RlcmVkwqDC
oMKgwqDCoMKgwqDCoCB0ZXN0WzU2XS54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDC
oMKgwqDCoMKgIHdpdGggJHBlfmlhbA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKg
wqDCoMKgIHdpdGggc3BhIGNlcw0KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBzdWIvDQrCoMKgwqDCoMKgIGVkaXRlZMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgc3ViL2RhdGENCsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKg
wqDCoCBzdWIvc3ViLWZpbGUNCsKgICrCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAg
c3ViL3Rlc3QtPy54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1
Yi90ZXN0LXgueHgNCsKgICrCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViL3Rl
c3QyKi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0
Mi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0NS54
eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0Ni54eA0K
wqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0OS54eA0KwqAg
KsKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVzdDlcLnh4DQrCoCAqwqDC
oCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0WzU2XS54eA0KwqDCoMKgwqDC
oCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi93aXRoICRwZX5pYWwNCsKgwqDCoMKg
wqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvd2l0aCBzcGEgY2VzDQoNCldoZW4g
cHJlc3MgIkYiIHdpdGggbXkgbmV3IGltcGxlbWVudGF0aW9uLCB0aGUgbWFya2VkIGZpbGVzIGFy
ZSBpZ25vcmVkLCB0aGUgYHZjLWRpci1tb2RlYCBkaXNwbGF5IHVwZGF0ZXMgaXRzZWxmIGNvcnJl
Y3RseSB0bzoNCg0KwqAgVkMgYmFja2VuZCA6IFNSQw0KwqAgV29ya2luZyBkaXI6IC9zcnYvaW5z
dGFsbC9saW51eC9lbWFjcy9jaGVjay1zcmMvDQoNCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLi8NCsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDC
oMKgwqDCoMKgwqDCoCAuc3JjaWdub3JlDQrCoMKgwqDCoMKgIGVkaXRlZMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgZGF0YQ0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDC
oMKgIHN1Yi1maWxlDQrCoCAqwqDCoCBpZ25vcmVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
dGVzdC0/Lnh4DQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgdGVzdC14
Lnh4DQrCoCAqwqDCoCBpZ25vcmVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGVzdDIqLnh4
DQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgdGVzdDIueHgNCsKgwqDC
oMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCB0ZXN0NS54eA0KwqDCoMKgwqDCoCB1
bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHRlc3Q2Lnh4DQrCoMKgwqDCoMKgIHVucmVnaXN0
ZXJlZMKgwqDCoMKgwqDCoMKgwqAgdGVzdDkueHgNCsKgICrCoMKgIGlnbm9yZWTCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB0ZXN0OVwueHgNCsKgICrCoMKgIGlnbm9yZWTCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCB0ZXN0WzU2XS54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDC
oMKgwqDCoMKgIHdpdGggJHBlfmlhbA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKg
wqDCoMKgIHdpdGggc3BhIGNlcw0KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBzdWIvDQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDC
oMKgwqAgc3ViLy5zcmNpZ25vcmUNCsKgwqDCoMKgwqAgZWRpdGVkwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBzdWIvZGF0YQ0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDC
oMKgIHN1Yi9zdWItZmlsZQ0KwqAgKsKgwqAgaWdub3JlZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHN1Yi90ZXN0LT8ueHgNCsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDC
oCBzdWIvdGVzdC14Lnh4DQrCoCAqwqDCoCBpZ25vcmVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgc3ViL3Rlc3QyKi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKg
IHN1Yi90ZXN0Mi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1
Yi90ZXN0NS54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90
ZXN0Ni54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0
OS54eA0KwqAgKsKgwqAgaWdub3JlZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0
OVwueHgNCsKgICrCoMKgIGlnbm9yZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVz
dFs1Nl0ueHgNCsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvd2l0
aCAkcGV+aWFsDQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViL3dp
dGggc3BhIGNlcw0KDQpUaGUgbmV3IC5zcmNpZ25vcmUgZmlsZXMnIGNvbnRlbnRzIGFyZSAoU1JD
IGhhcyBhIHN0cmFuZ2UgZXNjYXBlIHN5bnRheCwgd2hpY2ggZG9lcyBub3QgZm9sbG93IGdsb2Io
NykpOg0KDQrCoCAuc3JjaWdub3JlOiBlY2hvDQrCoMKgwqAgdGVzdC1bP10ueHgNCsKgwqDCoCB0
ZXN0MlsqXS54eA0KwqDCoMKgIHRlc3Q5XC54eA0KwqDCoMKgIHRlc3RbW101Nl0ueHgNCg0KwqAg
c3ViLy5zcmNpZ25vcmU6IGVjaG8NCsKgwqDCoCB0ZXN0LVs/XS54eA0KwqDCoMKgIHRlc3QyWypd
Lnh4DQrCoMKgwqAgdGVzdDlcLnh4DQrCoMKgwqAgdGVzdFtbXTU2XS54eA0KDQpSZWZyZXNoaW5n
IHRoZSBkaXNwbGF5IGFuZCByZW1vdmluZyB0aGUgaWdub3JlZCBmaWxlcyBzaG93cywgdGhhdCB0
aGUgaWdub3JlIHBhdHRlcm5zIGFyZSBhY3R1YWxseSB3b3JraW5nOg0KDQrCoCBWQyBiYWNrZW5k
IDogU1JDDQrCoCBXb3JraW5nIGRpcjogL3Nydi9pbnN0YWxsL2xpbnV4L2VtYWNzL2NoZWNrLXNy
Yy8NCg0KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCAuLw0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIC5zcmNpZ25vcmUN
CsKgwqDCoMKgwqAgZWRpdGVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhDQrCoMKg
wqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViLWZpbGUNCsKgwqDCoMKgwqAg
dW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCB0ZXN0LXgueHgNCsKgwqDCoMKgwqAgdW5yZWdp
c3RlcmVkwqDCoMKgwqDCoMKgwqDCoCB0ZXN0Mi54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTC
oMKgwqDCoMKgwqDCoMKgIHRlc3Q1Lnh4DQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKg
wqDCoMKgwqAgdGVzdDYueHgNCsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDC
oCB0ZXN0OS54eA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHdpdGgg
JHBlfmlhbA0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHdpdGggc3Bh
IGNlcw0KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCBzdWIvDQrCoMKgwqDCoMKgIHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViLy5zcmNp
Z25vcmUNCsKgwqDCoMKgwqAgZWRpdGVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdWIv
ZGF0YQ0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi9zdWItZmls
ZQ0KwqDCoMKgwqDCoCB1bnJlZ2lzdGVyZWTCoMKgwqDCoMKgwqDCoMKgIHN1Yi90ZXN0LXgueHgN
CsKgwqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVzdDIueHgNCsKg
wqDCoMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVzdDUueHgNCsKgwqDC
oMKgwqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVzdDYueHgNCsKgwqDCoMKg
wqAgdW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvdGVzdDkueHgNCsKgwqDCoMKgwqAg
dW5yZWdpc3RlcmVkwqDCoMKgwqDCoMKgwqDCoCBzdWIvd2l0aCAkcGV+aWFsDQrCoMKgwqDCoMKg
IHVucmVnaXN0ZXJlZMKgwqDCoMKgwqDCoMKgwqAgc3ViL3dpdGggc3BhIGNlcw0KDQo=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 8 Feb 2020 23:12:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 18:12:51 2020
Received: from localhost ([127.0.0.1]:51932 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0ZHO-0003UM-V2
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2020 18:12:51 -0500
Received: from mout.gmx.net ([212.227.17.22]:52785)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0ZHM-0003U6-Ti
 for 37189 <at> debbugs.gnu.org; Sat, 08 Feb 2020 18:12:50 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581203562;
 bh=5DgMhnXDo+L35sCCNeXWaX7OqVuZ0G8Z+RImEeT6IGw=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=KzwhTw2puMgD7dFp1PTcjnAAUtY2R1yVyM3KS72s7svwHGIgtw31mclWqb82JVVJj
 TkIfscGFOWCUDJVj5yHEpyDQ1TouB3/15Rq6V+Acu8swKKYLA+q6+k5E4aRtIrTGM0
 XSBHS8vqFySbFC1c1QqFuYFIoZLbhHJ1qvja3prA=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MgvvJ-1jRxbz1SHN-00hKdu; Sun, 09
 Feb 2020 00:12:42 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 4823C19431CE;
 Sun,  9 Feb 2020 00:12:40 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> <83sgjkdev5.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <3fb73dbc-bf31-233b-4afc-2147c4ffd5b7@HIDDEN>
Date: Sun, 9 Feb 2020 00:12:40 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83sgjkdev5.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:W1BWrKZ8ItPbOEBeMFBpJB8/aX1lDSl0YacWFQse7RWRTamg2a/
 BZ4+xye8H3COIr8hbFM+Slg3ezYIt/MMw4eq20gqbK7qXQgXWFBXcyUemLn9JmopLF9EjGe
 o6Th+SfldaEjClZw464pfcf/BY2nm2rhW1afDlUZxPHBJc5vMwEsL46TBC9fzltYt/doNkx
 T9PeIIbwKJ6YZs7R8a0+g==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:4GycJeuQhJ0=:zFM/Pr90GifIAj1NjJQC6b
 y6M9a/3X/H7DY0bzs7zS5RRotkhaDiwBiWZOIRRZ3eq1s7lgIc+0KWJzxbO7oCGCMJ3agzCpM
 dwjegBW0JpTC4A2H+pYhM783wd4C1CQDvmpv2aafWrcdG7XEAjGsVb9buIdkRWQwToefuQf7M
 5qIVTiLvZtoAsFAMmBkHa2TbdT/lbsdLOt1MU0LTbj7rEXzhvhDbJqZmGbxuN5iViz+d/y0RC
 cCauHq9q6LRtNx2Sk4kBSF4itgy4JgI5wbTLk0AR3xM+maIH6VHBWq56iOJu9FcTl7d9LIYCa
 dWLYFfi0ngeKRMirtZbkTptcHFbIlLNwkNM5d8jYpZJMKMZT1WIQeyoM/Ji4ZJo33zqa6iZUw
 51s0yU6S+fNYVfMN5EeDcfvyRR/4NE22TIL2VdIJ8vQwQZvB9YEobUObi68Otzq+UYVYP5lBk
 lkWdOD8SfvgUF4SfuzyWaKgOuN3O2OMrs3TtmkgR0x9tVu4q4QUCgAwLKnKeaKkT9qxQ4uljB
 V114cun8+464shlWM2v9UaXUsF54xHa9feZ+fB0akzXkYYpM+hQsbOr+xo0Jyahl8jf9kJjJt
 OGGAgs0lzGPq2ylzp9HfqLyiU0u9TFHSxvL74PZxG/yCMogw21PlmHlGSbeN8nrInAAevO70p
 VzRPFLf73FakNpzUm3wts0Dv+zwxlcwjgJCbYEkcQw0hiJM+pctjGu4L+N9wZQpvxUuLA7m+q
 RT5V4PnIaGdJN8MHrWVXZFuw2PqbJm/NJPrXWEF8OTarQ/59KJMHJ725Z2fyqV8yWgW80/1pv
 vOGePOfZpeuvXW2ZP5G1BcSoFPbFKpcv7JkvQhmPu606JDdgSe4BkYZKpHHVJBO59GnFgZps+
 B2TL/aVTFv5Q+wv7PBl2MuWln+qP9mReLkpDpyCLEN8Rs2X7ECykD3Ie5gqKWBaaaHMNfmy1s
 LDSPv4ssVQ0qM0JXvMQRlcdJ87CfHcax5fUesRpaLqcNcMu14W2+SBWQZ+6Ed8wIwWZTVPgRQ
 aGOVchXi1vP+MrCOIpRH33xFvOgC/kz+SO5mxG05Vk6SMKlQSGBrpUbWMW1IA41VTysg+fHeX
 P05HSDCNG3WIHt7DvINkg+LwP/qvW+kHJYRQPXFsmiEbCXM8NZlOk+/vWtL80W6FCRSrZJrGP
 tAkKXYSt5yzWFAg5qAt6H53FHLjeIr7m08tPjdLDHmWTSXqhknVYbH4FqWFsFCcSZGhu4+htl
 NcHBHUC0bI930yrDk
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 08.02.20 um 21:05 schrieb Eli Zaretskii:
>> Cc: 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> 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 o=
r relative filename. This is the use case "file path".
>>
>> 3. Some backends expect a file path, some backends expect a pattern. Th=
is cannot be fixed without adding a parameter to `vc-ignore`, `vc-<backend=
>-ignore`.
>>
>> +-----------------------+-------------+-----------+
>> | function=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | file path=C2=A0=C2=A0 | pattern=C2=A0=C2=A0 |
>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
>> | :func:`vc-ignore`=C2=A0=C2=A0=C2=A0=C2=A0 | strong hint | yes=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-dir-ignore` | mandatory=C2=A0=C2=A0 | no=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-cvs-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | mandatory |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-svn-ignore` | mandatory=C2=A0=C2=A0 | no=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-src-ignore` | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-bzr-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | mandatory |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-git-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | mandatory |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-hg-ignore`=C2=A0 | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | mandatory |
>> +-----------------------+-------------+-----------+
>> | :func:`vc-mtn-ignore` | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>> +-----------------------+-------------+-----------+
> 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?

Well, FILE is used to construct a path, which is then split into file and =
directory parts

=C2=A0 (let* ((path (directory-file-name (expand-file-name file directory)=
))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (directory (file-name-dir=
ectory path))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (file (file-name-nondirec=
tory path))

The "pattern" use case is not the "wildcard" use case. "pattern" is an uns=
pecified string, while "wildcard" is backend specific. For SVN it is a glo=
b(7) expression without subdirectories (otherwise it does not match anythi=
ng).

Besides the point, that it may not serve a true purpose, It is not possibl=
e to add a pattern containing a slash "/" to a SVN directory with `vc-svn-=
ignore`).

While the command:

=C2=A0=C2=A0 >>> svn propset svn:ignore 'not-here/123' '/srv/install/linux=
/emacs/check-svn'=C2=A0

works perfectly well and stores the property as given:

=C2=A0=C2=A0 >>> svn propget svn:ignore '/srv/install/linux/emacs/check-sv=
n'
=C2=A0=C2=A0 not-here/123

The `vc` equivalent fails:

=C2=A0=C2=A0 >>> (vc-svn-ignore 'not-here/123' '/srv/install/linux/emacs/c=
heck-svn/')
=C2=A0=C2=A0 'not-here' is not under version control
=C2=A0=C2=A0 svn: E155010: The node '/srv/install/linux/emacs/check-svn/no=
t-here' was not found.

because the svn command issued was:

=C2=A0=C2=A0 >>> svn propset svn:ignore '123' '/srv/install/linux/emacs/ch=
eck-svn/not-here'

> Now, vc-dir-ignore indeed ignores only one file, but since a file name
> is a special case of a wildcard,

No, it is not, which is the entire point ;-)

Assume you have three files named

=C2=A0 test5.xx
=C2=A0 test6.xx
=C2=A0 test[56].xx

Right now, when I move to the line showing "test[56].xx" and press "G", Th=
e function `vc-svn-ignore` is invoked with the FILE argument "test[56].xx"=
, what do you expect to be ignored?

If you say anything else but "test[56].xx", we have a different opinion ho=
w the dir-mode UI should work.

Currently the result is, that the files "test5.xx" and "test6.xx" are igno=
red and the file "test[56].xx" still appears as "unregistered".

In order to ignore "test[56].xx", the function call:

=C2=A0=C2=A0 >>> (vc-svn-ignore "test\\[56].xx")

must be issued.

Unfortunately, critisizing use cases does not make such problems go away. =
Therefore, the protocol specification should be followed verbatim to imple=
ment the ignore function.

While glob syntax may actually be an esoteric use case, Hg and its regex s=
yntax is not, since the "." is quite common in file names:

=C2=A0 myfile.jpg
=C2=A0 myfile+jpg

Ignoring "myfile.jpg" without proper escaping will also ignore "myfile+jpg=
". While ignoring "myfile+jpg" will not ignore anything.

So strictily speaking, yes, a file name is a special case of a wildcard, b=
ut a file name as a wildcard does not necessarily match itself.

Do you see the problem now?

>  I wonder why you say there's a need
> in an additional argument.  Can you elaborate?

The additional argument AS-IS is used to write the FILE argument unmodifie=
d to the svn:ignore poperty for DIRECTORY, so that a command:

=C2=A0=C2=A0 >>> (vc-svn-ignore 'not-here/123' '/srv/install/linux/emacs/c=
heck-svn/' t) ;; the t is the additional AS-IS argument

would succeed by issuing the appropriate shell command:

=C2=A0=C2=A0 >>> svn propset svn:ignore 'not-here/123' '/srv/install/linux=
/emacs/check-svn'

If you agree, that for the "file path" use case, the file path should be p=
roperly escaped, then the difference would be, e.g:

=C2=A0=C2=A0 >>> (vc-svn-ignore 'good/test[56].xx' '/srv/install/linux/ema=
cs/check-svn/'
=C2=A0=C2=A0 svn propset svn:ignore 'test\[56].xx' '/srv/install/linux/ema=
cs/check-svn/good'

versus:

=C2=A0=C2=A0 >>> (vc-svn-ignore 'good/test[56].xx' '/srv/install/linux/ema=
cs/check-svn/' t) ;; the t is the additional AS-IS argument
=C2=A0=C2=A0 svn propset svn:ignore 'good/test[56].xx' '/srv/install/linux=
/emacs/check-svn/good'

>> I have already implemented the core handler `vc-default-ignore` replaci=
ng the defunct handlers for CVS, Git, Hg, Bzr by parameter sets. The addit=
ional parameter set for SRC is also available. I am planning on implementi=
ng 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 already decided to adapt the algorithm/modularization to allow a simple =
implementation for SVN.
>> 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.
The title suggests that this is about Hg, while the problem affects the en=
tire subsystem.

But I'm fine either way.

>
> Thanks.
Thank you




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 8 Feb 2020 20:05:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 15:05:46 2020
Received: from localhost ([127.0.0.1]:51864 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0WML-0005ef-Lj
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2020 15:05:45 -0500
Received: from eggs.gnu.org ([209.51.188.92]:42934)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j0WMK-0005eS-0g
 for 37189 <at> debbugs.gnu.org; Sat, 08 Feb 2020 15:05:44 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:49109)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j0WME-0004tD-Ce; Sat, 08 Feb 2020 15:05:38 -0500
Received: from [176.228.60.248] (port=2173 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j0WMD-0002ZJ-8P; Sat, 08 Feb 2020 15:05:38 -0500
Date: Sat, 08 Feb 2020 22:05:18 +0200
Message-Id: <83sgjkdev5.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN> (message from
 Wolfgang Scherer on Sat, 8 Feb 2020 20:45:34 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
 <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> 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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 8 Feb 2020 19:45:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 14:45:45 2020
Received: from localhost ([127.0.0.1]:51850 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0W2z-0005Bm-5B
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2020 14:45:45 -0500
Received: from mout.gmx.net ([212.227.17.21]:44293)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1j0W2w-0005BY-HO
 for 37189 <at> debbugs.gnu.org; Sat, 08 Feb 2020 14:45:43 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1581191135;
 bh=gT+hQ+M8xZ8MGNwGu/dcoXaxpKd7r8pX6JBumLdWKXI=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=M86LtXIQCgUDoaUnEUNBMssCaNHrKmu5qrqik/fVNBotLg13r0d5RCJJKNh2EAN3e
 0A+kOBLYQ1U2SSEbCmfWtoZ6u7xfBwC7y9vj4T4dzHf94e/a6lQmv1Gj2u1HTr1s1S
 BHiHS1VeYasMhzV2e8kMglTj69/tY5EIzZC7SYZA=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N8XU1-1je5uQ37Wj-014XTC; Sat, 08
 Feb 2020 20:45:35 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id AC11C19431CE;
 Sat,  8 Feb 2020 20:45:34 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
 <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <2354821b-5c1e-f9e3-3a64-4ff978ded33b@HIDDEN>
Date: Sat, 8 Feb 2020 20:45:34 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:HfzAjLOPquheubxgRc2ME4nHh3IH6kdsqg2jkZWBLkGfgaA0dEG
 m5u8gjTanm4EEdIjqrowpwV56anrVB3bSX5qpo6jZ8x9IGKWgfK1fLY52Cp2gbT/RuJ+Ywt
 G3Pl6O2gtKHUejLWEDVcE7nwmklxCt8lE3WZD2k184QJJ/8z7TFfubROsTAKPy2fIYUQzUS
 DuC9BzDbdXVyYTeJoyJzg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:4X0QB/hIPEY=:HB5LhAnreF8FwNi7wQ7Aga
 W4JYK3xyzv3sZu4yFdlQZrx8vmGeYNp5Z7Yy56bQWFQqSXlMjYa7AuIXnewFLxpt3pMxXuYqT
 0PUUfPYOJURlKBp9A7qJhtuHMWaWq6aBGwMRH8n6VKApxeHCWOxDX9S6TmBXb3EQJQFcMbGO7
 lP4MYVy0EOTfgMoQHbQ8grLKFCihLQeooqwli0Bz/ILbQw1Nv9sU2Mx7vxbjg/LMIxFg+lvmO
 Wi96JILzpRM96W3q6FnD16SO9EZAi6qnjjbBvl+6JISlcYN3EL/UMjjSauF9g+PG7woTco/d8
 Zw4WCX3x1maGCMS/DPC6TcyLU8QkMDJ8Vq47rmeFpWr0dFvlF6he8q3Ob1JP33mgZ3N5L46df
 a9vvdYkSTv51lClEyAPcGYPdI8xknIkupAB2Ncc61BRtbUIB/txrt7A24O7jT6AiJFhS7gvmi
 IapwIoE6Qt29212KHbA2w9gXaQ23ddHfqPCPHe1mJIKoit6L3p7DEOR9OjS14oPoKzsA+mH4V
 n9k1BUFaN+tLFVY6N7dlSLSyYg+WiKbWYA9/0M49d3a3QZdS02PLGuBe9RKCt95lgV4iPzT3G
 pZfRg3c+Qv3nFIQhjw6x8VzBu4gaFESm7saeyqW3IDJnmc2zRY/h0DanrLK9ygynsrx8MyWGD
 IcL1SAcJc6xl8xOl/8uX0hAxZn3Rk2z9yPlBh/O61lutxj6HByiicN/pniSme4DYNH9ABXKWC
 YTONVwGoYK2NQhmyfqrBGMN4K5yGmh9fz9qC4FpFhKy3GjCoYXG9XLq8T/6pl/i8BIDqk5tBF
 vdmL3z4KXso9KtemXs88t8fPUiYF9WciFWS66piMCiVWQ/QCsuie03jIf2nIDIIpCJQE9YcgR
 f8EwPvObV8pXFyKh/kOiAwNDsXRVrmbTa3wMTKIVegkYSUXIBOom8ByQVGXNKnKx5RLJ6+xWb
 JWwKWI2GU6bs/g5WsveLxDoxL0QuEqRnE/pIEGT2fDri8gbxyHAnGl8krTpG4PzbL/y1pg3UF
 pPM6z4RAbSnkhCRdMz8EquGUSe91EAUziopWApatpsRSY142ul9Rk2BbhhAAzAt7OsN4YtaZB
 XqFH5Xf7bb6F4h0m2g+RPMP5cxuOr1yh58HXL+SL/IdZK4CNXqXG0y7zKWoVhkSuAc0l+1tT2
 vb6pQdNG9JvGWuQJGhJPE/F2OMRIBJk5BtQxezhvvSb64vZUtlMpeG/4BrrUxH0S9eXtiR0mN
 nJMJh8BYlEmS535Lf
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 08.02.20 um 10:57 schrieb Dmitry Gutov:
> On 07.02.2020 12:57, Eli Zaretskii wrote:
>> AFAIU, Dmitry oversees the VC development and maintenance.=C2=A0 That
>> includes the issues you raised here.
>
> That's right. And I asked some questions before in this report and didn'=
t get direct answers.

I answered as best as I could up to the point, where it became clear to me=
 that the entire ignore feature has fatal design flaws which need to be ad=
dressed, if silly hacks (like this one) are to be avoided.

The status quo before Emacs 27 is:

1. The argument FILE of `vc-ignore` is documented to accept a wildcard spe=
cification. This is the use case "pattern".

2. `vc-ignore` is called from `vc-dir-ignore` with either an absolute or r=
elative 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>-i=
gnore`.

+-----------------------+-------------+-----------+
| function=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 | file path=C2=A0=C2=A0 | pattern=C2=A0=C2=A0 |
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
| :func:`vc-ignore`=C2=A0=C2=A0=C2=A0=C2=A0 | strong hint | yes=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
+-----------------------+-------------+-----------+
| :func:`vc-dir-ignore` | mandatory=C2=A0=C2=A0 | no=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |
+-----------------------+-------------+-----------+
| :func:`vc-cvs-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | mandatory |
+-----------------------+-------------+-----------+
| :func:`vc-svn-ignore` | mandatory=C2=A0=C2=A0 | no=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |
+-----------------------+-------------+-----------+
| :func:`vc-src-ignore` | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
+-----------------------+-------------+-----------+
| :func:`vc-bzr-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | mandatory |
+-----------------------+-------------+-----------+
| :func:`vc-git-ignore` | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | mandatory |
+-----------------------+-------------+-----------+
| :func:`vc-hg-ignore`=C2=A0 | no=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 | mandatory |
+-----------------------+-------------+-----------+
| :func:`vc-mtn-ignore` | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | --=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
+-----------------------+-------------+-----------+

>
> To be clear, I'm quite happy with the meat of the patch presented here,
I am not. The attempt to support a dual API with file/pattern pseudo-detec=
tion is just shameful.
> just suspicious of the not well-enough documented change in vc-ignore's =
semantics. So yeah, we need a better understanding of the problem and mayb=
e a better design.

I have documented the environment, the rationale and the ongoing implement=
ation extensively at http://sw-amt.ws/emacs/doc/_build/html/emacs-vc-ignor=
e-feature.html. The core topic is "File pathes are NOT patterns", so they =
must be separated in the API.

> Hopefully one that's not too different from the current one.

The current one is completely broken but the necessary changes are only fe=
w. Since it hasn't worked to begin with, there is really nothing to preser=
ve.

I have already implemented the core handler `vc-default-ignore` replacing =
the defunct handlers for CVS, Git, Hg, Bzr by parameter sets. The addition=
al 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).

Search on page http://sw-amt.ws/emacs/doc/_build/html/emacs-vc-ignore-feat=
ure.html for x-vc-repair.el,which is a link to the ongoing implementation.=
 With `eval-buffer` under Emacs 24 - 26, the feature is activated.

The user interface for ignoring files is`C-x v F` or `F` in `vc-dir-mode`.=
 It behaves like other functions, e.g. `C-x v i`, `C-x v u`, `C-x v =3D`. =
I.e., it is possible to select multiple files to ignore in `vc-dir-mode` a=
nd `dired-mode`.

>
> I'll read the whole of the discussion as soon as I can, but it's going t=
o take some time to digest, sorry.
Please, do not read this discussion, as it has became chaotic before I rea=
lized what is required to understand the problem.
>
>> It's up to Dmitry, really.=C2=A0 If he feels my attempt to understand t=
he
>> design critique you present is not helping, then I'll gladly leave it
>> to him to continue with this report.
>
> Quite the opposite. If you reach some mutual understanding, it will sure=
ly help me when reading this thread a bit later.

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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 8 Feb 2020 09:57:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 04:57:13 2020
Received: from localhost ([127.0.0.1]:50639 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j0MrR-0003zk-EY
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2020 04:57:13 -0500
Received: from mail-lj1-f182.google.com ([209.85.208.182]:37114)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1j0MrQ-0003zX-82
 for 37189 <at> debbugs.gnu.org; Sat, 08 Feb 2020 04:57:12 -0500
Received: by mail-lj1-f182.google.com with SMTP id v17so1912078ljg.4
 for <37189 <at> debbugs.gnu.org>; Sat, 08 Feb 2020 01:57:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=bBrYgJwdpv6Gw9+Jsi8QsP04VMHCNRTObclTeAOL6yo=;
 b=AN7woO+a3nLTDZb+/LJxDaT3H5RTMUzhJoQsPIn4E7C5UYddX3ZOsAisyAB+zdxxYB
 6OEAyNDQQFfpI+4jg8bBDhbOAYOM1BlMNjKzLSpbT2tE3vzMIpPFu3ZTCOBzH7hY15g2
 PYJsuRgEmPf4wjLLzfSoapHsCWXceg+PZfqIyC6gN2qPsloVtUKEInqBU/0AsYZHXGjh
 apeHyGHFYZ1LitdQ4t4eCvBOZVmYy2+Sa9jE9Nxufkt124xRPc02yCuHBbhJ5+xwmM3D
 WZPdAoabWKXNAonUM4I5yegiS/cX58CQAVxKogD0PET7dAXDJyDLWVWyRqyXJ5uTNnXN
 PqjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:cc:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=bBrYgJwdpv6Gw9+Jsi8QsP04VMHCNRTObclTeAOL6yo=;
 b=DU/CjhZiNjGr+jowtNXM1O4XXUwvgs/JD0JWiqj98Mnc5l3MDIbD+9sXIDDtOc5v6R
 lMqPv0/4ug8/d0HINPK/IKDGPD2m6bBeLyfNCA2qPICHkaP4ZMKfj/Dl9pOc0OGUjfJ4
 VGX+0J19DOu78lUf2/i7o7cyceTvHV30oR2fblotwDa2P/36P6N9NDgk3J1G/JMf53lA
 r+VEsr6MqjC5ZkNlkkngwyabkmqjzQ3Gtl6Td5Ml0pca790UrON/WBxgomLC8giGOGnz
 03PiR8jjeK/5t/zcrDtBpTMRM0bdbExPIjolJtIJKUa0uY+OOL0nZ/IMPJDPQUAyiaoI
 ZV/w==
X-Gm-Message-State: APjAAAW3n3LbRtuEPGSR/Loxyk7uZL6PjZvoOoNi66mf2qhvPI0wmyYe
 qkUhLN6nesPHTvwpYOSuY0NUZMtkIjs=
X-Google-Smtp-Source: APXvYqziCUfdJX6kC5Mj/D5QeULNAvHZ0eR8hYdvnjpYynRX8l6paCyBbwgEpkYNm9sUaDQmrWhsHw==
X-Received: by 2002:a05:651c:111a:: with SMTP id
 d26mr2266170ljo.153.1581155825884; 
 Sat, 08 Feb 2020 01:57:05 -0800 (PST)
Received: from [192.168.1.142] ([178.252.127.239])
 by smtp.googlemail.com with ESMTPSA id 144sm2376565lfi.67.2020.02.08.01.57.04
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 08 Feb 2020 01:57:05 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>, Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> <8336bmg1o9.fsf@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <ebbbd448-6523-7663-72f1-86040695005a@HIDDEN>
Date: Sat, 8 Feb 2020 12:57:04 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <8336bmg1o9.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  On 07.02.2020 12:57, Eli Zaretskii wrote: > AFAIU, Dmitry
 oversees the VC development and maintenance. That > includes the issues you
 raised here. That's right. And I asked some questions before in this report
 and didn't get direct answers. 
 Content analysis details:   (2.0 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 1.5 RCVD_IN_SORBS_WEB      RBL: SORBS: sender is an abusable web server
 [178.252.127.239 listed in dnsbl.sorbs.net]
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (raaahh[at]gmail.com)
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
 mail domains are different
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
 no trust [209.85.208.182 listed in list.dnswl.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [209.85.208.182 listed in wl.mailspike.net]
 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and
 EnvelopeFrom freemail headers are different
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.0 (+)

On 07.02.2020 12:57, Eli Zaretskii wrote:
> AFAIU, Dmitry oversees the VC development and maintenance.  That
> includes the issues you raised here.

That's right. And I asked some questions before in this report and 
didn't get direct answers.

To be clear, I'm quite happy with the meat of the patch presented here, 
just suspicious of the not well-enough documented change in vc-ignore's 
semantics. So yeah, we need a better understanding of the problem and 
maybe a better design. Hopefully one that's not too different from the 
current one.

I'll read the whole of the discussion as soon as I can, but it's going 
to take some time to digest, sorry.

> It's up to Dmitry, really.  If he feels my attempt to understand the
> design critique you present is not helping, then I'll gladly leave it
> to him to continue with this report.

Quite the opposite. If you reach some mutual understanding, it will 
surely help me when reading this thread a bit later.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 7 Feb 2020 09:57:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 07 04:57:56 2020
Received: from localhost ([127.0.0.1]:48911 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j00Oa-00028o-2A
	for submit <at> debbugs.gnu.org; Fri, 07 Feb 2020 04:57:56 -0500
Received: from eggs.gnu.org ([209.51.188.92]:53927)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1j00OY-00028V-04
 for 37189 <at> debbugs.gnu.org; Fri, 07 Feb 2020 04:57:54 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:37132)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1j00OS-00021w-QW; Fri, 07 Feb 2020 04:57:48 -0500
Received: from [176.228.60.248] (port=4145 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1j00OS-0001e2-3F; Fri, 07 Feb 2020 04:57:48 -0500
Date: Fri, 07 Feb 2020 11:57:26 +0200
Message-Id: <8336bmg1o9.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN> (message from
 Wolfgang Scherer on Wed, 5 Feb 2020 20:06:15 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
 <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Wed, 5 Feb 2020 20:06:15 +0100
> 
> coming to think of it, I realized that there probably is no maintainer for the vc ignore feature. I.e., there is no use in explaining the design with many words, since it will not be implemented anyway.

AFAIU, Dmitry oversees the VC development and maintenance.  That
includes the issues you raised here.

> So I went ahead and implemented it myself. The CVS, GIt and Hg subsystems are tested and work as expected. The code and a short description is available for review at http://sw-amt.ws/README-emacs-vc-ignore-feature.html#vc-ignore-parameter-extension
> 
> If you agree that this is a good way to proceed, I will integrate it.

It's up to Dmitry, really.  If he feels my attempt to understand the
design critique you present is not helping, then I'll gladly leave it
to him to continue with this report.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 5 Feb 2020 19:06:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 05 14:06:28 2020
Received: from localhost ([127.0.0.1]:46726 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1izQ0K-0003Rn-CE
	for submit <at> debbugs.gnu.org; Wed, 05 Feb 2020 14:06:28 -0500
Received: from mout.gmx.net ([212.227.17.20]:56467)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1izQ0G-0003RV-3Y
 for 37189 <at> debbugs.gnu.org; Wed, 05 Feb 2020 14:06:27 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1580929577;
 bh=hsdZc+U4fstuaJg37eXNoKU0OIliV7ziIfmHJuVXD8c=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=Wzs35X/7E4onDo+LzP4t+ZeyA+z11LeP7ChUVLSSue86LqXg79wq6XGulO4PfSzOC
 3eAB6x4wd8kKrN/eo0Q8YLJfrmW6iqMKXiV8NVYIqkic6PAa3nwISecVzgs36t4B6c
 ZBPn3NUvMHv/JDGPTK0jZhf13FsDrhjvyXkorgIQ=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M6lpG-1itMWt3F42-008Gx1; Wed, 05
 Feb 2020 20:06:17 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 125CD19431C8;
 Wed,  5 Feb 2020 20:06:15 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <e5bce4e6-2856-c8c8-f300-06dd41fa799e@HIDDEN>
Date: Wed, 5 Feb 2020 20:06:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83h806gp2w.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:vXXBT+ynk3PjkmoL8s1jTlO3eTPwxQzT3yTEJ5+YCaWzykpzGmv
 fUMG5WILG/6zcpUw8xUCbppzsPU2j18sj0rWVePE0WqD+UQH2TZ2/CXHqV3rMCxPIwFrphz
 0a7VAAKvtlrsCrpD8MSiEbw5zc8a07GWldLotnEFLTeKYzfSrNhvSgIPJrq+MBw8fjFqRcf
 k8zyISVzeuUHxI7R62/KQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:Xqy+mVpnrew=:7pwdqY/VSMrajXwfcYqtoa
 7+eAa6MCccRwiXuIoB1rFsUNKwkm/lPquYdVuYTVlzoFp459w/klPPyUg78+wTHjbNm3+hf3k
 zy5Y+3h6kxJe9HXAVHYG1l/9GnUleIMbMxq2wsWXj3bkhlhhA1XrJEVWiC6PRmP+on1W5QUL5
 4GYdmQKUlccZkBKjaV7uP5Iac619zBa4h/olSfmuVtSV0xTdUGPIA0rPZUw3BKJ7u7eJDBf71
 2AnijQe6YItnYWBPCA3QGWAAutDiT6nQAJ3UZyeUmruKCY99QGIwAUSL89tRbTqFggmRM4OpZ
 HRMm4P6jXmLthTiObKrUqFwfuQS4wGcKvFYKQdA2kNuAB7Kf0Oa1oo58SksSy2V6U2eGBKh8q
 r/OJS89DDm90wGc5wPpztsKWLEUH9fOCbGd8zp3QM14+Isnkh5Pg2aNZCpXaBqMr8s3K/G/wk
 C2KGyKjGgz8iHkZDhWC0YvPzUMEDiWI0CqCyqKiujM48ND09FMsZNZrrU2t6eo+eHLdKchUls
 fy/2PJbgW2LpFzals3zWdl2fHcpQ97evx/hY45NdGhPuR3WCuvYxgl8QY5MFB9AbV9/XVKvTT
 Ct6NqyDTTdBg9TYYbMPF/dAMAzD33hvA7WyRB0w3spVUQBnpPHX4IOsGo8qIJIovWlgQxybBA
 tzTlBi2BsT5Pol+0QGSP+3U8Q/YnqWqF5NwIUeDERT11+Md8Lbw2EbFDh6qOtgMJEYuYaa7uQ
 jfn4j4u/e8D3tlnNb3RnSNt50d4UEdf9L8bbd7jA5G4NUfSS2DYll7D4FfNQZRk9I1HLTu5kj
 HwI43W+0BIVB9yPDwgBiRHiFeumqxC/QZzV9xn0dtBPES6Szs3rDocUc/4uRqou9Mhp4PAN8a
 0KWC9g0pY2p/udl7zM3PPdImC+lRH/PVPhI7HIGxhmynphW+PhWM8STmybVhMeEACI9ygRiu9
 MiPTUOeD6Wfc05PiaM+1cnMSFa39Jp3ofJb1Rpa8h2bfdzVy98pPcbqRycNvyiH8SAsT3nxKg
 3M9HwSOtrEEGX09ZPMVIzEJtc7CbsgujRwr3HyBkQPWabyNdNpcMKIdMcLEeO5uNmKyoxgVaI
 g8SPv2CE9zSmBIuXFyNFji54EfwOTQt+VdO1E1dAprq2TDyxsS1AZ+dhY32sZ2Df1h+iPBLKm
 WyITdCdRex5AukFglk2cGMbHikYD1Yljz+YRyC1A9IsuTj1i1m827ksKPhhTm9WrGMz4XcfrL
 fIiryrTaWMtolWeAA
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Eli,

coming to think of it, I realized that there probably is no maintainer for the vc ignore feature. I.e., there is no use in explaining the design with many words, since it will not be implemented anyway.

So I went ahead and implemented it myself. The CVS, GIt and Hg subsystems are tested and work as expected. The code and a short description is available for review at http://sw-amt.ws/README-emacs-vc-ignore-feature.html#vc-ignore-parameter-extension

If you agree that this is a good way to proceed, I will integrate it.

Wolfgang





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 5 Feb 2020 05:18:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 05 00:18:18 2020
Received: from localhost ([127.0.0.1]:45040 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1izD4s-0007JI-50
	for submit <at> debbugs.gnu.org; Wed, 05 Feb 2020 00:18:18 -0500
Received: from mout.gmx.net ([212.227.17.20]:42357)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1izD4q-0007J5-0i
 for 37189 <at> debbugs.gnu.org; Wed, 05 Feb 2020 00:18:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1580879889;
 bh=kIA8v8tqndzMunL7vnc9y/RoCSIMBdLGCWkU0bC5ZHE=;
 h=X-UI-Sender-Class:From:Subject:To:Cc:References:Date:In-Reply-To;
 b=SD7BtT5X6RRQ+14fCDQFzu+Ka20FEGz3+zbLtlsgVv9XerniBcnghl6c1bInuK2Za
 OTj9Rchp6DscKXB/p8vvP/+uW3Hj2vD3tGSiHVMGgy+nh4u0uMn2hXdG0tc4yvoK2j
 sRlZioRy5+HIJoyysId/7Jy7Kgt6dSla9kFUcI3c=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mqs0X-1jLdjM1pzd-00mtcK; Wed, 05
 Feb 2020 06:18:09 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 6344F19431C5;
 Wed,  5 Feb 2020 06:18:08 +0100 (CET)
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Subject: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> <83h806gp2w.fsf@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <feddd0f4-d8c4-2b79-30e7-61ce3925bb41@HIDDEN>
Date: Wed, 5 Feb 2020 06:18:08 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <83h806gp2w.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Content-Language: de-DE
X-Provags-ID: V03:K1:KB0kaDQeV06PU4S1YOvumDI6LvyOacBF02husDOK4ifDeHQIH4V
 qlG+bafeL8z1/Uukn+ymYQko/FL9f3L61r/z5Jo+V/yqXnjWFqlRWo/outTdUJuBwE4zAo4
 U+cQnPtwlXKiOleudqub4M4JBnXjgDA1hnzU3kIUGrPkpwW5ppV1m0ugD1/1TQIbahSgThM
 KyDZP0F2H7ja3aMsU+5/w==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:VF6vXDTc+00=:3+aZK1e97pafjOgGl0pHhf
 bRNceWLXBcDOMjI+vPJvBZh4pXdnRS/20OoCKMK6br7QMWZYz9aRCPw/5g5KNQ9o8rtBkLb1O
 kozhbQMvwrE2xOwUXcBkYax88TMAOmzjeNLqfQXzrguE/vt5HrtnWi8v6KM1Rit6nO4n/r5wh
 QU+sv/LMDN4Z1SsToMJ1NWaDFDPkZrwRGYj1Felg3UElAeBZSLO0u/6Doq81Y4Noh7SwcWZjE
 Dbgq0YRtetBo7FuZpXrvvW5BA+Ym+TWeSw1U7VSmFkmpd/0sLHpy5Jte1wdgGt/Q4BotpMw8S
 0yuIKFAK967jL8OW6pZ9hv6P7e1+eQSlOnC75N49R8K3kssy8BFWBzkb89Qkf2S83t+wdDj50
 5wyVI0BOuuGcWIgut/3jD7GSoxaWPQUSy7xsJ84ExMBsl30Phl5xdk9OBjR5XYB/Z13OC/oqg
 DubRBYdVdfsz2PgUE4IeTGArla3dumV5uZ9ZB1U9EA98mC7zHLLki7yQgCcADkvlSbC+0qtmd
 p8qKdF+nByL73MqPPBO7cRXebtOQXiUcNb7HZnIFcetBJHdzOefZg2UcpBo80nlX3ctzHWM4n
 6pMnuvEfDmtWjp7Chj4utB0rfsOGp3QxWUUafImaQLeh8P65XWIJbaoExfa62BaML8IHs/vnO
 ch0jrZDAyWd6nTDBHHwT/wj0bTOCAqTU5au7sjtWg6kKjmvQlKcM07Bpaz/Fd6bxe+0Vinpcj
 BdbOH+Ds8jzWiO9btDSIBe9914Ai4rGFFT8CiM7lCBpkisIYUNgiSuikNeS7ght7KMOSm+oJt
 8BwK+tX8aRWSH/cpLtWH0WZOZkwhJGKHhUSRlI8G0tCN4v3yIIpwzNt7w9Xt0Aq8TURGm5UHh
 gClCZUPeZkh2AuSXx9Wotytk5eHomCr9c8mH2OHflKE/n8jfoiIUWs56tmiENt65nkySQ1S67
 MnNaFUzz2ERXFsN8b5oA8PMCF/O0HNFGjSBhu/Sizy5Bm5P3ppW6VqnK7nZtUBz289PhlXIFZ
 T3TX5E0OMIq47O5SFfuaVEWFXeS7+oxd/n+Zd3fZvsHlZB0Rk0gHCDf386/Mga68weNieQY2V
 RnW+/RqOIP1Ip3b/kujkBJ4gkZBbpBWrUIToBk07v8EL7/bsJnimZM4/I9Tfn0HxDd2Irwahd
 LFCsS6z1CDFbrXAijH47yOxDfU1G7LVw7ywVrq/yD+VZL+3gWcs3/zzxqixQYrqVGjMKdJres
 ClXclwYNHo9a07pQ0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

>> 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.

Usually a design does not explain why things should be the way they are specified. Also, having extracted the initial code for `vc` ignore files in the previous post, I did not think it was necessary to do it again. I also assume familiarity with the code in question and the mechanisms of ignore files for at least CVS, Git and Hg.

I think I have sufficiently shown that the original implemention of the ignore feature did not work correctly in a single case. If you disagree, just use emacs 26.3 and try to ignore files in `vc-dir-mode` or by calling `vc-ignore` interactively in some CVS, Git or Hg repositories. CVS will not work at all. As for Git, Hg, if you ignore anything below the root directory it will not work correctly. Even the entries on the root level are not properly anchored and/or escaped. I am just making this argument to show that an API change does not break anything, since it did not work to begin with.

I have further tried to fix the problem with the minimum amount of effort, which worked for some of the accepted corrections, but it did not work for `vc-hg-ignore`, which is unfortunately my main use case. However, in order to fix `vc-hg-ignore` without a hack (recognition of regular expressions as implemented in the patch of this bug report), it is necessary to expand the API of `vc-ignore` and the corresponding backend functions by at least adding a flag that indicates, whether the file parameter should be treated as a filepath or a pattern.

Other topics like per-subtree ignore files have not even been mentioned yet. But they do not need API changes and can therefore be implemented later as a change request for `vc-find-ignore-file`. Hint: the assumption that .gitignore or .hgignore are always relative to `vc-root-dir` is simply false.

Since I cannot comfortably explain the matters in the Email text format, I have prepared a HTML version at http://sw-amt.ws/README-emacs-vc-ignore-feature.html#vc-ignore-api-change-request. The description contains a discussion of wildcard pattern escaping/anchoring and two detailed (non-exhaustive) tables with use cases showing the implementation to be incorrect (even with the latest changes). The tables show, that the function `vc-ignore` should be able to produce different output for the same FILE / DIRECTORY input (e.g. "fil?.ext" nil), when

- submitted as filepath by `vc-dir-ignore`
- submitted as a wildcard specification by an interactive invocation of `vc-ignore`.

However, producing different output for the same input is inherently impossible for fully deterministic functions. Once that is understood, it becomes obvious, that the correct results can only be achieved, when the backend functions are supplied with additional information to determine whether a single file should be ignored (escaping the filepath properly) or whether a pattern should be added verbatim without escaping anything.

Since the ignore file sub-system did not even work at all before the last series of changes and the current request for `vc-hg-ignore` cannot be fixed cleanly without API changes and also because the ignore sub-system would still be broken, my proposition is to fix the design. Hence the draft design with some identified use cases for your convenience. Feel free to ignore it and try to fix the problem another way.

This is really all that is necessary to understand the problem. I have answered some further arguments, but they are really just repetitions.
>   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.

I am not sure, why such a description is needed. Although per-directory ignore files are simply a maximally reduced special case of per-tree ignore files, where all relative filepathes are identical to basenames, it is still not sufficient to implement only per-directory ignore files, since per-tree ignore files have additional requirements that are completely uncovered by the per-directory semantics of the original implementation. That is the same type of difference as for real numbers and complex numbers. Whether you want to call it "fundamental" or not, does not invalidate it. Real numbers are a limited subset of complex numbers and not the other way around.

The full specification how per-directory and per-tree ignore files work can be found in the man pages. If necessary, I can summarize those, but I would rather not.

Here is one fundamental difference between per-directory and per-tree ignore specs, which also shows that due to the conceptual lack of anchoring, per-directory algorithms cannot emulate per-tree algorithms. However, a per-tree algorithm with null anchors can perfectly well emulate per-directory algorithms.

- Per-directory ignore specifications do not need to be anchored.
- Per-tree ignore specifications must be properly anchored.

>> 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.

Assuming familiarity with the code, it should be clear that `vc-dir-ignore` calls `vc-ignore` with the result from (vc-dir-current-file). In this case FILE is an absolute filepath.

For a set of marked files `vc-dir-ignore` calls `vc-ignore` repeatedly with the result from (vc-dir-fileinfo->name filearg). In this case FILE is a filepath relative to default-directory.

When calling `vc-ignore` interactively, the current directory is inserted at the prompt. In this case the FILE parameter is an absolute path unless the default directory is deleted first, then it becomes an undefined pattern.

When calling `vc-ignore` from lisp code any combination of FILE/DIRECTORY can be specified and should be processed sensibly.

>> 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.

The **description** of `vc-ignore` is per-directory, while the **description** of `vc-default-ignore` is per-tree. That is obvious if you read both descriptions and do not confuse description and implementation.

The **implementation** of `vc-ignore` is inherently neither per-directory nor per-tree, because it only calls the appropriate backend function.

The original implementation of `vc-default-ignore` is per-directory only and therefore contradicts its description. The incorrect behavior is explained in bug #37217. While I partially corrected the implementation of `vc-default-ignore`, it is unsatisfactory in regard to a good abstraction of escaping and anchoring (incl. syntax detection), which would eliminate the need for specialized backend functions `vc-hg-ignore` and `vc-git-ignore`.

> 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.

The difference betwen per-directory and per-tree has nothing to do with a DIRECTORY parameter or recursion.
Per-tree is not a recursive per-directory algorithm and cannot be implemented as such.
However, per-directory is an automatic by-product of a per-tree algorithm (e.g. ignoring some file in the root directory).

A search of the `vc` source files for `per-\(dir\|tree\)` gives a hint that the concept of per-directory and per-tree is VCS specific:

vc-hooks.el\0110-(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn)
vc-hooks.el\0111: ;; RCS, CVS, SVN, SCCS, and SRC come first because they are per-dir
vc-hooks.el\0112: ;; rather than per-tree. RCS comes first because of the multibackend

In regard to ignore file specifications, per-directory means that the file specification is a plain basename without directory parts, the scope of the specification is only the corresponding directory, no anchoring is necessary.
Per-tree means that the file specification may include directory pathes and unanchored file specifications are applied in all sub-directories, while anchored specs are only applied at the specified level.

Again, this is much better described in the respective man pages.

>   I'm probably missing something, but what?

The FILE parameter of `vc-ignore` is considered equivalent to a wildcard. This equivalence is false.

The design change is an additional parameter to `vc-ignore` and optionally new functions `vc-ignore-file`, `vc-ignore-pattern` to clarify the intended use.

Proposed shortcuts are:

`C-x v F` => `vc-ignore-file`
`C-x v G` => `vc-ignore-pattern`

in `vc-dir-mode`:

`F` => `vc-dir-ignore` => `vc-ignore-file`
`G` => `vc-ignore-pattern`.

> Once again, feel free to tell the discussion about the design is not
> useful and should be abandoned.

Are you saying that it is not useful to finally have a working ignore feature after more than 20 years?

The `vc` ignore feature implementation has not worked and still does not work correctly. But before adding some more adhoc patches without a final resolution, it is usually better to consider all problems and specify a working design.

Anyway, my contribution was not intended to be a final design but rather an incomplete collection of design criteria for the responsible maintainer. I also assumed, that the responsible maintainer has a general knowledge of the concepts for ignore files and specific knowledge of the `vc` ignore feature code.

>   I'm okay with discussing just the
> specific bug you have.

Unfortunately, the specific bug I encounter with `vc-hg-ignore` cannot be fixed without the API change.

>   But if we are to continue talking about design
> aspects, may I suggest that you explain your opinions more than you
> did until now?

The rationale for the design changes can be found in previous posts and other bug reports, where the problems with the implementation of `vc-hg-ignore` become apparent.

Among the differences between per-tree and per-directory semantics is the anchoring mechanism which is needed for per-tree and is unnecessary for per-directory ignore specifications.

Try to understand that although ignore specifications are always wildcard specifications, a generic frontend function like `vc-ignore` cannot ask other generic functions like `vc-dir-ignore` for properly escaped wildcard specifications, since the correct escape and anchoring mechanisms are unknown to frontend functions. Asking interactively for a raw pattern is feasible, since a user probably knows the appropriate syntax.

A frontend function should not be burdened with actually normalizing, escaping and anchoring filepath specifications. The high-level flag signaling either raw input or unescaped and unanchored filepath is sufficient and more readable.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 4 Feb 2020 18:55:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 04 13:55:20 2020
Received: from localhost ([127.0.0.1]:44766 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1iz3Lz-0007Ms-Qh
	for submit <at> debbugs.gnu.org; Tue, 04 Feb 2020 13:55:20 -0500
Received: from eggs.gnu.org ([209.51.188.92]:43886)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1iz3Ly-0007Mf-3R
 for 37189 <at> debbugs.gnu.org; Tue, 04 Feb 2020 13:55:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:35742)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1iz3Ls-00027F-Mc; Tue, 04 Feb 2020 13:55:12 -0500
Received: from [176.228.60.248] (port=1158 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1iz3Lr-0007sQ-8o; Tue, 04 Feb 2020 13:55:12 -0500
Date: Tue, 04 Feb 2020 20:55:03 +0200
Message-Id: <83h806gp2w.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN> (message from
 Wolfgang Scherer on Mon, 3 Feb 2020 02:16:43 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
 <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: dgutov@HIDDEN, 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> 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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 3 Feb 2020 01:16:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 20:16:54 2020
Received: from localhost ([127.0.0.1]:40768 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1iyQM9-0002BF-FM
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2020 20:16:54 -0500
Received: from mout.gmx.net ([212.227.15.15]:36723)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1iyQM6-0002B2-Tr
 for 37189 <at> debbugs.gnu.org; Sun, 02 Feb 2020 20:16:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1580692604;
 bh=oKtl//DFxDTWxc0XZnmklkciQgBdTAKhg0vRh69eXDI=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=dQkuxzVYTkxozTOaxC6if2z1/qwfWEIcJY6C2FL4rVgvJjJxmj9QevrvEzNzqyBK/
 LMtO1zX7+HE55+zrLruEYvaCoUC22I9lOn1oJpxBFcSsHBvGT59KgIH8CsSHFmY5Y6
 ZYL4Apa5Hw0CvsmL/BMQRHRjZZoHtXefkljjDri0=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MLzFr-1jFgDt1YW1-00Hx5P; Mon, 03
 Feb 2020 02:16:44 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 505F81943155;
 Mon,  3 Feb 2020 02:16:43 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> <838slmk90j.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <ca38090b-8a25-84e8-2320-2e0f9e1a49d4@HIDDEN>
Date: Mon, 3 Feb 2020 02:16:43 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <838slmk90j.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:4nHm6Y7vn1Pk32tNNkn2xGoHFUaiF0/1qrcImE0Y+QKXKbRHjEb
 jFQ2wi38mRI7JzQfqdg4zYY8GXnrmWq7UVeQfmQe+/HTZw4BhwKrTPYc3TuhQlP+p87Elv0
 mOLLhaQmmt07c86fDW13HHJ7zjLv8vUNivxYnznGa+2w8xyCnSX6iex+UHIxOd0quzRh7ay
 MoasurGZozWcuwFj7ox1A==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:gbV+TOOWpeM=:G+1IDdVJyC78RR+8Th2c5y
 FbapbmlU9lSxWjVcaRM5t3pT776gGo5XvMGSLXqxWrIWSSn7bDQHGzE/TLsedqkhAmbWttuth
 gxbv/+BtKsK19ayER9aIH0YZD1h5ZxrsIQ0NcKbTciLYhbqYuS4DOujpsPy9TqLVvnO1Jzcic
 ZzVwqo2Hk9tIPuKgTovLeJGdmCzPOtb7AqCRjzkM9ioyxxiEm8a9TSUqV0xj/NGC/A+5RZ00n
 WX5Bitn8yPXaYxK6DGzxesBaH/wlaBOAm4JifB78QmAGQix8cCkNWnoQ2wZgDNt6Z1NQ2ixYg
 QuQtdQ1bYZ0Huc3YUIaAVdgdjWbJqx8S/p6aIqDw3+c6XAIYwGtUqvPI0qf/1bHl8kAjtDs2B
 LVjW+Xu8VcUm/ni2QPoWLYA/Zz/tjYwveSNYPAuPY4HTUtoLBRBHpFljO3ue0mUVJETwUVXQz
 wblNDCMbVHVldafGQ1DPO3sS8kEc7GqoZyr7jJNgsuELx++OE3NYfoe3M2ZL/aeHhYnzIEWJy
 b6SywLa3Pk8bTG25X+Q3wCONNI/L/UQg5redDXlDsalb5ju1lM9J+xBEJKvvPVM9/KKIQhDl6
 PheMzvUDMJ41NrduCWbtCyzZejfA0p8rGtIkOPE+PvMAuQkficRiYHwWx5IlXNFzCqh6XBKUa
 Dyw/YqF/F6tha5VNO1wSfGAg0ZOnThWbURBLPU1FHUTPsTv5oqkQtEbN5hp0+mRxDKCf645mX
 PKET9ep9o7+n/WX+Qpti70Csqr5mEb4sVVB7YGaS3NXxFO/aQ9Mmbqi1GQMOMZdphZ6ivssOW
 CZYQhm71RX9TmXegtCvpzPeu1ePc9zeJCnMNpHkWePKRyc6IEs3JdXCo1PGBHyuO/9mNXfaNE
 LUtoiaP+naAxlymHZaYJvknhhC+tNm94QjSBj3O/UTXfetOFJohRm//VOdSWv2cUwAoVdFbLD
 kAhlVPOqa8vJK03SgCqR9kQw5P5HPhxywWjv7Bcb7PZGKkwT/b0Xy645Ov9aNY75whZlw3ADx
 pdnf07hxfm6JaTEoZ4yCT9xA/vND2xgWBmofCqSPJhIiFcuV7h8sjlfS3Wk+k0uwMMEG7UQPb
 wq24fvcMxLsXvn7uQdXMLiUcYBQQtEFoKYS27iMJXDdP7meaJvjtLZPCyfDpHuLW07UnGySN/
 fhBLcS5ENJpw8Vv9ei3prqNBPBwtl2qBfhQ9wSXjBCUSKmU2ShiWfg6nEYFko326qLHDgbkmz
 4yt7OjBJ3FVHpGOMD
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 01.02.20 um 09:27 schrieb Eli Zaretskii:
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Sat, 1 Feb 2020 02:20:08 +0100
>>
>> I don't think, that the problem with ignore specs can be solved in
>> this (adhoc) manner. It should (finally) be properly designed.
>>
>> There is a fundamental difference between per-directory ignore specs
>> and per-tree ignore specs. Let me try to outline, where I see the
>> problem with the current implementation:
>>
>> 1. Per-tree VC support is (unecessarily) mapped onto per-directory
>> =C2=A0=C2=A0 semantics.
>> 2. `vc-ignore` is a quick and dirty afterthought, which does not
>> =C2=A0=C2=A0 properly model per-tree use cases.
>> 3. The rationale for my implementation of `vc-hg-ignore` covers
>> =C2=A0=C2=A0 several use cases, which should be considered for a proper=
 design.
> Could you please elaborate on these 3 points?  I've read the rest of
> your message at least twice, and I still don't think I understand your
> POV on these 3 issues well enough to make up my mind about them.  I
> appreciate the overview of the history of these features -- it might
> very well help us understand your POV -- but the POV itself is not
> clearly presented, AFAICT, so I at least couldn't find a path from the
> history of these features to the problems you allude to.  And the
> history alone cannot explain the problems in the current design,
> because there's nothing wrong in evolving a design per se.
>
> IOW, I'm OK with discussing design issues of ignoring files in VC, but
> please let's begin by presenting clear and detailed descriptions of
> the problems in the current design, and why you think the current
> design cannot easily support valid use cases with modern VCSes.
>
> Thanks.

Well, I will try again.

Opening a can of worms
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Just to be clear that my original intention was only a simple bugfix
...

In order to phase out `dvc`, I tried to use `vc-dir-ignore` in a
Mercurial repository. At that time (2019-08-24) I was still using
emacs 24.5 and 25.4.1 ubuntu standard packages.

First I ran into an unrelated bug with marking files in `vc-dir-mode`.

So, I cloned the current emacs repository to see, whether that bug was
already fixed. Since it was not, I decided to report it (see bug
#37182 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37182).

While implementing `vc-hg-ignore`, I found the implementations of
`vc--add-line`, `vc--remove-regexp` faulty, which lead to bug #37185
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37185.

Now I started using Emacs snapshot packages (v26.3).

After finishing `vc-hg-ignore` in bug Bug #37189
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37189, I checked the
implementation of other VCSs that I still use (CVS, SVN, GIT) and
found them non-functional:

- CVS bug #37215 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37215

- SVN bug #37214 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37214,
=C2=A0 bug #37216 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37216

- GIT does not have a specialized backend version, so I circled back
=C2=A0 to `vc-default-ignore`, which ironically would have worked for CVS,
=C2=A0 but not for per-tree semantics. The resulting patch in bug #37217
=C2=A0 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37217 implements
=C2=A0 minimal per-tree functionality, but should be specialized for Git
=C2=A0 ignore glob features (anchored glob patterns).

There was no provision in `vc-dir-ignore` to ignore all marked files,
which begat bug #37240
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D37240.

The discussion about my adhoc implementation of `vc-hg-ignore` now
ends up in a design analysis. How funny :-). This discussion and the
latest discovery (bug #39380
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D39380) finally sparked
the historic research into the `vc` package.

The research does show, that the initial implementation started out
with per-directory semantics. Although the `vc-default-ignore`
function was designed to cover Git/Hg in an adhoc manner, it was never
properly implemented.

The amount of bugs further shows, that the ignore feature was never
properly integrated.

Per-directory vs. per-tree
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D

Per-directory and per-tree ignore contexts are sufficently polymorphic
such that per-directory algorithms can easily be implemented on top of
per-tree algorithms. However, implementing per-tree behavior on top of
per-directory does not generally work.

While there is no **difference between filepath and file pattern** in
a per-directory glob context, the difference **becomes vital in a
per-tree context**. The difference is further acerbated, when patterns
are encoded as regular expressions.

Since there is no possible automatic detection of filepath vs. file
pattern, the current API of `vc-ignore` is insufficient.

Ignoring existing files leads to patterns with the least amount of
ambiguity, which requires regular expressions to be escaped. Whereas
user supplied patterns should not be encoded at all.

The use cases 1, 2, 3 below should therefore be covered by
`vc-ignore-file`, use case 4 should be covered by `vc-ignore-pattern`.

`vc-ignore` should be expanded to accept an optional flag `as-is`
which determines processing of the `file` argument. This flag can be
used by `vc-ignore-pattern` to specify its use case. `vc-ignore-file`
can be implemented as alias for `vc-ignore`.

Per-directory
=2D------------

Per-directory `vc-ignore` algorithm for CVS:

- One ignore file per directory.
- Each line is a file glob pattern relative to the directory of the ignore=
 file.
- Pattern scope is limited to the directory.

Use cases

1. Ignore a file in `vc-dir-mode`.

=C2=A0=C2=A0 Write basename of absolute filepath into ignore file for dire=
ctory.

2. Ignore marked files in `vc-dir-mode`.

=C2=A0=C2=A0 Write basename of relative filepath into ignore file for dire=
ctory.

3. Ignore absolute/relative filepath with `vc-ignore`.

=C2=A0=C2=A0 Write basename of filepath into ignore file for directory.

4. Ignore pattern with `vc-ignore`.

=C2=A0=C2=A0 Write pattern unaltered into ignore file of directory.

Per-tree
=2D-------

Per-tree algorithms for Mercurial (Git is somewhat similiar, but only
supports glob patterns):

- Single ignore file at the root of the repository
- alternative syntax: regexp or glob
- Each line is a pattern for a filepath relative to the directory of the i=
gnore file.
- Pattern scope extends into sub directories

1. Ignore a file in `vc-dir-mode`.

=C2=A0=C2=A0 Convert absolute filepath to filepath relative to `vc-root-di=
r` and write into ignore file.

2. Ignore marked files in `vc-dir-mode`.

=C2=A0=C2=A0 Convert filepath relative to default directory to filepath re=
lative to `vc-root-dir` and write into ignore file.

3. Ignore absolute/relative filepath with `vc-ignore`.

=C2=A0=C2=A0 Convert filepath to filepath relative to `vc-root-dir` and wr=
ite into ignore file.

4. Ignore pattern with `vc-ignore`.

=C2=A0=C2=A0 Write pattern unaltered into ignore file.

Faulty implementation of `vc-default-ignore`
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Both sets of algorithms and use cases are currently covered by
`vc-ignore` being called interactively or by `vc-dir-ignore` from
`vc-dir-mode`.

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.

Consequently the original implementation of `vc-default-ignore` only
works for per-directory VCSs. This would have been sufficient for CVS,
but ironically CVS has a specialized function `vc-cvs-ignore`,
imported from `pcvs`, which does not work correctly .

While the frontend command `vc-ignore` does not have inherent
per-directory or per-tree semantics, the description should use a
per-tree context, similar to `vc-default-ignore`.

A. Original vc-default-ignore
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D

.. code-block:: elisp

=C2=A0=C2=A0 (defun vc-default-ignore (backend file &optional directory re=
move)
=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under the VCS of DIRECTORY (default =
is `default-directory').
=C2=A0=C2=A0 FILE is a file wildcard, relative to the root directory of DI=
RECTORY.
=C2=A0=C2=A0 When called from Lisp code, if DIRECTORY is non-nil, the
=C2=A0=C2=A0 repository to use will be deduced by DIRECTORY; if REMOVE is
=C2=A0=C2=A0 non-nil, remove FILE from ignored files.
=C2=A0=C2=A0 Argument BACKEND is the backend you are using."
=C2=A0=C2=A0=C2=A0=C2=A0 (let ((ignore
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-cal=
l-backend backend 'find-ignore-file (or directory default-directory)))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (pattern (fil=
e-relative-name
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (expand-file-name file) (=
file-name-directory file))))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (if remove
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc--remove-r=
egexp pattern ignore)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc--add-line pattern ign=
ore))))

B. Revised vc-default-ignore
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D

.. code-block:: elisp

=C2=A0=C2=A0 (defun vc-default-ignore (backend file &optional directory re=
move)
=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under the VCS of DIRECTORY (default =
is `default-directory').
=C2=A0=C2=A0 FILE is a wildcard specification, either relative to
=C2=A0=C2=A0 DIRECTORY or absolute.
=C2=A0=C2=A0 When called from Lisp code, if DIRECTORY is non-nil, the
=C2=A0=C2=A0 repository to use will be deduced by DIRECTORY; if REMOVE is
=C2=A0=C2=A0 non-nil, remove FILE from ignored files.
=C2=A0=C2=A0 Argument BACKEND is the backend you are using."
=C2=A0=C2=A0=C2=A0=C2=A0 (let ((ignore
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-cal=
l-backend backend 'find-ignore-file (or directory default-directory)))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 file-path roo=
t-dir pattern)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (setq file-path (expand-file-name fil=
e directory))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (setq root-dir (file-name-directory i=
gnore))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (when (not (string=3D (substring file=
-path 0 (length root-dir)) root-dir))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (error "Ignore spec %s is=
 not below project root %s" file-path root-dir))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (setq pattern (substring file-path (l=
ength root-dir)))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (if remove
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc--remove-r=
egexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") ignore)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc--add-line pattern ign=
ore))))

C. vc-ignore
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

.. code-block:: elisp

=C2=A0=C2=A0 (defun vc-ignore (file &optional directory remove)
=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under the VCS of DIRECTORY.

=C2=A0=C2=A0 Normally, FILE is a wildcard specification that matches the f=
iles
=C2=A0=C2=A0 to be ignored.=C2=A0 When REMOVE is non-nil, remove FILE from=
 the list
=C2=A0=C2=A0 of ignored files.

=C2=A0=C2=A0 DIRECTORY defaults to `default-directory' and is used to
=C2=A0=C2=A0 determine the responsible VC backend.

=C2=A0=C2=A0 When called interactively, prompt for a FILE to ignore, unles=
s a
=C2=A0=C2=A0 prefix argument is given, in which case prompt for a file FIL=
E to
=C2=A0=C2=A0 remove from the list of ignored files."
=C2=A0=C2=A0=C2=A0=C2=A0 (interactive
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (list
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (if (not current-prefix-arg)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (read-file-na=
me "File to ignore: ")
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (completing-read
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "File to remove: "
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-call-backend
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (or (vc-respo=
nsible-backend default-directory)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (error "Unknown backend"))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 'ignore-compl=
etion-table default-directory)))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nil current-prefix-arg))
=C2=A0=C2=A0=C2=A0=C2=A0 (let* ((directory (or directory default-directory=
))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (backen=
d (or (vc-responsible-backend default-directory)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (=
error "Unknown backend"))))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-call-backend backend 'ignore file=
 directory remove)))





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 1 Feb 2020 08:27:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 03:27:34 2020
Received: from localhost ([127.0.0.1]:38337 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ixo7p-0005CD-V9
	for submit <at> debbugs.gnu.org; Sat, 01 Feb 2020 03:27:34 -0500
Received: from eggs.gnu.org ([209.51.188.92]:37397)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1ixo7o-0005C2-FR
 for 37189 <at> debbugs.gnu.org; Sat, 01 Feb 2020 03:27:32 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:34931)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1ixo7i-0006J2-O1; Sat, 01 Feb 2020 03:27:26 -0500
Received: from [176.228.60.248] (port=4206 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1ixo7i-0008AW-25; Sat, 01 Feb 2020 03:27:26 -0500
Date: Sat, 01 Feb 2020 10:27:08 +0200
Message-Id: <838slmk90j.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN> (message from
 Wolfgang Scherer on Sat, 1 Feb 2020 02:20:08 +0100)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
 <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, dgutov@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Sat, 1 Feb 2020 02:20:08 +0100
> 
> I don't think, that the problem with ignore specs can be solved in
> this (adhoc) manner. It should (finally) be properly designed.
> 
> There is a fundamental difference between per-directory ignore specs
> and per-tree ignore specs. Let me try to outline, where I see the
> problem with the current implementation:
> 
> 1. Per-tree VC support is (unecessarily) mapped onto per-directory
>    semantics.
> 2. `vc-ignore` is a quick and dirty afterthought, which does not
>    properly model per-tree use cases.
> 3. The rationale for my implementation of `vc-hg-ignore` covers
>    several use cases, which should be considered for a proper design.

Could you please elaborate on these 3 points?  I've read the rest of
your message at least twice, and I still don't think I understand your
POV on these 3 issues well enough to make up my mind about them.  I
appreciate the overview of the history of these features -- it might
very well help us understand your POV -- but the POV itself is not
clearly presented, AFAICT, so I at least couldn't find a path from the
history of these features to the problems you allude to.  And the
history alone cannot explain the problems in the current design,
because there's nothing wrong in evolving a design per se.

IOW, I'm OK with discussing design issues of ignoring files in VC, but
please let's begin by presenting clear and detailed descriptions of
the problems in the current design, and why you think the current
design cannot easily support valid use cases with modern VCSes.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 1 Feb 2020 01:20:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 20:20:18 2020
Received: from localhost ([127.0.0.1]:38239 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ixhSM-0003BQ-7r
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2020 20:20:18 -0500
Received: from mout.gmx.net ([212.227.15.18]:50027)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1ixhSK-0003BB-0z
 for 37189 <at> debbugs.gnu.org; Fri, 31 Jan 2020 20:20:16 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1580520009;
 bh=XsDnvo6jj0tOsHvJg8LrZm5gL1bnlFScAl6YDiD8YBE=;
 h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To;
 b=YjA8p5WNzOqHL/sU/EE8FfTTKmYe++wnZ8XmjkhfLWKyemb5o3g52KWr6O2xO6+fi
 tf5mfH5AEwKa1Nu+L3i2HDTRDyLoXVY2Ozq4S2iBwlFRvk8zUs5iQSg6VD+jonyriL
 aR7P4b9jMaCnZwlBOXs4HpKeUcZO2C483a1vod4g=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MowGa-1jLEud2TYU-00qRcb; Sat, 01
 Feb 2020 02:20:09 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 725D619431B6;
 Sat,  1 Feb 2020 02:20:08 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
 <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <6145d6f6-37a8-7166-731b-57669086b145@HIDDEN>
Date: Sat, 1 Feb 2020 02:20:08 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:3gItFbRP+4LvtXFf1fk9jr3z9zxp5F/90+WAixFocvvddku4ugI
 jqTFtSPZWUgc6nKOWh3eLf9Xxsfsseun1PyJQPJ+r09sQCK+vaOeOTqrqb1AxOoJn1MdKIN
 ME027eERsNWSkeaZQwbk4D8RM5lV78BTwvPr5IyPYQCED+1obkt/UU6kBsk/looZLMDeTF8
 VUZpE9mnFWXNG8IsOIh2Q==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:TPsaQUUGq1Q=:oo9gkwrji0jeDp7WDDbD97
 WJ8g1feWDpbu+7SGtXzXvkzXSPrhGj9Hf6Ws8A/jIN0vQ3VEldm4CJC73TvBG1y3v0SV8rGYM
 JgeBWQyw9BSGzK1vOXsBYqHy/hroHCS3rcADtJiDVxc80W/AT1ahw0+s8B+6Z4sOTkxkEFJHc
 ws93FVWBlmpCKzlnTZknKkcK4sTybXH7wv4rVpIIK2ctitiIiN40uxoRilf6FhnFAHMPF+zBx
 7tz8ePyumIQ2CcmLsqteNPXd8j/cO/U0mTNsfeNHmWK+cVU8ym8DdS35o2zx2dcQgCXGTuVdI
 CIqtZjiHw+uwVfyHVp3ksD/cu2rkA0AdcN3oQnvVWHnr3QvI60gdmNESIkMRM98iBEq5ZViS2
 CWXrUZgrFuwluPpc16qNAdXR79jDpFvh3fmooI23eErQiJ/9aVaKuybbotdV6UNUeqQSDlsd6
 NLNWt606G6OSRM9YxrTaAiNy5JQo7tSmoOM59Ms+DFzo+9ZFin7ugKu+QWi2W55N20FqZbby6
 Nm8CUxjMKOHGYLpftC8Y97KFZC8vYVBv+DpsWpD8/3CUhE5/WhfxWjWOaYPFRr4AhRJOry5Hw
 MW2tABuiRdgeOe0eyRlMijAHRAjLNb5Cb46Wpm8BfEQHXXTT/hKu6brZYad6Ac1cS3iD3IymI
 SCPiBiTCHtxywVUFC7pX2ea58Ry1OOmQomo8XSjwY86bnT9ZemltjVAFKBRoXGoydy/z1zx4r
 V4xxaGy2/0/ektZG+wkxK1DK8LCUAoJuU6aYCwLn/uYpVVMOsleWT6ZJdBBkHvnhUCBxe+/bk
 SbGoT4b/wAABM6MZx0Bs1j9smkTJYpz8U0kfnXySE7b0P71cYnCW9mGBw0MKkqqLf6wnPA1MJ
 KZykNcmClB+pbbMVboqt8cQ1ZTkNbGIaoHF9DZwUlsvs8//Gpr6GiTgrYS2NVmGvGq+Byj43J
 7b/09lkYvu/U89O149sutsgzF/asF6A7Pe4QkhWnkdu3Wv5pHh7Qxn4V2Qvjlu5TRuDuLQOiC
 FJONJeTRQ80Ott3zzWgKNGnGZOTYzDxSpauaaICRbaRXTOkd1G9mXNMoSnHOwRQPdwHFF7cuv
 fHaLIBLj1GG0jo69ibplkmDCP3ZIKm9p8o/qg5KP467azaYvtbFCXeppvkZjmjgW5joI1S8xZ
 F/N/ztLQIiC9cubGZW3dSQgfOerP/5Kwdi5rtNZG/CjN4bQP22jLhf4+RdtaGAXMnKVyB9BlI
 g8Afp9jSYYjaQDyfT
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Dmitry,

I don't think, that the problem with ignore specs can be solved in
this (adhoc) manner. It should (finally) be properly designed.

There is a fundamental difference between per-directory ignore specs
and per-tree ignore specs. Let me try to outline, where I see the
problem with the current implementation:

1. Per-tree VC support is (unecessarily) mapped onto per-directory
=C2=A0=C2=A0 semantics.
2. `vc-ignore` is a quick and dirty afterthought, which does not
=C2=A0=C2=A0 properly model per-tree use cases.
3. The rationale for my implementation of `vc-hg-ignore` covers
=C2=A0=C2=A0 several use cases, which should be considered for a proper de=
sign.

Until the `vc-ignore` system is fully streamlined, the patches I provided
can be used to deliver something other than nonsense for the
`vc-dir-mode` cases.

Per-directory vs. per-tree
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D

Originally, `vc` only supoprted SCCS, RCS, CVS, which all have
per-directory semantics (see A. VC Backend History). It is not until
2004-03-15, when Arch is added, that per-tree semantics is mentioned.

Starting 2007-07-30 GIT, HG, BZR, Mtn per-tree VCS are added. Finally
2014-11-20 SRC is added to the current list of supported backends:

=C2=A0=C2=A0=C2=A0 (defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC B=
zr Git Hg Mtn)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; RCS, CVS, SVN, SCCS, and SRC come first =
because they are per-dir
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; rather than per-tree.=C2=A0 RCS comes fi=
rst because of the multibackend

However, the per-directory paradigm still bleeds through the UI. With
changes as late as 2015, when `vc-root` became the default for
`vc-dir`. And Bug#39380, which I just discovered.

vc-ignore is a quick and dirty afterthought
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Since `vc` started out with RCS and SCCS support only, there was no
need for ignore file support. Since `pcl-cvs` was more popular than
`vc` for CVS, the ignore file support was obviously never missed
enough.

The first version of `cvs-ignore` in `vc` appeared in 2013
(see B. Initial revision of vc-ignore). It imported
`cvs-append-to-ignore` from `pcl-cvs` and added some quick and dirty
backend implementations for other VCS. Especially, ignoring files in
`vc-dir-mode` is seriously broken.

My standard use case for ignore files under per-tree VCS
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D

My most frequent use case is ignoring a couple of marked files in
`vc-dir-mode` under Mercurial.=C2=A0 I almost never add (or remove)
patterns with `M-x vc-ignore`.

The following use cases are implemented in `vc-ignore`,
`vc-hg-ignore`:

1. `vc-dir-ignore` without a prefix argument shall call `vc-ignore`
=C2=A0=C2=A0 with the result of (vc-dir-current-file), which is an absolut=
e path
=C2=A0=C2=A0 name.

2. `vc-dir-ignore` with a prefix argument shall call `vc-ignore` for
=C2=A0=C2=A0 each marked file with the result of (vc-dir-fileinfo->name
=C2=A0=C2=A0 filearg), which is a path relative to (vc-root).

3. The argument FILE of `vc-ignore` is either a pattern, an absolute
=C2=A0=C2=A0 file path or a relative file path.

4. The argument FILE of `vc-hg-ignore` is either a pattern or a file name.

=C2=A0=C2=A0 a. If FILE matches the regular expression
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 `vc-hg-ignore-detect-wildcard` ("[*^$]"), i=
t is considered a
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pattern an is written unmodified into the i=
gnore file,

=C2=A0=C2=A0 b. Otherwise, FILE is expanded to an absolute file name, whic=
h is
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 then made relative to the ignore file direc=
tory. The relative
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 file path is then escaped according to the =
active ignore syntax
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 and written into the ignore file.

Examples (Mercurial repository):

* `M-x vc-ignore` in sub directory "below1/below2":
=C2=A0 "/home/repo/below1/below2/file.name" =3D> "^below1/below2/file\.nam=
e$"

* `M-x vc-ignore` in sub directory "below1/below2":
=C2=A0 "file.name" =3D> "^below1/below2/file\.name$"

* `M-x vc-ignore` in sub directory "some/where/in":
=C2=A0 "\.ext$" =3D> "\.ext$"

* `G` in `vc-dir-mode` on "below1/below2/file.name":
=C2=A0 "/home/repo/below1/below2/file.name" =3D> "^below1/below2/file\.nam=
e$"

* `G` in `vc-dir-mode` marked "below1/below2/file.name":
=C2=A0 "below1/below2/file.name" =3D> "^below1/below2/file\.name$"

A. VC backend history
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

2015-01-19: (vc-root) instead of default-directory as default for `vc-dir`

2014-12-08: Arch removed
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn Arch=
)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn)

2014-11-20: SRC added
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch)
-=C2=A0 ;; RCS, CVS, SVN and SCCS come first because they are per-dir
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn Arch=
)
+=C2=A0 ;; RCS, CVS, SVN, SCCS, and SRC come first because they are per-di=
r

2008-05-07: MCVS removed
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch MCV=
S)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch)

2007-09-14: Mtn added
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS Bzr Git Hg Arch MCVS)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch MCV=
S)

2007-07-31: BZR added
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS GIT HG Arch MCVS)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS GIT HG BZR Arch MCVS)

2007-07-30: GIT, HG added
-(defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS GIT HG Arch MCVS)

2004-03-15: Arch added, first mention of per-tree
-(defcustom vc-handled-backends '(RCS CVS SVN MCVS SCCS)
+(defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS)
+=C2=A0 ;; Arch and MCVS come last because they are per-tree rather than p=
er-dir.

2003-05-07: SVN MCVS added
-(defcustom vc-handled-backends '(RCS CVS SCCS)
+(defcustom vc-handled-backends '(RCS CVS SVN MCVS SCCS)

2000-09-04: vc-handled-backends introduced
+(defcustom vc-handled-backends '(RCS CVS SCCS)

1994 CVS support '(RCS SCCS CVS)

1992 first version of vc.el '(RCS SCCS)

B. Initial revision of vc-ignore
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D

Note: `cvs-append-to-ignore` imported from pcvs.el

commit 7aa7fff0c8860b72a2c7cdc7d4d0845245754d43
Author: Xue Fuqiao <xfq.free@HIDDEN>
Date:=C2=A0=C2=A0 Tue Jul 30 08:25:31 2013 +0800

=C2=A0=C2=A0=C2=A0 Add vc-ignore.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc.el (vc-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-svn.el (vc-svn-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-hg.el (vc-hg-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-git.el (vc-git-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-dir.el (vc-dir-mode-map): Add key binding =
for vc-dir-ignore
=C2=A0=C2=A0=C2=A0 (vc-dir-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-cvs.el (vc-cvs-ignore): New function.
=C2=A0=C2=A0=C2=A0 (cvs-append-to-ignore): Moved from pcvs.el.
=C2=A0=C2=A0=C2=A0 * lisp/vc/vc-bzr.el (vc-bzr-ignore): New function.
=C2=A0=C2=A0=C2=A0 * lisp/vc/pcvs.el (vc-cvs): Require 'vc-cvs.

+(defun vc-bzr-ignore (file)
+=C2=A0 "Ignore FILE under Bazaar."
+=C2=A0 (interactive)
+=C2=A0 (vc-bzr-command "ignore" (get-buffer-create "*vc-ignore*") 0
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 file))

+(defun vc-cvs-ignore (file)
+=C2=A0 "Ignore FILE under CVS."
+=C2=A0 (interactive)
+=C2=A0 (cvs-append-to-ignore (file-name-directory file) file))
+
+(defun cvs-append-to-ignore (dir str &optional old-dir)
+=C2=A0 "In DIR, add STR to the .cvsignore file.
+If OLD-DIR is non-nil, then this is a directory that we don't want
+to hear about anymore."
+=C2=A0 (with-current-buffer
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (find-file-noselect (expand-file-name ".cv=
signore" dir))
+=C2=A0=C2=A0=C2=A0 (when (ignore-errors
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (and buffer-=
read-only
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (eq 'CVS (vc-backend buffer-file-name))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (not (vc-editable-p buffer-file-name))))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; CVSREAD=3Don special case
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vc-checkout buffer-file-name t))
+=C2=A0=C2=A0=C2=A0 (goto-char (point-max))
+=C2=A0=C2=A0=C2=A0 (unless (bolp) (insert "\n"))
+=C2=A0=C2=A0=C2=A0 (insert str (if old-dir "/\n" "\n"))
+=C2=A0=C2=A0=C2=A0 (if cvs-sort-ignore-file (sort-lines nil (point-min) (=
point-max)))
+=C2=A0=C2=A0=C2=A0 (save-buffer)))

+=C2=A0=C2=A0=C2=A0 (define-key map "I" 'vc-dir-ignore)

+(defun vc-dir-ignore ()
+=C2=A0 "Ignore the current file."
+=C2=A0 (interactive)
+=C2=A0 (vc-ignore (vc-dir-current-file)))

+(defun vc-git-ignore (file)
+=C2=A0 "Ignore FILE under Git."
+=C2=A0 (interactive)
+=C2=A0 (with-temp-buffer
+=C2=A0=C2=A0=C2=A0 (insert-file-contents
+=C2=A0=C2=A0=C2=A0=C2=A0 (let (gitignore (concat (file-name-as-directory =
(vc-git-root
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 default-directory)) ".gitignore"))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (unless (search-forward file nil t)
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (goto-char (point-max))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (insert (concat "\n" file "\n"=
))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (write-region 1 (point-max) gi=
tignore))))))

+(defun vc-hg-ignore (file)
+=C2=A0 "Ignore FILE under Mercurial."
+=C2=A0 (interactive)
+=C2=A0 (with-temp-buffer
+=C2=A0=C2=A0=C2=A0 (insert-file-contents
+=C2=A0=C2=A0=C2=A0=C2=A0 (let (hgignore (concat (file-name-as-directory (=
vc-hg-root
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 default-directory)) ".hgignore"))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (unless (search-forward file nil t)
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (goto-char (point-max))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (insert (concat "\n" file "\n"=
))
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (write-region 1 (point-max) hg=
ignore))))))

+(defun vc-svn-ignore (file)
+=C2=A0 "Ignore FILE under Subversion."
+=C2=A0 (interactive)
+=C2=A0 (vc-svn-command (get-buffer-create "*vc-ignore*") 0
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 file "propedit" "svn:ignore"))
+

+(defun vc-ignore (file)
+=C2=A0 "Ignore FILE under the current VCS."
+=C2=A0 (interactive "fIgnore file: ")
+=C2=A0 (let ((backend (vc-backend file)))
+=C2=A0=C2=A0=C2=A0 (vc-call-backend backend 'ignore file)))

C. My personal experience with Emacs version control
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D

I have been using `vc` for RCS and `pcl-cvs` (and later `vc`) for CVS
since the very beginning in the 90's.

`pcl-cvs` already had support for ignoring files (`cvs-mode-ignore`),
which I always missed in `vc`.

I stopped using CVS in favour of Mercurial for new projects
around 2007.=C2=A0 Due to the lack of support for Mercurial in `vc`, I use=
d
the `dvc` package until recently. The `dvc` package always presents
the entire repository tree and does not map the per-tree semantics
into an inapplicable per-directory UI.

Marking some files in the `*xhg-status*` buffer and invoking the
ignore function properly escapes the filenames relative to the
repository root and puts them into the `.hgignore` file at the
repository root.

Both, `pcl-cvs` and `dvc` work the same way, with `pcl-cvs` placing
the ignored files into the appropriate per-directory ignore files and
`dvc` adding them properly escaped to the per-tree ignore file.

I recently started using `vc` again for Mercurial and Git. When trying
to phase out `dvc` by covering all use cases, I stumbled over the
`vc-ignore` problems. First Mercurial, then CVS and SVN.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 14 Jan 2020 01:14:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 13 20:14:54 2020
Received: from localhost ([127.0.0.1]:60475 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1irAnF-00044T-Jm
	for submit <at> debbugs.gnu.org; Mon, 13 Jan 2020 20:14:53 -0500
Received: from mail-lj1-f182.google.com ([209.85.208.182]:41891)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1irAnB-00044C-SE
 for 37189 <at> debbugs.gnu.org; Mon, 13 Jan 2020 20:14:51 -0500
Received: by mail-lj1-f182.google.com with SMTP id h23so12341015ljc.8
 for <37189 <at> debbugs.gnu.org>; Mon, 13 Jan 2020 17:14:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=mHfiIXhhz+4QDlugxME6oBbFqleiAzQ0XyGI0iO4FW0=;
 b=tsdpH2KXrVraa0mQkU7hd+bbVJ8eOy6QzR+096s8S/xAJVyBRb9ptrpVeNbOLLzNfj
 mpRXe6h7VhJfLSEasNXAawlvcXuYFg8UudCl1brYbpX1rn62wMYuy024ujqiCpMbzXQm
 SwCZgFupQysxvIupUubPPVE7obxQL7jvrN7qwjYgnbsI0EJC72NLv9DmYSftlpUOwLCw
 +sQAhNaDXUurIe8AucheyT0SgPy3Dq4HGncK24/np+Uu6Q0bmAnQZs1VueFuIdF2HvoL
 WUWusCDJ1tB17/ET87XtMemC3jADMAm2ovTKOf/EtsFNfwsMSK2sPSuwQ8Z+u5T2GTuc
 +dJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=mHfiIXhhz+4QDlugxME6oBbFqleiAzQ0XyGI0iO4FW0=;
 b=MzndkrwLWZdb1il2KuuUaU7kBlRVSNz8PHzWXUpda9I+4qHqfWiQLMEUW30Ly1T8yt
 pLl8Xwq8sz5chJzjOnzX/8YLJBe9p8FQNmF+SsjLm6NhZnLyk389J/Uu2Zpgv5Rta3L4
 wbI9vW9X8pu6G/O6qp/c8x0MnCbC/72iSJT4W2U3x9KAoQZANYE83J8ShrSQVp1AT9D+
 FXKzyBfD/4uEesDKTe/FvXqNJkdBEe0Ga9+mOarqeRKr5pcPKlNuB0PZpDOsz13t+OIL
 PC0pE0ikVYJ0iKE4nBM+rjcHUNXjdyZf+gVwjJRqWpM8vX1vdQWrejjebAE3OZs5cVjT
 lAyQ==
X-Gm-Message-State: APjAAAV3hGgF0wGrvqBhjs44QSebBTSl8bcNlhjht5s0AY6VkBzkGZfH
 +tMZwOy+oMOAEq6dLn8gUuw8qyXa
X-Google-Smtp-Source: APXvYqyr7ks8WL7qIapOflWo+2wL+X5uBbwN/gST/9bzgDbydNfstDGl49mYwhxnfwB5nlhA88E63w==
X-Received: by 2002:a2e:854b:: with SMTP id u11mr12763503ljj.90.1578964483224; 
 Mon, 13 Jan 2020 17:14:43 -0800 (PST)
Received: from [192.168.1.142] ([178.252.127.239])
 by smtp.googlemail.com with ESMTPSA id x13sm6350726lfe.48.2020.01.13.17.14.41
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 13 Jan 2020 17:14:42 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <1ebc6077-9175-65ba-4996-282bb2c8eca5@HIDDEN>
Date: Tue, 14 Jan 2020 04:14:41 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 8bit
X-Spam-Score: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  Hi Wolfgang, Sorry for the wait. On 05.01.2020 6:46, Wolfgang
    Scherer wrote: >> On 29.08.2019 18:52, Wolfgang Scherer wrote: >>> +  "Ignore
    FILE of DIRECTORY (default is `default-directory'). >> >> IF this function
    needs a docstring [...] 
 
 Content analysis details:   (2.0 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (raaahh[at]gmail.com)
  1.5 RCVD_IN_SORBS_WEB      RBL: SORBS: sender is an abusable web server
                             [178.252.127.239 listed in dnsbl.sorbs.net]
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: stackoverflow.com]
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
                              no trust
                             [209.85.208.182 listed in list.dnswl.org]
  0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and
                             EnvelopeFrom freemail headers are
                             different
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.0 (+)

Hi Wolfgang,

Sorry for the wait.

On 05.01.2020 6:46, Wolfgang Scherer wrote:
>> On 29.08.2019 18:52, Wolfgang Scherer wrote:
>>> +  "Ignore FILE of DIRECTORY (default is `default-directory').
>>
>> IF this function needs a docstring at all (which is not obvious since it should be following vc-ignore), I think I'd rather this followed the latter's docstring. Where the clarification about the default is not in the first sentence.
> 
> vc-hg-ignore needs a docstring, since it exhibits specific behavior for the backend (e.g. glob/regex syntax), which is not and cannot be covered by the rather generic vc-ignore docstring.

OK, I'm fine with that. But user-facing one is vc-ignore, so it can have 
some generic language to that effect (saying something like "wildcard or 
other syntax supported by the backend").

> Most of the description in  vc-ignore is not even applicable to the backend specific functions, e.g. there is no interactive functionality in the backend function and no backend is determined.

OK, true, but otherwise the description should be closer. And we also 
have the description of this backend command in the header commentary of 
vc.el.

> If a backend does not provide a vc-BACKEND-ignore function, vc-default-ignore is invoked. This function has a docstring of its own (which contains the clarification about the default in the first sentence). According to your argument, this function should also have no docstring of its own. However, I cannot see how both docstrings are equivalent.

Actually, I'd have more doubt in its necessity, yes.

This one really should be covered by the docstring of vc-ignore, as well 
as the description of the 'ignore' VC command in the header commentary. 
I mean, it can have a docstring, but it would be a plain copy of the 
existing descriptions elsewhere.

> vc-hg-ignore is modeled after vc-default-ignore, the docstring was copied from vc-default-ignore and modified to fit the implementation. I have modified the docstring further to match other backend specific ignore functions.

Actually, let's talk about vc-default-ignore.

In a recent patch you submitted in debbugs#37217 you changed its 
docstring to say "either relative to DIRECTORY or absolute" whereas it 
originally said "either relative to the root directory of DIRECTORY or 
absolute. That sounds like a change in documented behavior. And it could 
be a problem if it were in a docstring users are actually likely to see.

In any case, I think the docstrings should really be in accord, and the 
"more private" functions shouldn't have crucial information about 
command's behavior that the users won't be able to see.

>> Also, I think saying "Ignore FILE under DIRECTORY" would be better, if you intend to add this particular semantics to relative names.
> All other ignore functions say "Ignore FILE under VCS". I have modified the docstring accordingly.
>>
>>> +Otherwise, FILE is either relative to DIRECTORY or absolute. FILE
>>> +is converted to a path relative to the project root of DIRECTORY.
>>
>> Isn't it a bit odd that vc-ignore's docstring doesn't specify this distinction, and yet we're trying to implement it in vc-hg-ignore?
> 
> No. vc-ignore's semantic roots stem from SCCS/RCS/CVS/subversion with single directory ignore files. The ignore files for those VCS only contain file patterns.

vc-ignore is still the command the user calls, isn't it? Or are you 
using some other command?

(This seems like the key question of this email at this point).

If yes, I also wonder what are the cases when the DIRECTORY argument is 
important. I.e., when is it not the same as default-directory?

vc-ignore, when called interactively, sets this argument to nil (so it 
is set to default-directory). vc-dir-ignore doesn't pass the second 
argument either.

Importantly, when do we really expect FILE to be something other than 
absolute, relative to the repository root, or a simple glob (e.g. *.c) 
which is going to apply to files regardless of the directory? BTW, it 
seems to me like f144c87f92b broke the last case. Or at least made it 
work worse (calling vc-ignore with '*.c' somewhere deep inside the tree 
would prepend its subdirectory to it).

There is some *valuable* code in this patch, but let's resolve this 
relative-names confusion first.

 From what I see, when vc-ignore receives the FILE argument 
interactively, it's either absolute (as a product of read-file-name when 
the user choose a file with completion), or a free-form glob when the 
user just went ahead and wrote one anyway.

So instead of the current always-relativizing logic, I think we should 
choose what to do by calling file-name-absolute-p. And if it's not 
absolute, just take the value as-is, because there is no telling if the 
user meant "this file in the current dir" or "all files with that name". 
If it is absolute, on the other hand, yes, make it relative to the 
repository root.

>>> +                (concat pattern (and (file-directory-p file-path) "*"))))))
>>
>> I think it needs to asterisks for the glob to become recursive. At least according to https://stackoverflow.com/a/255094/615245.
> No, according to https://stackoverflow.com/a/255094/2127439, all of "bin/", "bin/*", "bin/**" are equivalent under glob syntax. I also tested this specifically and extensivlely.

Very well.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 5 Jan 2020 17:25:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 05 12:25:34 2020
Received: from localhost ([127.0.0.1]:44561 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1io9ef-0002wr-Pq
	for submit <at> debbugs.gnu.org; Sun, 05 Jan 2020 12:25:34 -0500
Received: from mout.gmx.net ([212.227.17.20]:38913)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <wolfgang.scherer@HIDDEN>) id 1io9ee-0002wf-7U
 for 37189 <at> debbugs.gnu.org; Sun, 05 Jan 2020 12:25:32 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1578245124;
 bh=vhNQI3HkLEkd40GBi+cfVZpd96itl5QEEIrWmO+/r5o=;
 h=X-UI-Sender-Class:From:Subject:To:Cc:References:Date:In-Reply-To;
 b=f069sFJjyNcQbRvWvKzyj/dNafEgqEmFEjcRxGQflTbgzx5BTG3880J/Z6xslF5Ye
 2UUjB4in45b15fWqbjBl2KCrr/lZ3TFdjYJRvRy5qtRIfM1Y0w/IyoaLT7FWrxi2S9
 HIdiXqkLr42oRqXcu+OduKDIgU+ca0KbxQUO3QBk=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MhU9j-1jInmJ1F5f-00eZRr; Sun, 05
 Jan 2020 18:25:24 +0100
Received: from [192.168.33.54] (p57A0D234.dip0.t-ipconnect.de [87.160.210.52])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128
 bits)) (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 881C51940BA1;
 Sun,  5 Jan 2020 18:25:23 +0100 (CET)
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Andreas Schwab <schwab@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN> <878smmwa7z.fsf@HIDDEN>
Autocrypt: addr=wolfgang.scherer@HIDDEN; keydata=
 mQGiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OLQqV29sZmdhbmcg
 U2NoZXJlciA8V29sZmdhbmcuU2NoZXJlckBnbXguZGU+iGAEExECACAFAkb46IgCGyMGCwkI
 BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCFAq9xq9ddlenRAKDSHzk7esbwdo8uGVP8nZtdGA7/
 yQCeLoBx4xTFASiFdNE7LQoSFAARRnC5AQ0ERvjoiBAEAIYtMI3MbwOLcnIYNjULsASH/S1/
 +Opfu+PkG3sAp2uGvpsP/bOSmKixrWDLrt/ymKvcgXedzmHOy1kyzMbBjiAE0jkEYXQimFtQ
 Gp7qWKwv2yjVv/ItkBF3OyyHmImiCNE5FXUE1Wca4PZCi0PlX+s9OC237/dbFQpByiPY8YFT
 AAMFA/9JpA3jdLZZTx/jTo25JKpTo+lDsM8CGIF5gC4bgBBRl1SzNh30VfU7SWtjqBmYroch
 l2rdyZfUCvTTb3fyeB0mpfd2R1rLT1OGCEXOboSdXnlsCrH05j722VzCjJIfoQQSd/UmZ5sX
 6HlM5CtBEDRNqT2Q8owJc9N6jseg9Ax52YhJBBgRAgAJBQJG+OiIAhsMAAoJEIUCr3Gr112V
 PD8AoLOsuiNuhk4Ud1WwhVhQE/XeYG+jAKDGKQ7JrNCdIjI2hD0OMe3qVAlkew==
Message-ID: <16b9be3c-3643-c967-ab82-2ebbfa7bde8e@HIDDEN>
Date: Sun, 5 Jan 2020 18:25:23 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.2.2
MIME-Version: 1.0
In-Reply-To: <878smmwa7z.fsf@HIDDEN>
Content-Type: multipart/mixed; boundary="------------1907E8813182B953A5CB58ED"
Content-Language: en-US
X-Provags-ID: V03:K1:meS+gC6piOT7+hQBqzQAS1PSrc1/0xgxyrfLFHJ9bMht3CyYuut
 BklGI4siWkznd0vA7tUJdPisWlyXClVbUNTJ39+W78nHmlkp6mTh5cuiGa6tXj06LFD7vWX
 JpXNFirD4hWix6zIuDsrpgOesVd76l/h6XLwbpkPI+fwxm9u/8YWNaaKCZHdeAFD4ZjmA8O
 6IwgI0idWD49Y7M2lR7pA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:dvZdDIPIwm8=:/QB1X7Ovr4gvim97RvcGJk
 K6lSyjkHcGpASE/c2uIBoII/dSSElYaiI3P6SVEDuu0O1PUzuI0NIrYZQXMoWty7N4R8JDab0
 yUKwpBcQGa/T5XRnULbwFnOCanRlsh9E3Lpj9e2H3GG2jMHp+xsVnr5Ez/lIBSDu2Ym9ePOPC
 6oCNAEbMXnEuBhyQhX3ZcKXX2mrDOM8mA1APidxvRjsrOf/L93sGS/RJS0K/NDbAjZHjzTTN5
 I+lr8MziBEoscK2hkt4liL9rqajkjZpPpDeYL7f9H7hKGe/T6a3UMox76sToWOTetNVHeq6gU
 tudCCkxP/HCx4yQO7K/HO7JtVvRjlhI1CsV6QqwcYbPlzI5ssYsfocfJ2IAvA2IrgNcUjXPiD
 K1Uc5a1ybdCJ96S3Ql4b4xb2kfLX6MO975RtJ7TKjb62xPJrj0BAm6n9qNROwq/kwq01c2spG
 bM1o0DWBcdOtow8VZAirLYpSrBbSaRClzcvX1p350DpblEgSvb+r498UZuk8SSrb6Eb0+IAty
 9w3C+h3PCSjl2lACf1YmTAApdcB4cQAp8b3MMsvABABJL4QUaJidFwH4yWpoFJd3L/uMDBn6h
 2r5EZHDsEGxId4dAbiTKAeUZx2z3FxwnV3Jf3/TCC7yprR1WnL2czj3ybw9sfsYDFN2qgh4sj
 fJMSoDRRRGtJ7vywZCZbiEsMyQ6q1vRuteeRE8CDYWmhw3uDzJzle7P1oYyMkznZUyWfglLkD
 QEpMTdFFGUrJbgpD59xAYc97T6BHTHE0b07rL5haYKRup6AVEzVtgznsB/27gRod0SSZYNraA
 T5A3YdZwY2gEA1RlWrfLVZEAllgbSLYEqdleCoaXdMS5db1bjW6s/NLPBBOQzq1oeLk552lIf
 1c5dvOQQfuk77vEIg7hkrCMG16sGXDMjEFOmQkQmklsO5un1SM3NbEf8PSMdOGJ3L95jso4Fx
 2sJDErxhE4ejOM54mz+bpw5bL+aiUnjWzrHPR+u6xM19SP2QNsa8cIsvvMXgAWSp0b5tNxcKj
 PRbNIVmQWpdS96dMVmY2RwXIGeaMIj61YB7ENB2puNEY8RDATiweRNgVRNVtsv4NQTGLzZUxo
 dhfhPLTnsUxRaUZ3faZEU0uPvfrlba41dZ6ZCQ5VI2S2KXuaS5w/nZIQRcU2j46zeWgbsqly8
 8DvU8pD5hU8twafDrGUhAVJh/NrceFHOyh8D4o0L5U3DiLpDBCzdxgkl/yxCVZUM99CNycGWp
 CLiZZWCe+aH0UQhVd2If5G9HKuTWDYLQo7plG2uy43eZADlzIJD6dxH9t7Bg=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, Dmitry Gutov <dgutov@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------1907E8813182B953A5CB58ED
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Am 05.01.20 um 09:58 schrieb Andreas Schwab:
> That contains a lot of spurious whitespace differences.

You are right, that is not intended. Sometimes muscle memory just
invokes my whitespace cleaner.

Corrected patch attached.


--------------1907E8813182B953A5CB58ED
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.pa";
 filename*1="tch"

=46rom f01b089eda1be46e65a2d68b3c3ed389a61c5084 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Sun, 5 Jan 2020 18:09:42 +0100
Subject: [PATCH] Provide vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.
=2D--
 lisp/vc/vc-hg.el | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++=
+++++
 1 file changed, 62 insertions(+)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index eac9a6f..633da22 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1212,6 +1212,50 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))

+(defvar vc-hg-ignore-detect-wildcard "[*^$]"
+  "Regular expresssion to detect wildcards in an ignored file
+  specification.")
+
+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE under Mercurial.
+FILE is either absolute or relative to DIRECTORY (default is
+`default-directory').
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is processed unmodified.
+Otherwise, FILE is converted to a path relative to the project
+root of DIRECTORY.  It is then further escaped/expanded according
+to the active syntax in .hgignore.  If the syntax is `regexp',
+FILE is quoted as anchored literal Python regexp and if FILE is a
+directory, the trailing `$' is omitted.  Otherwise, if the syntax
+is `glob', FILE is used unquoted and if FILE is a directory, a
+`*' is appended.
+If REMOVE is non-nil, remove the pattern derived from FILE from
+ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory))=
)
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq file-path (expand-file-name file directory))
+      (setq root-dir (file-name-directory ignore))
+      (when (not (string=3D (substring file-path 0 (length root-dir)) roo=
t-dir))
+        (error "Ignore spec %s is not below project root %s" file-path ro=
ot-dir))
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$=
" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*"))))=
))
+    (if remove
+        (vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$=
\\)") ignore)
+      (vc--add-line pattern ignore))))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
@@ -1522,6 +1566,24 @@ This function differs from vc-do-command in that it=
 invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))

+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (ch)
+      (cons ch (concat "\\" (char-to-string ch)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothing=
 else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (ch)
+      (or (cdr (assq ch vc-hg--py-regexp-special-chars))
+          (char-to-string ch))))
+   string ""))
+
 (provide 'vc-hg)

 ;;; vc-hg.el ends here
=2D-
2.7.4


--------------1907E8813182B953A5CB58ED--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 5 Jan 2020 08:58:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 05 03:58:45 2020
Received: from localhost ([127.0.0.1]:43635 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1io1kD-0002aE-BX
	for submit <at> debbugs.gnu.org; Sun, 05 Jan 2020 03:58:45 -0500
Received: from mail-out.m-online.net ([212.18.0.10]:59362)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <whitebox@HIDDEN>) id 1io1kB-0002a5-0g
 for 37189 <at> debbugs.gnu.org; Sun, 05 Jan 2020 03:58:44 -0500
Received: from frontend01.mail.m-online.net (unknown [192.168.8.182])
 by mail-out.m-online.net (Postfix) with ESMTP id 47rCH61PmRz1rY5L;
 Sun,  5 Jan 2020 09:58:41 +0100 (CET)
Received: from localhost (dynscan1.mnet-online.de [192.168.6.70])
 by mail.m-online.net (Postfix) with ESMTP id 47rCH55TZMz1qrjx;
 Sun,  5 Jan 2020 09:58:41 +0100 (CET)
X-Virus-Scanned: amavisd-new at mnet-online.de
Received: from mail.mnet-online.de ([192.168.8.182])
 by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new,
 port 10024)
 with ESMTP id sL8PmFy7GEI7; Sun,  5 Jan 2020 09:58:40 +0100 (CET)
X-Auth-Info: HaVSZ4jKjEnVCAdkf3qVEkTuPxxaVWi+dFwGQc2ig3pMeI1D6GO26j2rvAX0oJwr
Received: from hase.home (ppp-46-244-163-176.dynamic.mnet-online.de
 [46.244.163.176])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by mail.mnet-online.de (Postfix) with ESMTPSA;
 Sun,  5 Jan 2020 09:58:40 +0100 (CET)
Received: by hase.home (Postfix, from userid 1000)
 id 5740010377F; Sun,  5 Jan 2020 09:58:40 +0100 (CET)
From: Andreas Schwab <schwab@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
 <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
X-Yow: Someone is DROOLING on my collar!!
Date: Sun, 05 Jan 2020 09:58:40 +0100
In-Reply-To: <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN> (Wolfgang Scherer's
 message of "Sun, 5 Jan 2020 04:46:33 +0100")
Message-ID: <878smmwa7z.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.4 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org, Dmitry Gutov <dgutov@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.4 (-)

On Jan 05 2020, Wolfgang Scherer wrote:

> diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
> index eac9a6f..db84a28 100644
> --- a/lisp/vc/vc-hg.el
> +++ b/lisp/vc/vc-hg.el
> @@ -142,9 +142,9 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
>  If nil, use the value of `vc-annotate-switches'.  If t, use no
>  switches."
>    :type '(choice (const :tag "Unspecified" nil)
> -		 (const :tag "None" t)
> -		 (string :tag "Argument String")
> -		 (repeat :tag "Argument List" :value ("") string))
> +                 (const :tag "None" t)
> +                 (string :tag "Argument String")
> +                 (repeat :tag "Argument List" :value ("") string))
>    :version "25.1"
>    :group 'vc-hg)
>

That contains a lot of spurious whitespace differences.

Andreas.

-- 
Andreas Schwab, schwab@HIDDEN
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 5 Jan 2020 03:46:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 04 22:46:44 2020
Received: from localhost ([127.0.0.1]:43578 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1inwsG-0002aC-45
	for submit <at> debbugs.gnu.org; Sat, 04 Jan 2020 22:46:44 -0500
Received: from mout.gmx.net ([212.227.17.22]:36875)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1inwsD-0002Zy-WF
 for 37189 <at> debbugs.gnu.org; Sat, 04 Jan 2020 22:46:43 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1578195995;
 bh=RKMroODgtv5ohlGfEBmqNQxOCmF6ZvtmBVZAT/2BoVQ=;
 h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To;
 b=HRfGxCx21jtCImOZTItWaJfHMqEThT02AznO4k5ZL6qs2W7GO3t6AGAUhyEsxdssW
 UOuhc044SS4rJnBEj1DTh14B4wD6Wbww4VxFZNw+bttelGTIibnZ5b5QjSdyn/hUiS
 Ehu8JhdQoFEHbv7Uftuxm1eO65i0StsOLDcgdy1E=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.160.210.52]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MK3Vu-1j9Jm10Es2-00LUDZ; Sun, 05
 Jan 2020 04:46:35 +0100
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 3C5821940579;
 Sun,  5 Jan 2020 04:46:34 +0100 (CET)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Dmitry Gutov <dgutov@HIDDEN>, 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
 <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <57825d73-27a4-d5f5-8198-a172796a558a@HIDDEN>
Date: Sun, 5 Jan 2020 04:46:33 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
Content-Type: multipart/mixed; boundary="------------731B6E72D1AAA2423C792EAD"
Content-Language: de-DE
X-Provags-ID: V03:K1:JA/1+6LxYVLxlGxhpdbvfXE35OvSI4u84QSqzw9ef9jBAC6YEIB
 /rKZux4Q8Nl0eH5uWMcAkgIzl5JlwYK0L4HJNo/sEfPrrHxR4bvqX19P/7bKlLGTPJseTX4
 y/SP0dPTC6G+oMXUK1/5/IVHed/BObsfmRLd624aUJImtHZR9X1CtR4e14Bs33+uFGt9sF7
 ACtbnrJXpXepu/uARldFw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:4xvwuhjIyxE=:g1f9TWId01k/kTvorj7FEj
 fIhlVtTKd5Pne/8uEmCjV/7pYlq1DKbC9n5vjNrUrKIQW+mkJfNVo7Lxn8cTQI5EeMw21+/nk
 D39fXx3xffMG33YXbsgjTKK/hv6J2MaAvXqO9/pYH3tlIRfwy4IE9kx1IZXyU5JplXTDUpk91
 LJ0kMlaRtqqMSnqwkrgzFlYfaj94r6dsZpbOULgc+xQJYGi2GPrL4Er6tqlIDJS/66KXXRa6U
 3nTKknFGNhqsW+pq4HuEUvAQRyGBnjgHmpsbMPaC+STM/5hl8HSq3djoUcxNEPeBNLRuGq66s
 o6XUjABixW9Ix1zTaKWCUH7baIY2ibJ+PJ3u2eZX0Zle8809QvPFisq+9iEJeC1hi6aTYHIhD
 g0udqAxHw1ZCGEUCZB66i2ck12HoG8viPo9EFgasssmuRW/SGEC577LE8iTDmsca5FTdAgrtv
 NNC0L+DH6VcqrbL6znvxl5hoDztTO9UVtjStMnmuvIANgNEk9kOLzl1gL/04P79mWublUnShr
 Us4EFNKFJJvfz39vHL2SCX9/0KlhXtrkSgy2ROrdi5B2c/fkuKdVa5HugDgS9G72ByC98d587
 dAWCSHjP7xNCUyAqC4DjVipKLIA1tJaMBw+LLgcZQdylFfPsZ1wX7CKHPVe/ISKU6F0Q2eskv
 INTO0k/of7EdHwLROnb5nbOJZ0BSn+S1ZOnpVrjgQE/Mo/A6jpk7QBmAiMjlwe02AOl2jG+5+
 Tpm2weF24/KanWe/F6RFmFpiEftuLt8rJxmQzEiJ2ye9wyTWHGZBWog9IL+op+siJBQApQlYa
 +61oyFtgb5yJxpQaZ/OymbJKQA8hgZ0/wU8XXbVE66GUDYBgV6lJBDZkayDaVbFtaqwG9xoRu
 owfQD+fTMbn7LXLKPjV3sQNTxLLGcMyjT46AO0O7gLPt0R2smJ8A5vfickAarz46Pq93tC3Lx
 kqWlzawiRge1zLrHRljvwhdhRMjZQSYCzZ7ghbNPh94xd6bWC2ZMQkf7BWm+Zyyt8oSfZHR5S
 bMfIT5f5OIwMBzkhUZShhOmpbYsZAs0/NcJnaE48BF56IL9G03ljs0MfjKQIIrumOLymm0ccd
 wWBR9MnUOryS6J9mwmg99a7TCsBT8k0yBdDOR/GX7c5RdwCrmEQXYIdMlnFng3r/9wYeT8vj5
 ab7z2yZ9UBdMVjIL4PQ3RVuDYsN5RJzZfXdaV4/Ufvq/TC1u7GxqEjmK+rG8UQXIIagiHwagW
 L8qfP6Qw+W+XJvth5LzPvg4nzbWRLNHgZprCZzcAicu5cTfJd3Q8IIM2YaJ8=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------731B6E72D1AAA2423C792EAD
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Dmitry,

Am 25.12.19 um 01:16 schrieb Dmitry Gutov:
> On 29.08.2019 18:52, Wolfgang Scherer wrote:
>> +=C2=A0 "Ignore FILE of DIRECTORY (default is `default-directory').
>
> IF this function needs a docstring at all (which is not obvious since it=
 should be following vc-ignore), I think I'd rather this followed the latt=
er's docstring. Where the clarification about the default is not in the fi=
rst sentence.

vc-hg-ignore needs a docstring, since it exhibits specific behavior for th=
e backend (e.g. glob/regex syntax), which is not and cannot be covered by =
the rather generic vc-ignore docstring.

Most of the description in=C2=A0 vc-ignore is not even applicable to the b=
ackend specific functions, e.g. there is no interactive functionality in t=
he backend function and no backend is determined.

If a backend does not provide a vc-BACKEND-ignore function, vc-default-ign=
ore is invoked. This function has a docstring of its own (which contains t=
he clarification about the default in the first sentence). According to yo=
ur argument, this function should also have no docstring of its own. Howev=
er, I cannot see how both docstrings are equivalent.

vc-hg-ignore is modeled after vc-default-ignore, the docstring was copied =
from vc-default-ignore and modified to fit the implementation. I have modi=
fied the docstring further to match other backend specific ignore function=
s.

>
> Also, I think saying "Ignore FILE under DIRECTORY" would be better, if y=
ou intend to add this particular semantics to relative names.
All other ignore functions say "Ignore FILE under VCS". I have modified th=
e docstring accordingly.
>
>> +Otherwise, FILE is either relative to DIRECTORY or absolute. FILE
>> +is converted to a path relative to the project root of DIRECTORY.
>
> Isn't it a bit odd that vc-ignore's docstring doesn't specify this disti=
nction, and yet we're trying to implement it in vc-hg-ignore?

No. vc-ignore's semantic roots stem from SCCS/RCS/CVS/subversion with sing=
le directory ignore files. The ignore files for those VCS only contain fil=
e patterns.

For a VCS with subdirectories and a single ignore file at the root of the =
repository (Git, Mercurial), rooted and non-rooted expressions are handled=
 differently and the single directory ignore file paradigm fails.

>
> Do you have a particular reason for that?
Yes. It is the standard use case for ignoring something from vc-dir mode. =
As mentioned, the vc-default-ignore produces utterly useless results for G=
it and Mercurial in vc-dir mode.
>
>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 (concat pattern (and (file-directory-p file-path) "*=
"))))))
>
> I think it needs to asterisks for the glob to become recursive. At least=
 according to https://stackoverflow.com/a/255094/615245.
No, according to https://stackoverflow.com/a/255094/2127439, all of "bin/"=
, "bin/*", "bin/**" are equivalent under glob syntax. I also tested this s=
pecifically and extensivlely.
>
>> +=C2=A0=C2=A0=C2=A0 (lambda (_c)
>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (cons _c (concat "\\" (char-to-string _=
c)))))
>
> Our convention says that an argument whose name starts with underscore i=
s unused. That's not the case here, so it shouldn't be named like that.
OK.
>
>> +=C2=A0=C2=A0=C2=A0 (lambda (_c)
>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (or (cdr (assq _c vc-hg--py-regexp-spec=
ial-chars))
>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (char-to-string=
 _c))))
>
> Same.

OK.

New patch attached.


--------------731B6E72D1AAA2423C792EAD
Content-Type: text/x-patch;
 name="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.pa";
 filename*1="tch"

=46rom 81672e2909bca4ea4299301bbf4450e392b3a4f8 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Sun, 5 Jan 2020 04:29:28 +0100
Subject: [PATCH] Provide vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.
=2D--
 lisp/vc/vc-hg.el | 229 +++++++++++++++++++++++++++++++++++---------------=
-----
 1 file changed, 145 insertions(+), 84 deletions(-)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index eac9a6f..db84a28 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -142,9 +142,9 @@ If nil, use the value of `vc-diff-switches'.  If t, us=
e no switches."
 If nil, use the value of `vc-annotate-switches'.  If t, use no
 switches."
   :type '(choice (const :tag "Unspecified" nil)
-		 (const :tag "None" t)
-		 (string :tag "Argument String")
-		 (repeat :tag "Argument List" :value ("") string))
+                 (const :tag "None" t)
+                 (string :tag "Argument String")
+                 (repeat :tag "Argument List" :value ("") string))
   :version "25.1"
   :group 'vc-hg)

@@ -152,8 +152,8 @@ switches."
   "String or list of strings specifying switches for hg revert
 under VC."
   :type '(choice (const :tag "None" nil)
-		 (string :tag "Argument String")
-		 (repeat :tag "Argument List" :value ("") string))
+                 (string :tag "Argument String")
+                 (repeat :tag "Argument List" :value ("") string))
   :version "27.1"
   :group 'vc-hg)

@@ -233,35 +233,35 @@ highlighting the Log View buffer."
             (setq status
                   (condition-case nil
                       ;; Ignore all errors.
-		      (let ((process-environment
-			     ;; Avoid localization of messages so we
-			     ;; can parse the output.  Disable pager.
-			     (append
-			      (list "TERM=3Ddumb" "LANGUAGE=3DC" "HGPLAIN=3D1")
-			      process-environment)))
-			(process-file
-			 vc-hg-program nil t nil
+                      (let ((process-environment
+                             ;; Avoid localization of messages so we
+                             ;; can parse the output.  Disable pager.
+                             (append
+                              (list "TERM=3Ddumb" "LANGUAGE=3DC" "HGPLAIN=
=3D1")
+                              process-environment)))
+                        (process-file
+                         vc-hg-program nil t nil
                          "--config" "ui.report_untrusted=3D0"
-			 "--config" "alias.status=3Dstatus"
-			 "--config" "defaults.status=3D"
-			 "status" "-A" (file-relative-name file)))
+                         "--config" "alias.status=3Dstatus"
+                         "--config" "defaults.status=3D"
+                         "status" "-A" (file-relative-name file)))
                     ;; Some problem happened.  E.g. We can't find an `hg'
                     ;; executable.
                     (error nil)))))))
     (when (and (eq 0 status)
-	       (> (length out) 0)
-	       (null (string-match ".*: No such file or directory$" out)))
+               (> (length out) 0)
+               (null (string-match ".*: No such file or directory$" out))=
)
       (let ((state (aref out 0)))
-	(cond
-	 ((eq state ?=3D) 'up-to-date)
-	 ((eq state ?A) 'added)
-	 ((eq state ?M) 'edited)
-	 ((eq state ?I) 'ignored)
-	 ((eq state ?R) 'removed)
-	 ((eq state ?!) 'missing)
-	 ((eq state ??) 'unregistered)
-	 ((eq state ?C) 'up-to-date) ;; Older mercurial versions use this.
-	 (t 'up-to-date))))))
+        (cond
+         ((eq state ?=3D) 'up-to-date)
+         ((eq state ?A) 'added)
+         ((eq state ?M) 'edited)
+         ((eq state ?I) 'ignored)
+         ((eq state ?R) 'removed)
+         ((eq state ?!) 'missing)
+         ((eq state ??) 'unregistered)
+         ((eq state ?C) 'up-to-date) ;; Older mercurial versions use this=
.
+         (t 'up-to-date))))))

 (defun vc-hg-working-revision (file)
   "Hg-specific version of `vc-working-revision'."
@@ -429,19 +429,19 @@ If LIMIT is non-nil, show no more than this many ent=
ries."
   ;; read-only.
   (let ((inhibit-read-only t))
     (with-current-buffer
-	buffer
+        buffer
       (apply 'vc-hg-command buffer 'async files "log"
-	     (nconc
-	      (when start-revision (list (format "-r%s:0" start-revision)))
-	      (when limit (list "-l" (format "%s" limit)))
+             (nconc
+              (when start-revision (list (format "-r%s:0" start-revision)=
))
+              (when limit (list "-l" (format "%s" limit)))
               (when (eq vc-log-view-type 'with-diff)
                 (list "-p"))
-	      (if shortlog
+              (if shortlog
                   `(,@(if vc-hg-log-graph '("--graph"))
                     "--template"
                     ,(car vc-hg-root-log-format))
                 `("--template" ,vc-hg-log-format))
-	      vc-hg-log-switches)))))
+              vc-hg-log-switches)))))

 (defvar log-view-message-re)
 (defvar log-view-file-re)
@@ -455,35 +455,35 @@ If LIMIT is non-nil, show no more than this many ent=
ries."
   (set (make-local-variable 'log-view-per-file-logs) nil)
   (set (make-local-variable 'log-view-message-re)
        (if (eq vc-log-view-type 'short)
-	   (cadr vc-hg-root-log-format)
+           (cadr vc-hg-root-log-format)
          "^changeset:[ \t]*\\([0-9]+\\):\\(.+\\)"))
   (set (make-local-variable 'tab-width) 2)
   ;; Allow expanding short log entries
   (when (eq vc-log-view-type 'short)
     (setq truncate-lines t)
     (set (make-local-variable 'log-view-expanded-log-entry-function)
-	 'vc-hg-expanded-log-entry))
+         'vc-hg-expanded-log-entry))
   (set (make-local-variable 'log-view-font-lock-keywords)
        (if (eq vc-log-view-type 'short)
-	   (list (cons (nth 1 vc-hg-root-log-format)
-		       (nth 2 vc-hg-root-log-format)))
-	 (append
-	  log-view-font-lock-keywords
-	  '(
-	    ;; Handle the case:
-	    ;; user: FirstName LastName <foo@bar>
-	    ("^user:[ \t]+\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_=
.-]+\\)[>)]"
-	     (1 'change-log-name)
-	     (2 'change-log-email))
-	    ;; Handle the cases:
-	    ;; user: foo@bar
-	    ;; and
-	    ;; user: foo
-	    ("^user:[ \t]+\\([A-Za-z0-9_.+-]+\\(?:@[A-Za-z0-9_.-]+\\)?\\)"
-	     (1 'change-log-email))
-	    ("^date: \\(.+\\)" (1 'change-log-date))
-	    ("^tag: +\\([^ ]+\\)$" (1 'highlight))
-	    ("^summary:[ \t]+\\(.+\\)" (1 'log-view-message)))))))
+           (list (cons (nth 1 vc-hg-root-log-format)
+                       (nth 2 vc-hg-root-log-format)))
+         (append
+          log-view-font-lock-keywords
+          '(
+            ;; Handle the case:
+            ;; user: FirstName LastName <foo@bar>
+            ("^user:[ \t]+\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Z=
a-z0-9_.-]+\\)[>)]"
+             (1 'change-log-name)
+             (2 'change-log-email))
+            ;; Handle the cases:
+            ;; user: foo@bar
+            ;; and
+            ;; user: foo
+            ("^user:[ \t]+\\([A-Za-z0-9_.+-]+\\(?:@[A-Za-z0-9_.-]+\\)?\\)=
"
+             (1 'change-log-email))
+            ("^date: \\(.+\\)" (1 'change-log-date))
+            ("^tag: +\\([^ ]+\\)$" (1 'highlight))
+            ("^summary:[ \t]+\\(.+\\)" (1 'log-view-message)))))))

 (autoload 'vc-switches "vc")

@@ -545,7 +545,7 @@ This requires hg 4.4 or later, for the \"-L\" option o=
f \"hg log\"."
     (when (and (not oldvers) newvers)
       (setq oldvers working))
     (apply #'vc-hg-command
-	   (or buffer "*vc-diff*")
+           (or buffer "*vc-diff*")
            nil ; bug#21969
            files "diff"
            (append
@@ -584,7 +584,7 @@ This requires hg 4.4 or later, for the \"-L\" option o=
f \"hg log\"."
   "Execute \"hg annotate\" on FILE, inserting the contents in BUFFER.
 Optional arg REVISION is a revision to annotate from."
   (apply #'vc-hg-command buffer 0 file "annotate" "-dq" "-n"
-	 (append (vc-switches 'hg 'annotate)
+         (append (vc-switches 'hg 'annotate)
                  (if revision (list (concat "-r" revision))))))

 (declare-function vc-annotate-convert-time "vc-annotate" (&optional time)=
)
@@ -1102,9 +1102,9 @@ hg binary."
                (let ((vc-hg-size (nth 2 dirstate-entry))
                      (vc-hg-mtime (nth 3 dirstate-entry))
                      (fs-size (file-attribute-size stat))
-		     (fs-mtime (time-convert
-				(file-attribute-modification-time stat)
-				'integer)))
+                     (fs-mtime (time-convert
+                                (file-attribute-modification-time stat)
+                                'integer)))
                  (if (and (eql vc-hg-size fs-size) (eql vc-hg-mtime fs-mt=
ime))
                      'up-to-date
                    'edited)))
@@ -1210,7 +1210,51 @@ REV is ignored."
 (defun vc-hg-find-ignore-file (file)
   "Return the root directory of the repository of FILE."
   (expand-file-name ".hgignore"
-		    (vc-hg-root file)))
+                    (vc-hg-root file)))
+
+(defvar vc-hg-ignore-detect-wildcard "[*^$]"
+  "Regular expresssion to detect wildcards in an ignored file
+  specification.")
+
+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE under Mercurial.
+FILE is either absolute or relative to DIRECTORY (default is
+`default-directory').
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is processed unmodified.
+Otherwise, FILE is converted to a path relative to the project
+root of DIRECTORY.  It is then further escaped/expanded according
+to the active syntax in .hgignore.  If the syntax is `regexp',
+FILE is quoted as anchored literal Python regexp and if FILE is a
+directory, the trailing `$' is omitted.  Otherwise, if the syntax
+is `glob', FILE is used unquoted and if FILE is a directory, a
+`*' is appended.
+If REMOVE is non-nil, remove the pattern derived from FILE from
+ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory))=
)
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq file-path (expand-file-name file directory))
+      (setq root-dir (file-name-directory ignore))
+      (when (not (string=3D (substring file-path 0 (length root-dir)) roo=
t-dir))
+        (error "Ignore spec %s is not below project root %s" file-path ro=
ot-dir))
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$=
" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*"))))=
))
+    (if remove
+        (vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$=
\\)") ignore)
+      (vc--add-line pattern ignore))))

 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
@@ -1250,7 +1294,6 @@ REV is the revision to check out into WORKFILE."
     (add-hook 'after-save-hook 'vc-hg-resolve-when-done nil t)
     (vc-message-unresolved-conflicts buffer-file-name)))

-
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-revert (file &optional contents-done)
   (unless contents-done
@@ -1386,12 +1429,12 @@ REV is the revision to check out into WORKFILE."
 (defun vc-hg-log-incoming (buffer remote-location)
   (vc-setup-buffer buffer)
   (vc-hg-command buffer 1 nil "incoming" "-n" (unless (string=3D remote-l=
ocation "")
-						remote-location)))
+                                                remote-location)))

 (defun vc-hg-log-outgoing (buffer remote-location)
   (vc-setup-buffer buffer)
   (vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string=3D remote-l=
ocation "")
-						remote-location)))
+                                                remote-location)))

 (defvar vc-hg-error-regexp-alist
   '(("^M \\(.+\\)" 1 nil nil 0))
@@ -1413,30 +1456,30 @@ commands, which only operated on marked files."
     ;; `pull'/`push' VC actions were implemented.
     ;; The following is for backwards compatibility.
     (if (and obsolete (setq marked-list (log-view-get-marked)))
-	(apply #'vc-hg-command
-	       nil 0 nil
-	       command
-	       (apply 'nconc
-		      (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
+        (apply #'vc-hg-command
+               nil 0 nil
+               command
+               (apply 'nconc
+                      (mapcar (lambda (arg) (list "-r" arg)) marked-list)=
))
       (let* ((root (vc-hg-root default-directory))
-	     (buffer (format "*vc-hg : %s*" (expand-file-name root)))
-	      ;; Disable pager.
+             (buffer (format "*vc-hg : %s*" (expand-file-name root)))
+              ;; Disable pager.
              (process-environment (cons "HGPLAIN=3D1" process-environment=
))
-	     (hg-program vc-hg-program)
-	     args)
-	;; If necessary, prompt for the exact command.
+             (hg-program vc-hg-program)
+             args)
+        ;; If necessary, prompt for the exact command.
         ;; TODO if pushing, prompt if no default push location - cf bzr.
-	(when prompt
-	  (setq args (split-string
-		      (read-shell-command
+        (when prompt
+          (setq args (split-string
+                      (read-shell-command
                        (format "Hg %s command: " command)
                        (format "%s %s" hg-program command)
                        'vc-hg-history)
-		      " " t))
-	  (setq hg-program (car  args)
-		command    (cadr args)
-		args       (cddr args)))
-	(apply 'vc-do-async-command buffer root hg-program command args)
+                      " " t))
+          (setq hg-program (car  args)
+                command    (cadr args)
+                args       (cddr args)))
+        (apply 'vc-do-async-command buffer root hg-program command args)
         (with-current-buffer buffer
           (vc-run-delayed
             (dolist (cmd post-processing)
@@ -1458,7 +1501,7 @@ commands, which only operated on marked files."
                         (list compile-command nil
                               (lambda (_name-of-mode) buffer)
                               nil))))
-	(vc-set-async-update buffer)))))
+        (vc-set-async-update buffer)))))

 (defun vc-hg-pull (prompt)
   "Issue a Mercurial pull command.
@@ -1494,7 +1537,7 @@ call \"hg push -r REVS\" to push the specified revis=
ions REVS."
   "Prompt for revision and merge it into working directory.
 This runs the command \"hg merge\"."
   (let* ((root (vc-hg-root default-directory))
-	 (buffer (format "*vc-hg : %s*" (expand-file-name root)))
+         (buffer (format "*vc-hg : %s*" (expand-file-name root)))
          ;; Disable pager.
          (process-environment (cons "HGPLAIN=3D1" process-environment))
          (branch (vc-read-revision "Revision to merge: ")))
@@ -1522,6 +1565,24 @@ This function differs from vc-do-command in that it=
 invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))

+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (ch)
+      (cons ch (concat "\\" (char-to-string ch)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothing=
 else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (ch)
+      (or (cdr (assq ch vc-hg--py-regexp-special-chars))
+          (char-to-string ch))))
+   string ""))
+
 (provide 'vc-hg)

 ;;; vc-hg.el ends here
=2D-
2.7.4


--------------731B6E72D1AAA2423C792EAD--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 25 Dec 2019 00:16:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 19:16:38 2019
Received: from localhost ([127.0.0.1]:53179 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ijuLu-0002op-95
	for submit <at> debbugs.gnu.org; Tue, 24 Dec 2019 19:16:38 -0500
Received: from mail-wr1-f52.google.com ([209.85.221.52]:45151)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1ijuLr-0002oV-9Y
 for 37189 <at> debbugs.gnu.org; Tue, 24 Dec 2019 19:16:36 -0500
Received: by mail-wr1-f52.google.com with SMTP id j42so20826832wrj.12
 for <37189 <at> debbugs.gnu.org>; Tue, 24 Dec 2019 16:16:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:subject:to:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=1UhRI82Q+giNe9md14AzARSKxMzGrA9pXVb2RVEdpwQ=;
 b=o1otnbzYPVlLaYqwubezn5TXDKkgka5BROj8hVza/zxYxH+HxOGJOo9mU8FFchcqs2
 H3/dUG+q48lvggY6NjDRtk4e6LACmHrZoCFpRB0llY5QOp/mUzdTZ8XF1/1E5MG3lcE5
 4KGoecTCTUS/7SQDtP8Y7X1x1KgJETGt0D99OyaeOQ1ny7qpIQY0mR+kDl+HerRmuNjI
 j+b4fXJH51oTc5VkqQy0agRB35Fq30uHu6gAJBUzxlbdJmTVd8a83PUvW9MulpVW2JZ4
 M3ehD2okp9c9kvbAh/mTCq7Znw6Zj0bYQyMlGvKqxMNJOkQ2Kq4I8S4bg0NScgoWUCOY
 5oLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:subject:to:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=1UhRI82Q+giNe9md14AzARSKxMzGrA9pXVb2RVEdpwQ=;
 b=cobgYynU8+KFgO6MGsKB+TahNNLWzZD6K14JV4LhrrbIrj3a+v5/kW4cEwjwnj9JI4
 hMppj0mgoheqHB9/ERUEQ2X+fWGzLSXJjP/IwliaXrmhIRIr9v6/9S3LZWWv+ES5N3IJ
 S+0k1KnKgmpU7bZgqSro7AoX4oEBs/TlthuY5ojKZXYAkcSsn1JgfYeRE1lzQM9UScPi
 p7bfWye5Eb4pIFWFsEvtHDbENPFHZILRmaJkVasQsdjC2rOBzkmfgkL6HtIpItHQhW1I
 gpu4Yle3ow49KAcOH8vjoYOZEwNje0DkRZPqoOYdibCLlQwrp3/Id5eIChbSni3x7Z13
 VTSg==
X-Gm-Message-State: APjAAAUCp+XWY+SNrZMLgE469gQ2yVK1CdFi5HuXwkn4a6NJqCYl+kWw
 QlFJDnrLSAFiVhBTPQgWPRKHgJq+Olk=
X-Google-Smtp-Source: APXvYqziY5aRH8XnqjI16IusGnWwfZ5BvJXMMb3+YHe4wxofi85Bdj6YIb0OmydI99BoTKWUdK8cKg==
X-Received: by 2002:adf:f491:: with SMTP id l17mr36688935wro.149.1577232989258; 
 Tue, 24 Dec 2019 16:16:29 -0800 (PST)
Received: from [192.168.0.2] ([212.50.117.215])
 by smtp.googlemail.com with ESMTPSA id z124sm4204551wmc.20.2019.12.24.16.16.27
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 24 Dec 2019 16:16:28 -0800 (PST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>, 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
 <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <412195c1-e196-12af-933b-0312f5075847@HIDDEN>
Date: Wed, 25 Dec 2019 02:16:27 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

Hi Wolfgang,

On 29.08.2019 18:52, Wolfgang Scherer wrote:
> +  "Ignore FILE of DIRECTORY (default is `default-directory').

IF this function needs a docstring at all (which is not obvious since it 
should be following vc-ignore), I think I'd rather this followed the 
latter's docstring. Where the clarification about the default is not in 
the first sentence.

Also, I think saying "Ignore FILE under DIRECTORY" would be better, if 
you intend to add this particular semantics to relative names.

> +Otherwise, FILE is either relative to DIRECTORY or absolute. FILE
> +is converted to a path relative to the project root of DIRECTORY.

Isn't it a bit odd that vc-ignore's docstring doesn't specify this 
distinction, and yet we're trying to implement it in vc-hg-ignore?

Do you have a particular reason for that?

> +                (concat pattern (and (file-directory-p file-path) "*"))))))

I think it needs to asterisks for the glob to become recursive. At least 
according to https://stackoverflow.com/a/255094/615245.

> +    (lambda (_c)
> +      (cons _c (concat "\\" (char-to-string _c)))))

Our convention says that an argument whose name starts with underscore 
is unused. That's not the case here, so it shouldn't be named like that.

> +    (lambda (_c)
> +      (or (cdr (assq _c vc-hg--py-regexp-special-chars))
> +          (char-to-string _c))))

Same.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 29 Aug 2019 15:52:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 29 11:52:30 2019
Received: from localhost ([127.0.0.1]:52828 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i3Mir-0002OB-Qr
	for submit <at> debbugs.gnu.org; Thu, 29 Aug 2019 11:52:30 -0400
Received: from mout.gmx.net ([212.227.17.21]:40337)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i3Miq-0002Nv-A6
 for 37189 <at> debbugs.gnu.org; Thu, 29 Aug 2019 11:52:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1567093942;
 bh=SKwusrIAdD+k5fme6fG7cYM5lUdmpmAKz9rvvTdXw64=;
 h=X-UI-Sender-Class:Subject:From:To:References:Date:In-Reply-To;
 b=BHkEZM6CLsFL6hFtG/Zm6Dh4B7Cai5Q9iuaGX7rCeDTxZ6S1US/KqhM5lqfD1u2E4
 48hGfI61mrgimmDhSgAnz4adMtatMLwXafS4f0bHw35Pt6QvqDba+0zd8PWyckENtz
 fEAgEzIP+SfMyJNZAJUMDbX+5Hfv1fBqD9uDCgVE=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([91.11.52.253]) by mail.gmx.com (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MDQic-1hssaZ3wDm-00AYhW for
 <37189 <at> debbugs.gnu.org>; Thu, 29 Aug 2019 17:52:22 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 55C531942B0A
 for <37189 <at> debbugs.gnu.org>; Thu, 29 Aug 2019 17:52:21 +0200 (CEST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
To: 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
 <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <b8d1f5c9-8df1-f090-3c05-83fa821427e2@HIDDEN>
Date: Thu, 29 Aug 2019 17:52:21 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
Content-Type: multipart/mixed; boundary="------------BB93B7EA1E25CF4D3F739CCB"
Content-Language: de-DE
X-Provags-ID: V03:K1:l3k3yFrjC2xszHjSrDVqZm0LOENb7PhP2COZ2w3zz/6mWgpmBQh
 2UuuOhgI/COlYU12++3XCf/d/ZRUxnTrMzJl+lDODkZo6ZH463IrXIvuoyLY1dJ1+RadUh7
 tUedxtgnS9y9jRJ9Vz7LzcdV/MlAfHJJQulWNSk0znLCRA4t5qiOb8EIbOw2EkWTiVkzCDe
 oSTxuU3VzV8LwFs7ATJHw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:8KIS3uXDUWM=:+/mcNd4QgoDj3SiluFJS0N
 GZZaBuoEkTT8W4fMGg4/TRK+0wtBJz+umBSG5auxGImV/xf9eWgfZXH7KutRe3a03XI4YDjD1
 LV5e1msMfWi/RBVgzimLXYZp9iSSFvXUbUJtqQD+H4uuekoAt59zeNwimYYFAUDISBdhof0Z+
 jLRsLHJBAKl0Y54rEs51SzvfP9Su9kBGEiG1t10XAzpkd2URTlur9LbAufpr1v26MaeRQ49/L
 SfSKtRDScbqxEtgsYyM/WUkMlaOUPH3Z1ZKpJNM8UHwe032FrD3cMymf+qZC6/yUXzj3AKlOz
 xjo5IQEn5yi8wRX7gMHMCAElT5xjsCQJ2ti28xkdaeOJDTZv4GF/TlnT+Vvao7WAf2UFhoJ6n
 QW8uHcsoTEt3M86Ug7lA1VG/jprteKXXqz0N705EIiahvi/BpAi4PsWDY0jn31fq5TQJTZuSR
 YqF3dpHoEC12Guwr4zpsMh7Ff6GVQIVUy+iGiWoaw9seSQMnm/6fDZSj6yMYhhSI+HBXfhYNC
 n0wLF59qO4zNCeABa/OxoHawgt71h6Nau0/IC2zVdCIR8yJvdOMCKAbS9T9HUX65XWQh7jeL9
 4nlXKwzo/QOWdY6GI4WvHNj/3v2OVHjNJFxB+oX2YVZ2xIt7kXk4oHzQx2WIN6MbUAS6Hr+gV
 wPDLt3J1g9xVriWAxeu3xRK2V8ShJ5DrrJzfHdjDO17NF2B1mRNhn9vz9lK0G1VB7PR5mMjP2
 k3FACxMQsVEvvQePEQxrgvrShJwvmxRY3ZZ8Ujmup4bRokkLtyJA5nEEAc34FfhsmqFEtIe1E
 Dimf1uMj7rayu8ouFFH5saOPLOpOdjc21YRNe75P2e+WEioQoHQXkrhzQzNCMpIgFDYNJ4BnI
 HX9n24oiPoh5SzTyMLD9tfsISwnnYqhbarNlch0hH7pDoif/7UNH65ki90FZJtVQ1Y1vNENU0
 D5dqZ8tJnaUO1guvnJBTWzCt7z3lqEtjq2CNjKEyyTaDmbLeantibBgwBXe4P9wshJbMKjG6E
 2EqGsVI9cqWnokoMVhBSV53NxjjoaDCUNQaUqgFk9hdZFVLwZTK8V28xhAZThUSvd+qpt60i7
 2dEnVh9Q3/RUr6y2ziwIRAguTW63kF1AdOtacAc6tUZ6fXkL1Yg+kcDnSmqz6AC+W0c9QGxlm
 PrObwWDiBSKDPV9Kx8R5KVMuSGgOMAs2T+h3ATJWzsaBBrIA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------BB93B7EA1E25CF4D3F739CCB
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

A unit test showed, that the removal regexp was faulty. New version of patch attached.


--------------BB93B7EA1E25CF4D3F739CCB
Content-Type: text/x-patch;
 name="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provide-vc-hg-ignore-to-make-vc-ignore-work-correctl.pa";
 filename*1="tch"

=46rom 4fb25acadedc81a6d654bed89e816906aff07178 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Thu, 29 Aug 2019 17:49:54 +0200
Subject: [PATCH] Provide vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.
=2D--
 lisp/vc/vc-hg.el | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++=
+++++
 1 file changed, 62 insertions(+)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index f287adf..9cbd9d4 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1153,6 +1153,50 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))

+(defvar vc-hg-ignore-detect-wildcard "[*^$]"
+  "Regular expresssion to detect wildcards in an ignored file
+  specification.")
+
+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE of DIRECTORY (default is `default-directory').
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is appended to .hgignore
+unmodified.
+Otherwise, FILE is either relative to DIRECTORY or absolute. FILE
+is converted to a path relative to the project root of DIRECTORY.
+It is then further escaped/expanded according to the active
+syntax in .hgignore.  If the syntax is `regexp', FILE is quoted
+as anchored literal Python regexp and if FILE is a directory, the
+trailing `$' is omitted.  Otherwise, if the syntax is `glob',
+FILE is used unquoted and if FILE is a directory, a `*' is
+appended.
+If REMOVE is non-nil, remove the pattern derived from FILE from
+ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory))=
)
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq file-path (expand-file-name file directory))
+      (setq root-dir (file-name-directory ignore))
+      (when (not (string=3D (substring file-path 0 (length root-dir)) roo=
t-dir))
+	(error "Ignore spec %s is not below project root %s" file-path root-dir)=
)
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$=
" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*"))))=
))
+    (if remove
+        (vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$=
\\)") ignore)
+      (vc--add-line pattern ignore))))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
@@ -1451,6 +1495,24 @@ This function differs from vc-do-command in that it=
 invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))

+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (_c)
+      (cons _c (concat "\\" (char-to-string _c)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothing=
 else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (_c)
+      (or (cdr (assq _c vc-hg--py-regexp-special-chars))
+          (char-to-string _c))))
+   string ""))
+
 (provide 'vc-hg)

 ;;; vc-hg.el ends here
=2D-
2.7.4


--------------BB93B7EA1E25CF4D3F739CCB--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 29 Aug 2019 01:23:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 28 21:23:23 2019
Received: from localhost ([127.0.0.1]:51430 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i399m-00036i-Pm
	for submit <at> debbugs.gnu.org; Wed, 28 Aug 2019 21:23:23 -0400
Received: from mout.gmx.net ([212.227.17.21]:35643)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i399k-00036S-Af
 for 37189 <at> debbugs.gnu.org; Wed, 28 Aug 2019 21:23:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1567041791;
 bh=afhy3k9Xo1iqmjhtk/BfWgsdDEYxy7JUhBwpdS1IQ3Y=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=MnJsAwCfP+p2OmhtV0WmRk/2tqRVR+pRdDQoE0cU5/R1hJnXeL9dHYRJ8VcasQj9M
 GG6udVqR12fMf1ezZo4GVEaS3JpVpWShYEKpIv+FuY7m2T1diOvXATu/mG2DqqGp+L
 dUR3fgI5AUGwfuClvOovYECp9gy+FV2pZpcYDWx0=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.144.41.174]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mnpnm-1iZhw51XDO-00pIIf; Thu, 29
 Aug 2019 03:23:11 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 9E1BA1942B0D;
 Thu, 29 Aug 2019 03:23:09 +0200 (CEST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN> <83sgplddbv.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <338bfe07-2d7b-1014-dfcd-e358e6844833@HIDDEN>
Date: Thu, 29 Aug 2019 03:23:09 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <83sgplddbv.fsf@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Language: de-DE
X-Provags-ID: V03:K1:42LdGEqnu5SHMic7bPEiIqj0Cq+wtTE1C2E7koduKUkg/I2D6Pc
 yBO4AjauCexGNFlqQTGqQ/3B5JS0GxrnkpT4vTGW5S/YkIOKiEHkM524OyTbRI4Zkh7Mq1C
 sZLK0Rz4xdujmM0klOWklYYBxDCG2/LEivdMsDHmpySqL6QXIcVfNc/Bd0mJyOYcob9Qh0i
 zSSZsLs7WsolCMEalc/3w==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:do8YAS0BK7w=:UpekiNZm/IChV78lVDYujj
 hwG6eYWiS4GxMmQN/CeoEmopMec+HWxSVTs/18M5njkbecm1xiKX7nuxHL1hK9opzua0VgH6c
 QY/byIGh+N/dY5G3Ay/7oTM1//SSJRa0hb18lbmEb6yXlAFgjpyDnmKDk25FIGUlqRRKxEp+J
 nfa40WSVxazuTyEyzKv+wClvMSSXRArZa6+bKk7p7pAaMn2wv2euKJFW4/1CNm8JsCDX5XvVk
 Dqf4Nh1dedPCZZIFR12teLJt/YPOmYCK7kBwEs2tvNqizMTxa012RFWxQRVaiJ4MfPJfEEKBg
 k6jPi0h/GedIayQpxCQAu17R/4W8nUGjaiT6tZI3ylr+mxWExjIKX3d4F2ueieJoqnKFZLMzm
 PLlPgs/lfDQ0dIb8xZ+GGrYFY13A9V9VP9aNIOvRxFSj1JHJdD1e9JhSYl0ZQr4d5CwJJXPdS
 Xt0nG2yEiLr/UDInInAM8o/c0+t5w2ZJRpEc+8B6o4UwTske8EH12fd6PZIZ0A5vIyRJaEhzM
 nXgAmj+0aLOaL4I24nwVLMzrGaAdgvTX5DmoaIuqbkXMgtlTFYzghVLm+Jy5AvXxY2yDiGmPf
 PA3Ld8dT794wNarq5zdEXfke8aYHklhhX6ZIHRkTxl3Da270XBzNaSm0LHIa/6X7D3WBzqqKa
 Nh5bx3+s3NJeMdSaXgN2U4iQrRkfgQnyf6vcHYgXhmMyT8gGM/qRFbH0qADl8L8+KA2IuzbQp
 ksA9cu87EMsslSo2Dn8azXQRZglpQKNTRIVyGkHCvk9L80Ibgc946Sv4UPHzyr83NjmH/dT2W
 LAzNJBzq5O54IscV4tiPSHTJMSTy9Iq8R7zTon+T8oMAFJUGPYxWNkzwJmL5l4r+Sttv+c/M5
 Q2UvwNJ2tnRlUnj02iIrCJdb4VzB0SYtMfhuW4csSIzYLQBcgH1g3tWcoJKXQCotS06LhLjJF
 Ai0f9WTJtxtGtHcmnYdJgalfvjFw1PBJO97rsWoG8u5SQRxg8T2WAXScol9qWWi1iAdzpXQOF
 v3Xzc2eobS5l3aDfQpz+FAh/gDd3d4JFOZhhhAho/6uWRPtBmOrgbO4u9Qs8n59REFb168EdB
 Pm08fDki9LwwhwUMQs7PCtczOuB5DaENm/QWf2SDYmtChyBma+kcOzVda+6b8wEMrPitErfs3
 3QztQ=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


Am 28.08.19 um 08:16 schrieb Eli Zaretskii:
>> Cc: 37189 <at> debbugs.gnu.org
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Wed, 28 Aug 2019 03:46:53 +0200
>>
>>>> +(defun vc-hg-ignore (file &optional directory remove)
>>>> +  "Ignore FILE of DIRECTORY (default is `default-directory').
>>>> +
>>>> +FILE is a file wildcard, relative to the root directory of DIRECTOR=
Y.
>>> I think instead of "root directory of DIRECTORY" this should say "the=

>>> top-level directory of DIRECTORY's repository".
>> I disagree. This comment is a modified version of the comment for
>> `vc-default-ignore'. And the exact same phrase also pops up for
>> `vc-svn-ignore':
> But do you agree that the alternative text I proposed is more accurate
> and more clear?  If so, we might wish to change all those places to
> use the better wording.  It could be a separate commit, of course.


I agree, that the text should be corrected (and I already did so
for `vc-hg-ignore').=C2=A0 I do not agree to introducing the term
`top-level directory' as replacement for `project root'.

However, the problem here is not the wording, but the
incorrect/incomplete implementation of various
commands/functions. (Actually, not a single handler
implementation is correct. Not even CVS.)

1. `vc-ignore' provides the API specification for the
=C2=A0=C2=A0 backend-specific implementations:

=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under the VCS of DIRECTORY.

=C2=A0=C2=A0=C2=A0=C2=A0 Normally, FILE is a wildcard specification that =
matches the files
=C2=A0=C2=A0=C2=A0=C2=A0 to be ignored.=C2=A0 When REMOVE is non-nil, rem=
ove FILE from the list
=C2=A0=C2=A0=C2=A0=C2=A0 of ignored files."
=C2=A0=C2=A0
=C2=A0=C2=A0 Based on this API, mentioning the project root at all does n=
ot
=C2=A0=C2=A0 make any sense.

=C2=A0=C2=A0 If the wildcard specification is relative, it is relative to=

=C2=A0=C2=A0 DIRECTORY (or default-directory).=C2=A0 It is definitely not=

=C2=A0=C2=A0 relative to the project root.
=C2=A0=C2=A0
2. `vc-cvs-ignore' implements only the appending part, but does
=C2=A0=C2=A0 not implement the `remove' option.

=C2=A0=C2=A0 When appending, the correct .cvsignore file is identified,
=C2=A0=C2=A0 but when called with an absolute filename (which is the
=C2=A0=C2=A0 default case), it writes the entire path into the .cvsignore=

=C2=A0=C2=A0 file.

=C2=A0=C2=A0 `vc-cvs-ignore' also writes duplicate strings into .cvsignor=
e.

=C2=A0=C2=A0 I submitted a patch for these errors as bug#37215.

=C2=A0=C2=A0 (And yes, I still have a bunch of old unconverted CVS reposi=
tories ;-)).

3. When `vc-svn-ignore' starts a new `svn:ignore' property, The
=C2=A0=C2=A0 function `vc-svn-ignore-completion-table' parses an error
=C2=A0=C2=A0 message as ignore patterns. The split also matches any
=C2=A0=C2=A0 whitespace instead of lines only. I have submitted a patch f=
or
=C2=A0=C2=A0 these errors as bug##37214.

=C2=A0=C2=A0 `vc-svn-ignore' states:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under Subversion.
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FILE is a file wildcard, relative to the r=
oot directory of DIRECTORY."

=C2=A0=C2=A0=C2=A0 This is just not true. The correct description is:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Ignore FILE under Subversion.
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FILE is a wildcard specification, either r=
elative to
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DIRECTORY or absolute."

=C2=A0=C2=A0=C2=A0 `vc-svn-ignore' gets the relative filename right (in a=
 manner
=C2=A0=C2=A0=C2=A0 suitable for Git), but then fails to add the ignore sp=
ec to
=C2=A0=C2=A0=C2=A0 the correct subdirectory, if the relative path has at =
least
=C2=A0=C2=A0=C2=A0 one level of directories. A patch is supplied as bug#3=
7216.

4. This leaves `vc-default-ignore'.

=C2=A0=C2=A0 Both the description and implementation are wrong.

=C2=A0=C2=A0 Only the basename of FILE is written to the ignore file. Thi=
s is
=C2=A0=C2=A0 wrong for all filenames relative to project root with one or=

=C2=A0=C2=A0 more parent directories.

=C2=A0=C2=A0 The remove option is also implemented incorrectly.

=C2=A0=C2=A0 A patch is supplied as bug#37217.

The mentioned commits replace all occurences of the incorrect description=
=2E






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 29 Aug 2019 00:38:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 28 20:38:49 2019
Received: from localhost ([127.0.0.1]:51414 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i38Sf-0001sV-CD
	for submit <at> debbugs.gnu.org; Wed, 28 Aug 2019 20:38:49 -0400
Received: from mout.gmx.net ([212.227.15.18]:55267)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i38Sc-0001sG-Fy
 for 37189 <at> debbugs.gnu.org; Wed, 28 Aug 2019 20:38:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1567039118;
 bh=HFiclVDHG3FyTK2AfDCL25r2r07UAo9mXjx0hTxZPJE=;
 h=X-UI-Sender-Class:Subject:From:References:To:Date:In-Reply-To;
 b=BLtV9tt1JtCX1O5e/XOnSp+UepJM9sui7LlBM6T3my3qEei9pqjMyeh/45ExuX20R
 73+5g2Kpub1d+nJVfZy8oZY/AyKoHIvNxv8yv6UP/9gwJx90kmFJQojGIGkaD1lxQu
 JhDI45Q3KyEglP+S5Ug4XYQBA5/0pYfCkkPbAkpU=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.144.41.174]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MCKFk-1htonn3YiA-009M7Q for
 <37189 <at> debbugs.gnu.org>; Thu, 29 Aug 2019 02:38:37 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 512371942B08
 for <37189 <at> debbugs.gnu.org>; Thu, 29 Aug 2019 02:38:35 +0200 (CEST)
Subject: Re: bug#37189: 25.4.1: vc-hg-ignore implementation is missing
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
To: 37189 <at> debbugs.gnu.org
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <95da41e8-7a55-a15c-cfa7-d70366f9ee6b@HIDDEN>
Date: Thu, 29 Aug 2019 02:38:35 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
Content-Type: multipart/mixed; boundary="------------C2C254D10BDE3CD80CBB2097"
Content-Language: de-DE
X-Provags-ID: V03:K1:dFVFtcDgAN+nXoyOm8HXfqIAVQm8G1GKeKFWU7nOy6hrxVBmbRE
 M/1gC5FX63dUvalBh071VQkVMWuI7odLinXcIdFsT4jnXGvOibH0G7ueEPkRmMKnAnLJaXl
 HV0pC1xBEs4nBPZU9yCdu56gs0kq6wjwbxM5q3rAK8hNM733UYxc1Jr1Jkkxt9g9YCPFf6D
 uTSwCP3ZqA0DXhVwG6Nvg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:nWCx/Hbfyrw=:cVFZqoX0S8cYBISsiPOuRO
 gGKfJpf8k7WtPF4cyY7jV1+qpltk/4p25obavXEvgJVu5dzLz6zNn8kEIQKoRXIYqdf6HoCBO
 ZTlQ54KrEVHWW1N/QEohYsRkNAPexIN3j3FcZACf5bjkG5rWWVcGDjyi23DRuy6SLIlFIfp4a
 AMCmkkNr2B90n57NmVhu4U1ymVT40m2UMm9P/HmdmqqFJ6RfHkvGuQpKubVSiUACDNR0SN6zV
 0Y1PDTf3//qWcen3Cv2N063mHcU+8aMChOHhDSC1JqV8xpt6x7hxpBIHSn2DTeGpVNRZ+wdfx
 oeuvkSBeEtn4nhrxjNYzKwhTzTPjLcofEYm2sRFWUm6GN18CCcty2CbIA6CVYCDhqsypYYocp
 1HkRlsk5GPncmURY+m9Neyz2BnsnJu22hHq62sLiVfBZ+s/2dHIQvac31Hwqanj1dlSn5EOWM
 0+fTsfoLjsrQ6uf2Sc2LNXx5YE5IaPShx6QUpHLcUBaw1evufJ6cuHt3nEhGEU5O9Vhzq1/pW
 E6JEOqdJzxoBz8IwCV/HG4f3fHzpecRCulLD61lBx+/r952Nsu0jKjO5PzVJe0VOAFUig2EwJ
 Ke56FepW8TBIH8yvJEkqeK/CTQMyXWgLwc6vG7TyO5t4z6UkMpx3k8lhq8X37SdewVyYymIPf
 YFhZTFVqACtaXf6m/hZax9PjeWRENrsneHFbPibd+ICTaxT23L9WRnBcdMJfXEP9LWPYa20A4
 vHGuNVhZFoV7uj/hI/LjjzTL89Srt3TS5E7COm7POeFCF2lsvfX7ZzaIfqMHS9qN3Hl5aMazo
 mnTonm/CXgXwWhbCFjwstFoEGlWjKz8Q5Y+5h3WdLHF0HgtEnZ/cqZDDfIw7H+Nj+q2U6Gy6c
 ZVdgsaAuK7PfER6Rjr5Uky4gb6ySPoIp52BqvTmpk2jX1FlqFlu6+tVYuHUfgMuBiSoFL4GZf
 vEsdQ3kpzmk1n7mhKRmz3oEIQ/dIwIUC5sHghm/PoHF9z3GVNKd8sjwTnGR2Sm6YgS9gCAoUB
 NikeApgWr+pdhfZNFStXqg+5sSDCoJbEEQ/o4WWhgBwTdQVXKHOVkeMc/W2vZNs8SMIASVVGn
 g876H88tfMVHUX3BMnbPDaLWgl6YDkx/GaGRV9OfDdatO6EGRVDhNUfJJe9HGnwNIAP8mou3H
 8ztjEoO78E7Bfa80VEnvczuzqBQT9r6S0tJ1tFjTej8cD80A==
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.
--------------C2C254D10BDE3CD80CBB2097
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Small fix for option remove. New version of patch attached.


--------------C2C254D10BDE3CD80CBB2097
Content-Type: text/x-patch;
 name="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.pa";
 filename*1="tch"

=46rom 4f95f6de3ec429dc2db632514b43e3773e048505 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Thu, 29 Aug 2019 02:34:17 +0200
Subject: [PATCH] Provides vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.
=2D--
 lisp/vc/vc-hg.el | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++=
+++++
 1 file changed, 62 insertions(+)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index f287adf..cf51833 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1153,6 +1153,50 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))

+(defvar vc-hg-ignore-detect-wildcard "[*^$]"
+  "Regular expresssion to detect wildcards in an ignored file
+  specification.")
+
+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE of DIRECTORY (default is `default-directory').
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is appended to .hgignore
+unmodified.
+Otherwise, FILE is either relative to DIRECTORY or absolute. FILE
+is converted to a path relative to the project root of DIRECTORY.
+It is then further escaped/expanded according to the active
+syntax in .hgignore.  If the syntax is `regexp', FILE is quoted
+as anchored literal Python regexp and if FILE is a directory, the
+trailing `$' is omitted.  Otherwise, if the syntax is `glob',
+FILE is used unquoted and if FILE is a directory, a `*' is
+appended.
+If REMOVE is non-nil, remove the pattern derived from FILE from
+ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory))=
)
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq file-path (expand-file-name file directory))
+      (setq root-dir (file-name-directory ignore))
+      (when (not (string=3D (substring file-path 0 (length root-dir)) roo=
t-dir))
+	(error "Ignore spec %s is not below project root %s" file-path root-dir)=
)
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$=
" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*"))))=
))
+    (if remove
+        (vc--remove-regexp (concat "^" (regexp-quote pattern ) "\n?") ign=
ore)
+      (vc--add-line pattern ignore))))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
@@ -1451,6 +1495,24 @@ This function differs from vc-do-command in that it=
 invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))

+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (_c)
+      (cons _c (concat "\\" (char-to-string _c)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothing=
 else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (_c)
+      (or (cdr (assq _c vc-hg--py-regexp-special-chars))
+          (char-to-string _c))))
+   string ""))
+
 (provide 'vc-hg)

 ;;; vc-hg.el ends here
=2D-
2.7.4


--------------C2C254D10BDE3CD80CBB2097--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 28 Aug 2019 06:16:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 28 02:16:40 2019
Received: from localhost ([127.0.0.1]:49752 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i2rG1-0006n6-WC
	for submit <at> debbugs.gnu.org; Wed, 28 Aug 2019 02:16:40 -0400
Received: from eggs.gnu.org ([209.51.188.92]:60187)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1i2rG0-0006mv-TU
 for 37189 <at> debbugs.gnu.org; Wed, 28 Aug 2019 02:16:37 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:44453)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1i2rFv-0006Wc-Mh; Wed, 28 Aug 2019 02:16:31 -0400
Received: from [176.228.60.248] (port=4217 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1i2rFu-0004CW-Sx; Wed, 28 Aug 2019 02:16:31 -0400
Date: Wed, 28 Aug 2019 09:16:36 +0300
Message-Id: <83sgplddbv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN> (message from
 Wolfgang Scherer on Wed, 28 Aug 2019 03:46:53 +0200)
Subject: Re: *** GMX Spamverdacht *** Re: bug#37189: Acknowledgement (25.4.1:
 vc-hg-ignore implementation is missing)
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
 <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 37189 <at> debbugs.gnu.org
> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Wed, 28 Aug 2019 03:46:53 +0200
> 
> >> +(defun vc-hg-ignore (file &optional directory remove)
> >> +  "Ignore FILE of DIRECTORY (default is `default-directory').
> >> +
> >> +FILE is a file wildcard, relative to the root directory of DIRECTORY.
> > I think instead of "root directory of DIRECTORY" this should say "the
> > top-level directory of DIRECTORY's repository".
> I disagree. This comment is a modified version of the comment for
> `vc-default-ignore'. And the exact same phrase also pops up for
> `vc-svn-ignore':

But do you agree that the alternative text I proposed is more accurate
and more clear?  If so, we might wish to change all those places to
use the better wording.  It could be a separate commit, of course.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 28 Aug 2019 01:47:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 27 21:47:16 2019
Received: from localhost ([127.0.0.1]:49662 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i2n3L-0008SG-OZ
	for submit <at> debbugs.gnu.org; Tue, 27 Aug 2019 21:47:16 -0400
Received: from mout.gmx.net ([212.227.15.19]:51717)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i2n3J-0008Rz-5k
 for 37189 <at> debbugs.gnu.org; Tue, 27 Aug 2019 21:47:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1566956818;
 bh=ze0lqPucFMrrfROgp2Mdm6xIuWlN4eRMomfFFcY4xkY=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=JvYERbbnmgyoF64Mm6TIxqoP9mIM2zNsCiHHrndWo8jSPhVDQS1ZW+iY60KvLw5VZ
 XVNELuYtWduyBRuUZx6nUiUSzagHrdKh3ZWAd5ovkkqRl6R/d5fjfpZiyTYmo8AVJJ
 RdQ004KwzVp3hGSkM37+w2vQvne8IpJ5JTJtTOQo=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([91.11.63.178]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7Jza-1i8GA20qDc-007o8w; Wed, 28
 Aug 2019 03:46:58 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 129971940B9C;
 Wed, 28 Aug 2019 03:46:53 +0200 (CEST)
Subject: Re: *** GMX Spamverdacht *** Re: bug#37189: Acknowledgement (25.4.1:
 vc-hg-ignore implementation is missing)
To: Eli Zaretskii <eliz@HIDDEN>
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> <83pnkrdpb3.fsf@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <679942e8-abe9-b0fc-720d-75a54d8d0b5a@HIDDEN>
Date: Wed, 28 Aug 2019 03:46:53 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <83pnkrdpb3.fsf@HIDDEN>
Content-Type: multipart/mixed; boundary="------------9502C6ADCA8D0AB4A8A08F29"
Content-Language: de-DE
X-Provags-ID: V03:K1:i+kM6DUNJbGA8Av+RHukvNSLoIHkpc7z/ncrDzFnA36PAVfrUTM
 +/+PjU/NyXulfQr6I+E8i7bWL5JuruYMAre8y/hP96tcLztL89bm9ePTE+Ug01wwV9nci2C
 vzv9+Ds55p8T88JVmned6z85F8AWwtxB16ZxZLXX0dYgYf/3/J4z5/dW7nukF+XQSTzy1Gp
 Fko+Pe7LeFw9OvbC5wR3A==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:U/mDuEMzZpg=:NLH48F+0/dM7Z1doKM2gXI
 0QVqGdHuu6S+c73q2zV3FoJ+2OJcgKolUXKfL7Pn1nnZnU4LZdxTJ4IdAKV++TZrX5UkAUXY+
 5Y/C3x5zJOK/S8LQUclpSBWM2dpflleO8YcnUv8IuzqZKx/M2Q+bd+T9op+90g4kGrGJBvr15
 JSlo8fXfragFfBgUIJNkDwzLxKHIEWCy+HPzgAUhwX7mEB5V+QI9qqPhkZl5sukMFfm4fB2Wd
 xlpjhOwJvPrVP6Fhn90J9WoN4TxJz9qNGMV6FHDjFFLYVrWIJvtVjp43XMOL/hPGSoUBbbTbs
 s8pDYQAkHKHQKdZnO60QgL91d6EVvwdMBaFDDKDgOU9o9DKS54QY+fYiFwT0dU+sy/6v2MhbO
 yzjSxhBnyZ667k579sRPYhn/ARrucYoBI9CXzqZH6IMaWqoNmgAv1TRtebMFKvowiRc4Y1QRS
 KzrA1Z1Gnj2KAG/wqyOgd4xWDQJyurgwHgAM5UiB/5BQ3p1Cs1Skm58Oe1CllWQKyZt7AkTQJ
 dt/dTeMYD2kBcMs2bacS4GtdRrSVvWML//9fmDY+traOj1F+L5ETaTKkdJU6G73CQBdakIL9a
 fU+P/wvRyMCfIUCdflhk3cXLJuwmhvb5bH591XpxvloBd4IPpyNvNb4ea5/u+oPhxBTCo17CV
 xmDrpGzrX/pJidF7xRO90ENjD0jrXojzXTwHzLYVIC0ziMk8TqxVC7kIwVKWT0Haf7m/pTD5z
 ciF4MdeSm1qv8InZMpzDqhC7Xu5q8P4zBJVEjOntVsQdK0/6LilXxlXFmX2N0/SrU/F+X5J7o
 AAqxUMVo5eKmrISguX6WH8/rKV3+kmBeYhUQfSPKkXrgViwON2hTKlWm9gGeHTqqFs/+gjXP+
 rq9xb615La3MPwDXopMlbV606UPJjY/HIj4tidP6TThbmzpHdIiKYYP1BoQC3ukHI6Xf8gJ61
 Lhci1i1kbW8ZnIqpbtB4bV0fCBL+AU3EgL2X5Tkvt+R/u0YfEz9FGNV9d/ZpwVDQaM8mgObZC
 NMWEU7agJKGMcA/yUn6fTHIVCUH7JjeAv9cIJyCNcEZYV3HIxEtrCV+V8BxtO4FKwAFQTRhTb
 BNtPiE9GDm5gyLsaWytW0J3AouWlhjZfzG24R8y8GS6p42BEGMw7GZIUQ==
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.
--------------9502C6ADCA8D0AB4A8A08F29
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Am 27.08.19 um 09:45 schrieb Eli Zaretskii:
>> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
>> Date: Tue, 27 Aug 2019 01:25:59 +0200
>>
>> +(defun vc-hg-ignore (file &optional directory remove)
>> +  "Ignore FILE of DIRECTORY (default is `default-directory').
>> +
>> +FILE is a file wildcard, relative to the root directory of DIRECTORY.=

> I think instead of "root directory of DIRECTORY" this should say "the
> top-level directory of DIRECTORY's repository".
I disagree. This comment is a modified version of the comment for
`vc-default-ignore'. And the exact same phrase also pops up for
`vc-svn-ignore':

vc.el:1420:FILE is a file wildcard, relative to the root directory of DIR=
ECTORY.
vc-svn.el:356:FILE is a file wildcard, relative to the root directory of =
DIRECTORY.

Also `top level' only appears twice in the `vc-' files:

vc-bzr.el:1070: A merge has been performed.\nA commit from the top-level =
directory
vc-cvs.el:904:;; at the top level for CVS.

while the phrases `root', `root directory', `repository root'
appear 23 times in strings and comments alone.

The sentence is actually utterly false for `vc-default-ignore',
since FILE is usually an absolute file path when called from a
*vc-dir* buffer. With relative paths the code is still wrong and
ends up as plain basename for the pattern.

Since the implementation of `vc-hg-ignore' corresponds to the
actual situation, I have changed the wording to reflect that using
the term `project root'.

>
>> +If FILE matches the regular expression
>> +`vc-hg-ignore-detect-wildcard', it is appended to .hgignore as
>> +is. Otherwise, FILE is escaped/expanded according to the active
>> +syntax in .hgignore. If the syntax is `regexp', FILE is quoted as
>> +anchored literal Python regexp and if FILE is a directory, the
>> +trailing `$' is omitted.  Otherwise, if the syntax is `glob',
>> +FILE is used unquoted and if FILE is a directory, a `*' is
>> +appended.
> Our convention is to leave 2 spaces between sentences in comments and
> doc strings.
Done.
>> +When called from Lisp code, if DIRECTORY is non-nil, the
> "When called from Lisp" implies that this function can be called in
> some other way, which is generally correct only with commands.  But
> this function is not a command, so I'm unsure what this means here.
I agree, and I fixed the remove option, so it actually does what
it says ;-)
> Thanks.

You're welcome.

Oops, I had forgotten to include the variable
`vc-hg-ignore-detect-wildcard'. So here is an overhauled patch.



--------------9502C6ADCA8D0AB4A8A08F29
Content-Type: text/x-patch;
 name="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.pa";
 filename*1="tch"

=46rom ec04366f6f9ba813b66d62396b1cfa7f2a865a25 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Wed, 28 Aug 2019 03:42:22 +0200
Subject: [PATCH] Provides vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.
---
 lisp/vc/vc-hg.el | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++=
++++++
 1 file changed, 60 insertions(+)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index f287adf..aad0bd3 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1153,6 +1153,48 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))
=20
+(defvar vc-hg-ignore-detect-wildcard "[*^$]"
+  "Regular expresssion to detect wildcards in an ignored file
+  specification.")
+
+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE of DIRECTORY (default is `default-directory').
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is appended to .hgignore
+unmodified.
+Otherwise, FILE is assumed to be relative to DIRECTORY and is
+converted to a path relative to the project root of DIRECTORY.
+It is then further escaped/expanded according to the active
+syntax in .hgignore.  If the syntax is `regexp', FILE is quoted
+as anchored literal Python regexp and if FILE is a directory, the
+trailing `$' is omitted.  Otherwise, if the syntax is `glob',
+FILE is used unquoted and if FILE is a directory, a `*' is
+appended.
+If REMOVE is non-nil, remove the pattern derived from FILE from
+ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory)=
))
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq root-dir (file-name-directory ignore))
+      (setq file-path (expand-file-name file directory))
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)=
$" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*")))=
)))
+    (if remove
+        (vc--remove-regexp (concat (regexp-quote pattern ) "\n?") ignore=
)
+      (vc--add-line pattern ignore))))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
@@ -1451,6 +1493,24 @@ This function differs from vc-do-command in that i=
t invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))
=20
+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (_c)
+      (cons _c (concat "\\" (char-to-string _c)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")=

+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothin=
g else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (_c)
+      (or (cdr (assq _c vc-hg--py-regexp-special-chars))
+          (char-to-string _c))))
+   string ""))
+
 (provide 'vc-hg)
=20
 ;;; vc-hg.el ends here
--=20
2.7.4


--------------9502C6ADCA8D0AB4A8A08F29--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 27 Aug 2019 07:45:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 27 03:45:41 2019
Received: from localhost ([127.0.0.1]:47601 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i2WAe-0004uL-Nq
	for submit <at> debbugs.gnu.org; Tue, 27 Aug 2019 03:45:40 -0400
Received: from eggs.gnu.org ([209.51.188.92]:50517)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1i2WAd-0004u6-Lx
 for 37189 <at> debbugs.gnu.org; Tue, 27 Aug 2019 03:45:39 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:54056)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1i2WAY-0007e0-Ai; Tue, 27 Aug 2019 03:45:34 -0400
Received: from [176.228.60.248] (port=4686 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1i2WAX-00020v-N8; Tue, 27 Aug 2019 03:45:34 -0400
Date: Tue, 27 Aug 2019 10:45:36 +0300
Message-Id: <83pnkrdpb3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
In-reply-to: <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN> (message from
 Wolfgang Scherer on Tue, 27 Aug 2019 01:25:59 +0200)
Subject: Re: bug#37189: Acknowledgement (25.4.1: vc-hg-ignore implementation is
 missing)
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
 <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 37189
Cc: 37189 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
> Date: Tue, 27 Aug 2019 01:25:59 +0200
> 
> +(defun vc-hg-ignore (file &optional directory remove)
> +  "Ignore FILE of DIRECTORY (default is `default-directory').
> +
> +FILE is a file wildcard, relative to the root directory of DIRECTORY.

I think instead of "root directory of DIRECTORY" this should say "the
top-level directory of DIRECTORY's repository".

> +If FILE matches the regular expression
> +`vc-hg-ignore-detect-wildcard', it is appended to .hgignore as
> +is. Otherwise, FILE is escaped/expanded according to the active
> +syntax in .hgignore. If the syntax is `regexp', FILE is quoted as
> +anchored literal Python regexp and if FILE is a directory, the
> +trailing `$' is omitted.  Otherwise, if the syntax is `glob',
> +FILE is used unquoted and if FILE is a directory, a `*' is
> +appended.

Our convention is to leave 2 spaces between sentences in comments and
doc strings.

> +When called from Lisp code, if DIRECTORY is non-nil, the

"When called from Lisp" implies that this function can be called in
some other way, which is generally correct only with commands.  But
this function is not a command, so I'm unsure what this means here.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at 37189 <at> debbugs.gnu.org:


Received: (at 37189) by debbugs.gnu.org; 26 Aug 2019 23:26:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 26 19:26:13 2019
Received: from localhost ([127.0.0.1]:47325 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i2ONJ-0008SY-Dv
	for submit <at> debbugs.gnu.org; Mon, 26 Aug 2019 19:26:13 -0400
Received: from mout.gmx.net ([212.227.17.21]:56441)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i2ONH-0008SG-Ai
 for 37189 <at> debbugs.gnu.org; Mon, 26 Aug 2019 19:26:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1566861960;
 bh=t7UqQGpNh1Vuaf4OptzThPSfWxdRcrVV5hvucwrqF18=;
 h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To;
 b=TtdcJE2Q0sCtgqNMJF6KBGUVuH3e2cTnQGDwVzyl62Zml1JxPvrg0xNyzFdhWeSzc
 2OgrdduDK68Aj0Rmw7B2hwr0sICO8wHKs78z4+2sAddFUFZMKYmOfnpBSSLofWibjB
 ET+ifkex4scAHHjnj8DAiF86mXMrSW1RAomtgE1U=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([91.11.54.160]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M1Ygt-1i5PJD0yjr-0033xd for
 <37189 <at> debbugs.gnu.org>; Tue, 27 Aug 2019 01:26:00 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 96D961940B96
 for <37189 <at> debbugs.gnu.org>; Tue, 27 Aug 2019 01:25:59 +0200 (CEST)
Subject: Re: bug#37189: Acknowledgement (25.4.1: vc-hg-ignore implementation
 is missing)
To: 37189 <at> debbugs.gnu.org
References: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
 <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Message-ID: <52917e6f-2f00-25cf-4353-dfb40287d0ea@HIDDEN>
Date: Tue, 27 Aug 2019 01:25:59 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <handler.37189.B.15667808855126.ack <at> debbugs.gnu.org>
Content-Type: multipart/mixed; boundary="------------7A183C289244CF8EE10D89FB"
Content-Language: de-DE
X-Provags-ID: V03:K1:fg50MTi2H4aT3CNkW5KphyFPGYR7hb+6psPK2zuSm7AMAMqOd3j
 L9cg4ol1DKdx6FyBG1ZA3UD6CGmnp7OUd00mVa5bUPmUFAkOhXhNceFX+zFa062kSkwp7f/
 NerutUEA7JTQQXpsYBc4zJ9IRDOzCRbHdbZifRmASZnDjckvKvvLpTciqvR+LtwQk7z237b
 inOWDBwbEyw9vFEMSrTBw==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:kOqag2J6CJg=:jSl9v8RM9ceKRKN9+wcvm5
 GOQZ4t7brHQJPTBL7JGNf6uBqi+OMLknCpRv+n5zoUomliFISW+Aji6sB7n7KM0bpSWkZjI1g
 DaMMdvRPft41fHvq8+L6o+jJCTCAQF7Cr8vcr4RCm8guN9giBP1GCeOPNnlIxxOTvo9V61s0A
 2Tb40c3Cxg5ApYYl8BuETeKbv2w12o+hI5Aa/Du8+QZD9AsL/kC8J8yKedxWHd7b5uMYs8ruu
 r5vf0FRYcttGGbplWPkgD288CP28T6lxtUWWR7miqoH1mpVjm1X4a8ENqfBYEmWA88l1gjizD
 0yzXMsWtP5BT2Gyqi2OA4DeW9lO6nLvnp6kYqvaxi/Gmi1fxAjPGDpGkc7GqlAHaNuTXxI0bd
 6WVyvh3cMGY7u6r5QhWqZv6LnT8Z/J8st4wXj3WL6lh4ohDcvTwLSG6/XfyqA/IMJM5rZ9e7f
 B0SIGSuvfY1zEk1wgfUecoA7AWcCg66U+h1Yr3cZrzMF+c8v9cFIiDo9JpQFep+VAhH73Lr/u
 VnwgofIXADLfcqkwYHOeeZJ33DY2ToCxv5/khufwzxht6l1c3q6z8GWmTH09UC1KYL2NmJKB2
 LJg9+wThMtfub2VI1dUqjvZIrRMPCq+Q5uTbahaXxYIFbCFr5t/99HNZ8bHNrBK3IHXaDmnUu
 dZjRqsYTce2qDsKYTn1kWrTx6KbCAJUDGAShA412+KrX6f6EAb7VUfWcCZrx6AkPqvx0lDOli
 5tV16S9sIoK+wobuztnIYK7GcXt6GKj4IP88WbuyVu1AorwitE3mzZPFhnrUnKSILd12CWiqa
 wJTw2z4mokXYwgU+6DZdU2aJYlekUZU3ScPdc0LXtY4MPdUOQ4A08MITGrNgSlCTVA8tk+mz2
 lzkjOGpRfWL/KWjgM8An0Sr9EoyBso2JQIkTMzDCh1Yu2GAWtzJf5044SLPXHWFXm3RHu/Ann
 6z/+ypk6VliZAKxJ+KeW5sCkYjl21ADJNm/TArnPTejWFRa6K1Hv6En/d3ogvp3vfGJjht+Sd
 TOHy2AFepygW7jgD6VXUqEPihp4D8nghGUmvGztTWKR+6IG+g9o7QGTzITAPgnXY6foAruL+O
 enDSTvYO38GDRremFKlCX4ix7+D8aPVDU34GI7zoNDGDVKBC+VqS1WifA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 37189
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------7A183C289244CF8EE10D89FB
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Patch with commit message attached.


--------------7A183C289244CF8EE10D89FB
Content-Type: text/x-patch;
 name="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename*0="0001-Provides-vc-hg-ignore-to-make-vc-ignore-work-correct.pa";
 filename*1="tch"

=46rom 7a238036ba08e3b1359e06839ea38b944bd0f2db Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@HIDDEN>
Date: Tue, 27 Aug 2019 01:22:46 +0200
Subject: [PATCH] Provides vc-hg-ignore to make vc-ignore work correctly

* lisp/vc/vc-hg.el: (vc-hg-ignore) Ignore file of directory.  Add
filepath relative to directory of Mercurial .hgignore file.  The
filepath is quoted according to the active ignore syntax (Bug#37189).
(vc-hg--py-regexp-quote) Quote string as regexp to match exactly
string.

Copyright-paperwork-exempt: yes
=2D--
 lisp/vc/vc-hg.el | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++=
+++++
 1 file changed, 58 insertions(+)

diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index f287adf..f4bddd2 100644
=2D-- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1153,6 +1153,46 @@ REV is ignored."
   (expand-file-name ".hgignore"
 		    (vc-hg-root file)))

+(defun vc-hg-ignore (file &optional directory remove)
+  "Ignore FILE of DIRECTORY (default is `default-directory').
+
+FILE is a file wildcard, relative to the root directory of DIRECTORY.
+
+If FILE matches the regular expression
+`vc-hg-ignore-detect-wildcard', it is appended to .hgignore as
+is. Otherwise, FILE is escaped/expanded according to the active
+syntax in .hgignore. If the syntax is `regexp', FILE is quoted as
+anchored literal Python regexp and if FILE is a directory, the
+trailing `$' is omitted.  Otherwise, if the syntax is `glob',
+FILE is used unquoted and if FILE is a directory, a `*' is
+appended.
+
+When called from Lisp code, if DIRECTORY is non-nil, the
+repository to use will be deduced by DIRECTORY; if REMOVE is
+non-nil, remove FILE from ignored files."
+  (let ((ignore (vc-hg-find-ignore-file (or directory default-directory))=
)
+        (pattern file)
+        root-dir file-path syntax)
+    (unless (string-match vc-hg-ignore-detect-wildcard pattern)
+      (setq root-dir (file-name-directory ignore))
+      (setq file-path (expand-file-name file directory))
+      (setq pattern (substring file-path (length root-dir)))
+      (save-match-data
+        (with-current-buffer (find-file-noselect ignore)
+          (goto-char (point-max))
+          (setq syntax
+                (if (re-search-backward "^ *syntax: *\\(regexp\\|glob\\)$=
" nil t)
+                    (match-string 1)
+                  "regexp")))
+        (setq pattern
+              (if (string=3D syntax "regexp")
+                  (concat "^" (vc-hg--py-regexp-quote pattern)
+                          (and (not (file-directory-p file-path)) "$"))
+                (concat pattern (and (file-directory-p file-path) "*"))))=
))
+    (if remove
+        (vc--remove-regexp pattern ignore)
+      (vc--add-line pattern ignore))))
+
 ;; Modeled after the similar function in vc-bzr.el
 (defun vc-hg-checkout (file &optional rev)
   "Retrieve a revision of FILE.
@@ -1451,6 +1491,24 @@ This function differs from vc-do-command in that it=
 invokes
 (defun vc-hg-root (file)
   (vc-find-root file ".hg"))

+(defvar vc-hg--py-regexp-special-chars
+  (mapcar
+   (function
+    (lambda (_c)
+      (cons _c (concat "\\" (char-to-string _c)))))
+   (append "()[]{}?*+-|^$\\.&~# \t\n\r\v\f" nil))
+  "Characters that have special meaning in Python regular expressions.")
+
+(defun vc-hg--py-regexp-quote (string)
+  "Return a Python regexp string which matches exactly STRING and nothing=
 else.
+Ported from Python v3.7"
+  (mapconcat
+   (function
+    (lambda (_c)
+      (or (cdr (assq _c vc-hg--py-regexp-special-chars))
+          (char-to-string _c))))
+   string ""))
+
 (provide 'vc-hg)

 ;;; vc-hg.el ends here
=2D-
2.7.4


--------------7A183C289244CF8EE10D89FB--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 26 Aug 2019 00:54:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 25 20:54:45 2019
Received: from localhost ([127.0.0.1]:45275 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1i23HQ-0001Kc-P1
	for submit <at> debbugs.gnu.org; Sun, 25 Aug 2019 20:54:45 -0400
Received: from lists.gnu.org ([209.51.188.17]:50597)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i22lX-0000So-DS
 for submit <at> debbugs.gnu.org; Sun, 25 Aug 2019 20:21:47 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:48060)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i22lW-0001xH-6F
 for bug-gnu-emacs@HIDDEN; Sun, 25 Aug 2019 20:21:47 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM,
 RCVD_IN_DNSWL_NONE autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <Wolfgang.Scherer@HIDDEN>) id 1i22lV-0006pv-0X
 for bug-gnu-emacs@HIDDEN; Sun, 25 Aug 2019 20:21:46 -0400
Received: from mout.gmx.net ([212.227.15.15]:41829)
 by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16)
 (Exim 4.71) (envelope-from <Wolfgang.Scherer@HIDDEN>)
 id 1i22lU-0006pZ-Kn
 for bug-gnu-emacs@HIDDEN; Sun, 25 Aug 2019 20:21:44 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1566778898;
 bh=lVuLlkGSRIVyZv5lxGbuxXwe0T6nKufRaxYdCy0gUew=;
 h=X-UI-Sender-Class:To:From:Subject:Date;
 b=DftgS4Y2XOoB99jAIsoXmcE0jfZuBAV1nrrKI+epz+zI5IMGQYjS+/j+hEsIFH49s
 6gcpMQznBOGrK8ZbI521ZpO+l9xL4X7mEJ9lXmYpWQ2nMtmHjKVerDjedFS1unWZOq
 CcRk4/S+X6LbFyIz77cDjcOX27eRxAGrBsk4R8fg=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from sheckley.simul.de ([87.144.35.29]) by mail.gmx.com (mrgmx003
 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LzLJR-1iF9u70G2r-014Vz7 for
 <bug-gnu-emacs@HIDDEN>; Mon, 26 Aug 2019 02:21:38 +0200
Received: from [127.0.0.1] (sheckley.simul.de [127.0.0.1])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by sheckley.simul.de (Postfix) with ESMTPSA id 167A51940560
 for <bug-gnu-emacs@HIDDEN>; Mon, 26 Aug 2019 02:21:34 +0200 (CEST)
To: Emacs Bugs <bug-gnu-emacs@HIDDEN>
From: Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=Wolfgang.Scherer@HIDDEN; prefer-encrypt=mutual; keydata=
 xsDiBEb46IgRBACMHOAb1KNo1Ylk+ebri+4R+bG4tyKlqBlrpv8D9/ZwRdXSGt+0DyCHoaAd
 7KW7noHapLe87DunABOjKG4nqTGv+dRiWuUBlp3I4aYRFDVa3Da+XnIYkMHKqhK59VEHQCdp
 Km42nuLS7TS+n99at9YwzTG6VBdOlBKTlRFngOjVLwCg1RGXJ6X3EjS1FKCQeXziURVpWlkD
 /2zY6Ayhxi62TS84VjikXrrmjXykAAaAmMVEyKKYb9L5pGlqiZz9g/K9xw1EUoZTYuaufquD
 v4rAGR58K/3V4CYfJLEeshMWiaXHvMmlxMznlG16/um4MvmR8B3r+cx0nOPK1JBdD2qrkNnF
 Mw8FB+zouLFB4Gt2IUC5IlOmZ8OQA/4qdU53CItzWsCr9Nux4L0qUlRweSmCnV8xGQ2wP5XI
 MawIQxxREvSrsYDG8cNnYETMg4iQFfIktwAoxCJvuFAwIB6ZxHGF4FcEZm64CXc2u7CmFLqt
 rVhXhIfMz9oEYC+HhGczGamn9ofbGTFd2hJEtPcQgWNR4f7+aKknmi2+OM0fV29sZmdhbmcg
 U2NoZXJlciA8d3NAc3ctYW10LndzPsJhBBMRAgAhBQJYmz3YAhsjBQsJCAcCBhUICQoLAgQW
 AgMBAh4BAheAAAoJEIUCr3Gr112VZZoAoLTBSTp1qGuNhLdXY04iaWCMYmHCAJ4kHPtQ6nTw
 kEq9qCHgVgXDaY7wjs7ATQRG+OiIEAQAhi0wjcxvA4tychg2NQuwBIf9LX/46l+74+QbewCn
 a4a+mw/9s5KYqLGtYMuu3/KYq9yBd53OYc7LWTLMxsGOIATSOQRhdCKYW1AanupYrC/bKNW/
 8i2QEXc7LIeYiaII0TkVdQTVZxrg9kKLQ+Vf6z04Lbfv91sVCkHKI9jxgVMAAwUD/0mkDeN0
 tllPH+NOjbkkqlOj6UOwzwIYgXmALhuAEFGXVLM2HfRV9TtJa2OoGZiuhyGXat3Jl9QK9NNv
 d/J4HSal93ZHWstPU4YIRc5uhJ1eeWwKsfTmPvbZXMKMkh+hBBJ39SZnmxfoeUzkK0EQNE2p
 PZDyjAlz03qOx6D0DHnZwkkEGBECAAkFAkb46IgCGwwACgkQhQKvcavXXZU8PwCdGmUH5mbh
 dsLYyx7qthe4hOWnW54AoJQMfmHP4uUI6ji8VkdlvO8LKtLP
Subject: 25.4.1: vc-hg-ignore implementation is missing
Message-ID: <1ba53ae2-42a4-3ab3-d4f2-2ceae565d198@HIDDEN>
Date: Mon, 26 Aug 2019 02:21:34 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Content-Language: de-DE
X-Provags-ID: V03:K1:MHqo3pMXFpf6mDqRB7I4Ak0fdnNdvjwxZ2xhxfc8sf0FstMrPQS
 uLWC0EX3LYgiUeNtROxi/ADstVNg542EspLdoIMtW5oWqwCEYdly4GsCeZGNs9pQLLYSmjl
 tVWo9XnSHj37rqGEZMejyHZdx0dgX3BxZwN+7ABEUi7I5VvLtuUmizBCEzIfwboLwLpZllj
 dCI+OTOAIW70Z16uYs1Og==
X-UI-Out-Filterresults: notjunk:1;V03:K0:MU/dxm0m2YU=:CPxnJj6ABXPKGWMGu6LAtt
 2JrAczo98T4whm+lcktFV3nqna++kweZ7jOEDgzay63sVmInS6XIcgywujH1n2oqLpMUxVU3s
 18L9Aa1BYhW0zH7S5Cx5Vf2k0PjOUcEE7MDr0NJAY67St9dWHXYEuuTLSX8tF0UiYRlP3pdq9
 fhXx3biyU0G5InPa58KZJ4bQLJJqzIj6OprgfOJCb0CV7+9e2ABhjQOYJK491vKnm+V+JEyM8
 K2laQvmy/Pql2F+xuhsFJ7fYbI3AVkBYnOwgD7gxwpZwE5Ft3JEYM4Cr/3HWO+NWTIkOTrbQD
 kVS3g3cZJzINh1khkPYzCHUCH2UpqlKPzTpnIwLTTxiYQF0o2hobTlV3t03N9hpLLb6W/bnRp
 7WYzaN6L2zG9RoVQpSDbOgws2JhLLjYNwFznyRWuz5MNGAVInYktYCAIQZ4d6VUoQmNzimsN0
 4bm09THQxebYrAxpo1PVcbG59yy1IK0yH/n0nHB4rkwyrBiBKFp0EbVVbeSUVAbMZdZbBSBNw
 GJN45lzvbvPD8Vxdfoebaaa/uyrzCcUjcgb4XiZwY2L2AYgpXEpjTmAiGMCPqqPGtcp8Jw+6w
 JfAxRB59s0elc6VDMEfbzbkK1RpxdJd00Vl9odABCzvye9ydrJCS55CexyaL3Gc5kCmJkqWwB
 PrbunKyC/mgveExj2SW6V48QoRUMnnlZJbHg7/dOL4/2dXbEY4C8Z5bCElxTYN6xgvLVzcPv3
 ozt/29GJbmSts5Bqq92FFUDbFIy3KUTJWneLWt0iy2gwcs18KvOJCgc6Oa/X3bVybY/xMAGBu
 DoZ+MDoRAS943uZ2GChsc9m2fOpX7W9ZU85sn3l5KpROI5wouS/bvBm4b1WX3wXyM29nXmVGb
 ORt8oon/t2Oc6FN9gcsfR/VpdBxNEgdB3Qe7TACaFKG8Sso1CTS5GgJKWjnuVs2NjsEdSy2Gn
 PJyEshX/HLMEnpN21yeIUa4IxzYPw4HTlqCmce67+oDfyOvGwCAFRJXTkmlUea1ezbGwe+In/
 WKtgaIXgqL9ehJqipFONYS9wyleB4IFSm+t61ZKwo63+Ed9IK0mMyPYSD9sX6AtmeYjjdxyCg
 YOYAbA5Be6l4KNfqthDahnqel6k54LnuFMdluTJz50dEEtafFhlbnHHkimOLoWdKLsRHxeRCd
 Q3zVk=
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 212.227.15.15
X-Spam-Score: -1.4 (-)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Sun, 25 Aug 2019 20:54:43 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.4 (--)

VXNpbmcgYHZjLWlnbm9yZScgaW4gYSAqdmMtZGlyKiBidWZmZXIgZm9yIG1lcmN1cmlhbCBk
b2VzIG5vdCBwcm92aWRlIGEgY29ycmVjdCBlbnRyeSBpbiBgLmhnaWdub3JlLicuCgpUaGUg
ZnVuY3Rpb24gYHZjLWhnLWlnbm9yZScnIGJlbG93IGF1dG9kZXRlY3RzIHRoZSBjb3JyZWN0
IHN5bnRheCBhbmQgYWRkcyBhIGNvcnJlY3RseSBxdW90ZWQgZW50cnkgdG8gYC5oZ2lnbm9y
ZScuCgpGZWVsIGZyZWUgdG8gaW5jb3Jwb3JhdGUgaXQgaW4gYHZjLWhnLmVsJy4KCgooZGVm
dmFyIHZjLWhnLS1weS1yZWdleHAtc3BlY2lhbC1jaGFycwrCoCAobWFwY2FyCsKgwqAgKGZ1
bmN0aW9uCsKgwqDCoCAobGFtYmRhIChfYykKwqDCoMKgwqDCoCAoY29ucyBfYyAoY29uY2F0
ICJcXCIgKGNoYXItdG8tc3RyaW5nIF9jKSkpKSkKwqDCoCAoYXBwZW5kICIoKVtde30/Kist
fF4kXFwuJn4jIFx0XG5cclx2XGYiIG5pbCkpCsKgICJDaGFyYWN0ZXJzIHRoYXQgaGF2ZSBz
cGVjaWFsIG1lYW5pbmcgaW4gUHl0aG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIikKCihkZWZ1
biB2Yy1oZy0tcHktcmVnZXhwLXF1b3RlIChzdHJpbmcpCsKgICJSZXR1cm4gYSBQeXRob24g
cmVnZXhwIHN0cmluZyB3aGljaCBtYXRjaGVzIGV4YWN0bHkgU1RSSU5HIGFuZCBub3RoaW5n
IGVsc2UuClBvcnRlZCBmcm9tIFB5dGhvbiB2My43IgrCoCAobWFwY29uY2F0CsKgwqAgKGZ1
bmN0aW9uCsKgwqDCoCAobGFtYmRhIChfYykKwqDCoMKgwqDCoCAob3IgKGNkciAoYXNzcSBf
YyB2Yy1oZy0tcHktcmVnZXhwLXNwZWNpYWwtY2hhcnMpKQrCoMKgwqDCoMKgwqDCoMKgwqAg
KGNoYXItdG8tc3RyaW5nIF9jKSkpKQrCoMKgIHN0cmluZyAiIikpCgooZGVmdmFyIHZjLWhn
LWlnbm9yZS1kZXRlY3Qtd2lsZGNhcmQgIlsqXiRdIgrCoCAiUmVndWxhciBleHByZXNzc2lv
biB0byBkZXRlY3Qgd2lsZGNhcmRzIGluIGFuIGlnbm9yZWQgZmlsZSBzcGVjaWZpY2F0aW9u
LiIpCgooZGVmdW4gdmMtaGctaWdub3JlIChmaWxlICZvcHRpb25hbCBkaXJlY3RvcnkgcmVt
b3ZlKQrCoCAiSWdub3JlIEZJTEUgb2YgRElSRUNUT1JZIChkZWZhdWx0IGlzIGBkZWZhdWx0
LWRpcmVjdG9yeScpLgoKRklMRSBpcyBhIGZpbGUgd2lsZGNhcmQsIHJlbGF0aXZlIHRvIHRo
ZSByb290IGRpcmVjdG9yeSBvZiBESVJFQ1RPUlkuCgpJZiBGSUxFIG1hdGNoZXMgdGhlIHJl
Z3VsYXIgZXhwcmVzc2lvbgpgdmMtaGctaWdub3JlLWRldGVjdC13aWxkY2FyZCcsIGl0IGlz
IGFwcGVuZGVkIHRvIC5oZ2lnbm9yZSBhcwppcy4gT3RoZXJ3aXNlLCBGSUxFIGlzIGVzY2Fw
ZWQvZXhwYW5kZWQgYWNjb3JkaW5nIHRvIHRoZSBhY3RpdmUKc3ludGF4IGluIC5oZ2lnbm9y
ZS4gSWYgdGhlIHN5bnRheCBpcyBgcmVnZXhwJywgRklMRSBpcyBxdW90ZWQgYXMKYW5jaG9y
ZWQgbGl0ZXJhbCBQeXRob24gcmVnZXhwIGFuZCBpZiBGSUxFIGlzIGEgZGlyZWN0b3J5LCB0
aGUKdHJhaWxpbmcgYCQnIGlzIG9taXR0ZWQuwqAgT3RoZXJ3aXNlLCBpZiB0aGUgc3ludGF4
IGlzIGBnbG9iJywKRklMRSBpcyB1c2VkIHVucXVvdGVkIGFuZCBpZiBGSUxFIGlzIGEgZGly
ZWN0b3J5LCBhIGAqJyBpcwphcHBlbmRlZC4KCldoZW4gY2FsbGVkIGZyb20gTGlzcCBjb2Rl
LCBpZiBESVJFQ1RPUlkgaXMgbm9uLW5pbCwgdGhlCnJlcG9zaXRvcnkgdG8gdXNlIHdpbGwg
YmUgZGVkdWNlZCBieSBESVJFQ1RPUlk7IGlmIFJFTU9WRSBpcwpub24tbmlsLCByZW1vdmUg
RklMRSBmcm9tIGlnbm9yZWQgZmlsZXMuIgrCoCAobGV0ICgoaWdub3JlICh2Yy1oZy1maW5k
LWlnbm9yZS1maWxlIChvciBkaXJlY3RvcnkgZGVmYXVsdC1kaXJlY3RvcnkpKSkKwqDCoMKg
wqDCoMKgwqAgKHBhdHRlcm4gZmlsZSkKwqDCoMKgwqDCoMKgwqAgcm9vdC1kaXIgZmlsZS1w
YXRoIHN5bnRheCkKwqDCoMKgICh1bmxlc3MgKHN0cmluZy1tYXRjaCB2Yy1oZy1pZ25vcmUt
ZGV0ZWN0LXdpbGRjYXJkIHBhdHRlcm4pCsKgwqDCoMKgwqAgKHNldHEgcm9vdC1kaXIgKGZp
bGUtbmFtZS1kaXJlY3RvcnkgaWdub3JlKSkKwqDCoMKgwqDCoCAoc2V0cSBmaWxlLXBhdGgg
KGV4cGFuZC1maWxlLW5hbWUgZmlsZSBkaXJlY3RvcnkpKQrCoMKgwqDCoMKgIChzZXRxIHBh
dHRlcm4gKHN1YnN0cmluZyBmaWxlLXBhdGggKGxlbmd0aCByb290LWRpcikpKQrCoMKgwqDC
oMKgIChzYXZlLW1hdGNoLWRhdGEKwqDCoMKgwqDCoMKgwqAgKHdpdGgtY3VycmVudC1idWZm
ZXIgKGZpbmQtZmlsZS1ub3NlbGVjdCBpZ25vcmUpCsKgwqDCoMKgwqDCoMKgwqDCoCAoZ290
by1jaGFyIChwb2ludC1tYXgpKQrCoMKgwqDCoMKgwqDCoMKgwqAgKHNldHEgc3ludGF4CsKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaWYgKHJlLXNlYXJjaC1iYWNrd2FyZCAi
XiAqc3ludGF4OiAqXFwocmVnZXhwXFx8Z2xvYlxcKSQiIG5pbCB0KQrCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobWF0Y2gtc3RyaW5nIDEpCsKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInJlZ2V4cCIpKSkKwqDCoMKgwqDCoMKgwqAgKHNl
dHEgcGF0dGVybgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaWYgKHN0cmluZz0gc3lu
dGF4ICJyZWdleHAiKQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjb25j
YXQgIl4iICh2Yy1oZy0tcHktcmVnZXhwLXF1b3RlIHBhdHRlcm4pCsKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhbmQgKG5vdCAoZmlsZS1k
aXJlY3RvcnktcCBmaWxlLXBhdGgpKSAiJCIpKQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgKGNvbmNhdCBwYXR0ZXJuIChhbmQgKGZpbGUtZGlyZWN0b3J5LXAgZmlsZS1wYXRo
KSAiKiIpKSkpKSkKwqDCoMKgIChpZiByZW1vdmUKwqDCoMKgwqDCoMKgwqAgKHZjLS1yZW1v
dmUtcmVnZXhwIHBhdHRlcm4gaWdub3JlKQrCoMKgwqDCoMKgICh2Yy0tYWRkLWxpbmUgcGF0
dGVybiBpZ25vcmUpKSkpCgo=




Acknowledgement sent to Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#37189; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 3 Jul 2020 22:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.