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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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)
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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)
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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). >
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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).
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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" iVBORw0KGgoAAAANSUhEUgAABDIAAAYbCAIAAABi9w2gAAAAKXRFWHRjb3B5bGVmdABHZW5l cmF0ZWQgYnkgaHR0cDovL3BsYW50dW1sLmNvbREwORwAAAQlaVRYdHBsYW50dW1sAAEAAAB4 nJVWbW/iRhD+bon/MEo/FHQyBS495ZCoLuEl5xQCAkJVKVK1thdYxd5F6zUX+qG/vTN+dyCn O3/A6915eeaZmR2+RIZpE4dBw3LVK1w9OVfwy197YXjDOuCJ8MSBSQNXR88WO6k0t5/lgRnD tbwCFsFm6Cy+I7oVAc/lJg2LSx/QT8PK3G21kgY3c6erUL286zm389556i3ipnC4OvfoMu+F 9nyOIYRCch8QRAgjZzkerufLvxHKPRMycpVW5558vmVxYDCyGqbRBVCl6I6bnBFCiDtM+nad xZFze4HHDG3hDpU0CzOVu0vMlxpbga+K21xrQol4H2yofLE9ZYpRjm7m1KgcDMBJBIBBFgcM BnRC9QD02H8A5YCWHz5AHxa36/V4+UhEg7OyJ850DAOQIkh0oKIzcn5AR3MTa1m+65goXgK2 z1CxwIBUBihSoW2MkYPSgGvuJ18NK0E7uQA88YoInmUJwWTyl0Dn8vBGPEdarngQ8Z+BNFll Li5Yz44rkvj0wVNBwD0DWWeQJHFR95KroHJdF2tIh6kEssdBi93epN/RXn1LrQIWM1bJC2yV Ts8yRWaEkukOlQ5ZoC9c0ytQ6kAqwJm3TxMmZBVnDdU5vWfpqDKc+SiIps+kQoYqDJWEtLpT r3vEHwi5Kwp45NSK8XaROm5ipjwWBHmLPcu8Pu35MkGCO9XMLMez+WbcalgJdwHfGlDbotWb ty2YFGUaxpEBlygwDNPVjCWPPHbgfqudNl7KHuUuNy8i3JR20g0F0groJIfMjVQQo3tSsRHv 12eJoYcsEP9yQpuRU+ikBuiSKKJ2Sa4aBoK/a8GjQn4DwVyMgW5Tj9JNEVbJTWqi7EaXb+nI 7BH8QWGwbZgqDwsF6Td7DNBTWlO9vrFRuWZE1LCE3HPNpQlOIMKDiiKBIGpEpZkH5/5xvhwn fJ2T913iZBwEOYrowD2celp5HF3JHU1AvIZpgkRZF/9UUpA2DPlYScqZ8B3domUCKnG0ysL+ QXwX8ltiScvsNya9vdLFaH+vZoctmEtkPSvOPCl4B2zxXcsr1TbNGcw6f2U4aZPrAHzFo+Qq /qb0C14dpxAjuJS68+fXZoWGsvvKPnvbujOHKLzA4blqOUa+IJLk/5C1CHA6Ps2mcEQeCXu3 3et0P7e7veYqllj/R+h8hG6337vu/34Nw/Ea6LxlNe8XU4hUrD3sDBEZLdyYgm9ZD+zIYBlL I0Leh/mBy4fRn/kGjOVR4B+iECvbetjMSoFP1/adMLDiGqHAZpba2aSw+ojrpt35p/exZ9/E 9Ot2Ptud2EWrcfe/7qd257rdpU0L7em02VanyPCwD1Mh41drlE5/BODh9Je7PjytJ/aNNWVy F7MdQvW5NVRoUJ9w+oyt/wFUTwyoBv4P8gAAgABJREFUeNrsvQl8E3X+/98WSlsugXJTbirg KqeKCHIocgisy6GuCLh+PVDxB7uCgEJFEHS5BIRWziKHhZYWainXQoFypEqBVsSC1bXIIZSC 3KiofP/vZf7mm00yk2naJjPJ8/nIo4/JZDKZeX3meD87+UwC/hcAAAAAAMCrBBABAAAAAACg JQAAAAAAgJYAAAAAAAAYREvWBNzPg0dRHmxFPHRuJy4hJR48ePDgwcOvzv72WoKogdtYteQ6 gDr6teRbAAAA8AnQEkBL9JKQkNCoUaOgoKCAgABTLHDAbdASAA2U3cTIMyziR3hgebyej/Y8 Fy5cWK9ePeXQzQYPgJb47vfbbqM2xvFVMLWW1K1bVxr0wIEDZpEHtAQALdE5scfsxfNaUrt2 bXl18+bNnt+uAgMDQ0NDa9as2alTp5kzZ+bm5jpd5oA/EHeqXr36X/7yl4yMDLsp7bC+euTI kVGjRjVv3jwsLKxMmTLyWV26dFF7l/WNu3fvHjBggHxW6dKl5a8M79mzx/ETHZdn4MCBMl4+ zrouMiBPZeQTTzzB8QTQErQELTH3xQe0BC0BtMR/tMTzgXhl1awf+sUXX3z66adSzYuidOzY USxCTUtk4MsvvxwxYoQMP/LII3qWPysr66677goODn7zzTctFou8fdWqVQ8//LD26qenp4eH h1euXDk2NjY7O1v+ynDVqlWtZqKxPLL8ioS8++67ypjJkycrovLVV19xPAG0BC1BSzznJFas Y2bNmhURESHnGxlz9epVedq0adOyZcveeeedM2bMkDG2b1+4cGGTJk1CQkJatGiRlpbmdLbC tWvX5s+f/6c//alcuXKRkZEffPCBjNGej4K8Sz5dxjdr1mzx4sVoCYDO8lH2VtmnypQp07hx 4/fee892gvHjxyv/Nq5WrdpTTz0lVab1pQ8//LBly5YVKlSoUaPG1KlTHavA6OhoKRlLlSo1 ceJEefrNN9/IZLKThoWFNWrU6J133pExtu+aNm1agwYNZDGkyEtISLB+kLxLFkzGy0LKomrX 2RoTqy2A03+ou1xaWalatWrJ0c86RqaX46GssrxryZIlr7/+evXq1UNDQyWl5ORktXLc6Vpr fHqhAnFcNceFz83NlacyQ/ks+RsVFWW9FKB/vVy60DPPPCNjXn31VQ0tEcQTZFg2Kj1a8txz z8lLYg6Fcrb+/fvLmClTpljHiGPImAEDBuhZHjnpyFMxmUOHDh08eFAG5OmOHTs4mABagpag JV67WqI8HTx48JkzZ5Qx06dPlzHDhw//4YcfXnnlFaXWsZ140KBB8tKyZctkWE5vatc05syZ I2OefvppmfPYsWNlWKofl/ORAkie9uzZ89+3kQG0BECnlnTt2tVisWRkZMiAUihbJxg5cuSW LVu++uqr999/X9nllfFvv/22PO3YseOePXsyMzOHDh1qV9LNnDlThKR8+fKyqyovTZo0SV76 y1/+kpWVJQcK2385K+/q16+flHoffPCBDEt9rLwkmmRdQkFZQrU6VXtilwtgOyuXE0sVKy/Z jZHlX7Bgge3TRYsWyfCdd96pVo47XWuNTy9UII6r5rjwEyZMkDF/+9vfZDGkHWVYzKSw6+VS BmQrkjGiN9paIkslw5UqVdKjJWJW8pK2Eji+XQRbxuzdu9c6RoZljLiWnuURPvroIxkpWQ0Z MkQGJBmOJICWoCVoife1RATAOkbOTzImNzdXhr/++mvljGU78TfffCPDly5dUv75qqYlYhoy 5vDhwzIs+iHDzZo1czkf5cJ6dna28lT5FxdaAqBHS/71r38pT2VArdZUduratWsrT6W+lKdb t251OkOpqgMDA+vWrSvFqPUlqbnlpbS0NBmWulaGmzRpYvuuffv2yfCxY8eUXVt5KTIy0nEJ 1epU7YldLoDtrFxOLEpgt9bKGFE429WRQ6Lt6jiW407XWuPTCxWImpbYLrzyWUqZLpJpa0f6 18ulDHz55ZcyJjg4WENLrF+aeuaZZ9Qu+Ni+sXTp0jKs/e0pxyURW5YxOTk51jEyLGNkbnqW R+HFF18sdZuXXnqJwwigJcbVEjkVoSX+oyW2E4SFhckYsQUZvnjxogyXLVvW5Xsd5xMSEmJ3 BpIzmcv5yGfJ8I8//qg8vXDhAloCoFNLrCWaUnrKvqw8TUpK6tChQ+XKlZX7ONmWoUpt51gR KpMpR4N58+bZvlSmTBm7XduxEHR8qszKbgnVqnDtifUvQGEn1lh+jSsDGpNpfHqhAnG5bEJo aKiMES+S4aNHj9puAPrXy6UMbN68WftqiRWZRnzA61dL1JbH1tIFGeAwAmiJIahfv77sk/n5 +crTs2fPytMGDRqgJf6pJU2aNNG+WqJTS2QTsl4S0b8MXC0BKParJcolkUWLFknNevjwYdsK T/tqyapVq5Q7I3300UfWl5S3KP9r1186F+PVEv0LUNiJi11LND69WK6W2E6gHHI1rpYUi5YM GjTIZd+SAwcOPPXUU0pvFj2f8re//U1eGjlyZKG0pF+/fjr7ljhdHj0LBoCWeIG33npL9smX X375wm2GDRsmTydMmICW+KeWvPPOO0rfkjNnzih9S6ZPn+7yveHh4TJ85MgR66tKH5Unnnji xIkTIr3r169/5JFHXM5n/vz59C0BcE9LrH1LHn74YXn6/vvvK6/WrFlTnq5evfqLL75Qeh1Y 6zDbviVSvf3P//yPXa22cuXK0NDQUqVKWeem9GHo06dPZmamzHDp0qXydpf1rlSE+rtSaE+s sQCVK1eWl3bu3Gmdlf6lLQkt0fj0QgWixyVGjRql9C3JyspSWlk+vbi0RBY+JSVFua+uyztx fXv7VldyUqhUqdJnn33m8lMOHTrUrFkzsd/x48dLFLId6rkT165duyrfJjY2VhZPuROXfOju 3bv1LA9aAmiJQfn111+lEm3atGmZ28jA5MmTf/vtN7TEP7Xk8uXLEydObNKkSVhYWGRk5D// +U+7O3E5fe+cOXOqVq1qN8GyZcvatm1b4Tbdu3eXs5qeZZg7d+6dd95ZtmzZe+65R+mOiZYA 6NGS6dOnK7/80KhRI2vXakGERMYHBwfXrl1b6YRtW4fJHteyZcvy5cvXqFHDev8u22mWL1+u fEFo7NixypjZs2e3aNGi/G06d+788ccf66l35cyi3CdKFkb5t4VGOag9sdoCyNpVqVJF58Qe 0BKNTy9sIC5d4uuvv3799dcbNGggjSUbgJT4dnficltLAgMDQ0JCZPMQIZHl1P7dEutLo0eP Vv7HZPuq2u+WfPnll//4xz9ETmThZUOtXr16p06dXMqDmEm/fv2qVasm2ix/+/fvn56ervYW u+VBSwAtAbQE/Ai0BAAAAC1BSwAtAbQEAAAA0BJASwAtQUsAAADQErQE0BJASwAAAAAtAbQE 0BK0BAAAAC1BSwAtAbQEAAAA0BJASwAtQUt8jK8PfZH1yQYeJfT4Ousw2xgAoCUAaAmgJeAC KZ2l4XiU0CM7bgPbGACgJQBoCaAloEtLjs2emb9zDY9ifBz7YCZaAgBoCQBaAmgJFEJLpIy+ desQj2J8nN2xBi0BALQEAC0BtATQEu9ryeqo6UlJSampqWlpaRaLJTs7m00OANASALQE0BJA SzyqJUtenxgbGxsXF5ecnCxmkpmZySYHAGgJAFoCaAmgJR7VkkV/j4qJiVmyZImYSWpqqsVi YZMDALQEAC0BtATQEo9qSezoSdHR0WImsbGxSUlJ6enpbHIAgJYAoCWAlgBa4lEtiZ84c9Gi RWImCxYsiIuLS0tLY5MDALQEAC0BtATQErQEAAAtAbQE0BJAS3Q8AgICXE6zbt2siIgaeqZ0 +yPQEgBAS9ASQEsALQG0ROvRqFGdvXuXFf0jSshP0BIAQEsA0BJAS8D3tSQoKOj33w+iJQAA aAmgJYCWoCVoyaH8/LTw8DuuX8+wjrl2zSJjZLwMJyfPbtu2eUhImXr1ai5e/LbaTJYufadR ozrBwaWbNKn70UfjbVVB5tCqVVOZg0wwefKrN29mKi5hRZ4eO7Z+wIBHqlS5o2LFcv36dT13 boeactjZSMB/g5YAAKAlgJYAWgJmvVrSt2+nVaumWp+uXDlFxsjAhg1za9WqmpIy98qVvbm5 nw4Z0tvp2zdvjm7QoPbOnYtlsh07FonAWA1hz57YFi0i5a+ojsyhe/f2U6YMd1QOmSYtbaGo 0cWLu1977akXXuinU0u4WgIAgJYAWgJoCfiIliQkTH/00QesT7t1a7d27QwZaN++hbzk8u2d OrX59NM5tn3Zraogs9q/f5X1pRMnNjdpUldbJy5d2hMRUQMtAQDwmpbcvHglf+dBv33cvHTV ZXBEhJa4weUf8k9ssfjP4/KZc0XXkq8PfSHFLo+vsw77iZb89NNnVatWOnlyi2IOMvzzz5/L cFhYyPnzO12+vUqVO378Md369MKFXVZVkFmVKhUkDyEwMFDGy4CjTuTlbezf/+Fq1Sor38WS 6f1NS9jpPLPDkjPJ+1UruK8lUnfKsN8+zu066DI4IkJL3EAqdb/aTk5s2Vd0LVEqXR7ZcRv8 REvk8fLLA6dOfU0GpkwZ/sorT1h9w6mW2HXnqFy5opqWhIaWOX36Xy67xXfpcu+4cc+JF928 mXnjxmdqyvHbbwdcaklxdTXxsJaw03lmhyVnkverViiqlhybPVPOLn71OPbBzEJpCRGhJW5o iT9sNsp2Uoxa4of7ml2YfqUlFsvypk0byMCdd9aXYastKN/mcvtLXB06tIqJecullpQrF3bl yl5leNeuJdaXwsPvOHt2u3WyAwfiHG2kdOlSv/56wOxXS9jpPLPDkjPJ+1UrFFVL/PCXepVD v34tISK0xA0t8YfNRtlOilFL/PmHw5Uw/UpLFCGZNWuU/LWO2bFjUZ061VNTP9Tu8r5x4zy1 Lu/bti2oUuWOZcsmFRTsvHp1nzx97LGOjlrSunUz+ehr1yyZmZ80b97Q+tLTT/ccNKjXqVNb 5b1paQvvuquRo5Y0alRn8+bo33474ANa4s87nWd2WHImeb9qBbTEzTS3fLDYYrFkZWXl5uae Pn368uXLaImeiNAStMRuO9kwLWbnzp0ZGRmHD//na6Znz55FS9wOc3XU9KSkpNTUVClGZe/L zs72bS15993hwcGl5a/tyMTEma1aNS1TJljEY8mSiWrvXbz4bZnA6Q2CRVe6dr2vXLmwsLAQ GRAzcdSSgwfj2rRpJp8iSjN37hjrSyIz4kLVqlWWl2QxVq2a6qglsoQNG9YpVSrI1DcIZqfz zA5LziTvV62AlriZZsI7s1JSUiTK/fv3S9ldUFCAluiJCC1BS+y2k7gJ0xITEzdt2rR7924x kxMnTqAlboe55PWJsbGxUowmJyfLrpeZmenbWsIDLfH5HZacSd6vWgEtcTPNlW++J1GuX79e oszKyjp9+jRaoicitAQtsdtOlo+dsmLFivj4eDGTjIwMOSqhJW6HuejvUTExMUuWLJFdLzU1 1WKxoCVoCe1o6h2WnEner1oBLXEzzRXjpn788ccSZUpKikSZl5eHluiJCC1BSxy1ZOnSpWIm iYmJO3fuzMnJQUvcDjN29CSpR+VAHxsbm5SUlJ6ejpagJbSjqXdYciZ5v2oFtMT9Q7/U3MuX L09ISJDjfm5uLlqiJyK0BC1x3E5ib/PJJ59s2rTp8OHDaInxS1LKWbYB2tEzjUXOJO9XrYCW oCVoCVqCllCSoiVsA7QjxTHJkzxa8t+PEvr5W1/SElNHhJZ4S0sMuNmYUUv0xLhu3ayIiBpu B+7eG9ESc238thtJcf36u+9pSTE2XElvA4WdvzGLYx8O3Ge0xLDnILQELUFL0BK0xIha0qhR nb17lxX9IwrVZH6uJdpZGXDjt91I0BK0BC1BS8x+DuJLXHyJCy1BS/gSlxG1JCgo6PffD6Il xtESAz6cbiRoCVqClqAlJj0HGVRL8vPTwsPvuH49wzrm2jWLjJHxMpycPLtt2+YhIWXq1au5 ePHbLhNfsGCC05+7koFVq6a2bt1MZlW9epXBgx8rKNhpfZdM2bhxhLxL/i5cOMF2zrNmjYqI qBEYGKiMkeVp1aqpzETMcvLkV2/ezPSAlvh5RGiJe1rik5tNSWtJ0UOTx9Kl78haOP3RPaer GWCDPD12bP2AAY9UqXJHxYrl+vXreu7cDrXDvd2ZIOC/8SstUds+9WTuNCujbfx2S+u0CHDj 2Gs0LSmWo5YkLy0lyUsOsbHvWF9S27PU5mybrcWyvFatqtHRb2pHrb1JaBwZvFUcE7jRtMSv zkHGvVrSt28n2bCsT1eunCJjZGDDhrmyXaakzL1yZW9u7qdDhvTWLp5kSjl57Ny5WKaXv/Xr 17KN7K67Gm3fvlBeOnVq66BBvZ5+uqfyUlLSf75RJy9dvrxH/srwp5/Osb6ra9f7jh/fpDzd sye2RYtI+StbiSxP9+7tp0wZ7pmrJf4cEVri9tUS39tsPHC1pIihbd4cbc1qx45FcvKwZqWx mrZHcJkmLW2hnJYuXtz92mtPvfBCP52nBL+9WqKxferM3BQbv+0CO7a4e8deA14tKfpRS9rI dgfcsiVae89Sm7M1W+Vr9/JePRuV2iahcWTwbnFM4Ea7WuI/5yDjaklCwvRHH33A+rRbt3Zr 186QgfbtW8hL+i8ePfRQa2kw63g5DdgmdfBg3P+t3tntYp/K8IMPtpR9wPqSnE46dGhlfVd2 drztgu3fv8r69MSJzWKintESf44ILXFbS3xvs/GAlhQxtE6d2lgLUOX8as1KYzXVDuWXLu2R 0zNaon2y19g+3cjcsBu/tpa4d+w1oJYU/ahltwN27txWe89Sm7OS7bx54+65p8k336ToaTKN TULjyODd4pjAjaYl/nMOMq6W/PTTZ1WrVjp5cosSkwz//PPnMhwWFnL+/E79xVPlyhV//DHd Ov7ChV22Sf322wG1d8mUtu+SMdZplCVRHrJgpUoFyUMIDAyUV2XAM1rizxHZacnlH/KlCvef x+Uz59zWEt/bbDygJUUMrUqVO9Sy0lhN20N5Xt7G/v0frlatsnIdXKZHS7RP9hrbp87MTbHx a2uJe8deA2pJ0Y9adu0lu6T2nqU2Z5lm4sRhYpiXL++xHa+9UaltEhpHBu8WxwRuNC3xn3OQ obu8v/zywKlTX5OBKVOGv/LKE9Zw1bZdp9+y1T5/aJx1NM4ftm8JDS1z+vS/1PZMja/TFUuX d7+NyE5LlBLcfx4ntuwrSpd3s282XunyXpTQNLLS3jusw1263Dtu3HNyTrp5M/PGjc/UopaT sctTgs6dzoe1RGfmpjhmamuJe8deY3Z5L+JRS61KVtuzNOa8Y8ei6tWrpKZ+qL/J3PNbPV/H L7nimMCN1uXdT85BhtYSi2V506YNZODOO+vLsDUa5dKVe181kWE95w9R8/XrP7C94GV7td32 LTI+JuYtb92Jy28jcqolx2bPlJR8+3Hsg5lF1xIf22w8oyVFCU3jArrGatoGUq5c2JUre5Xh XbuWWF8KD7/j7Nnt1skOHIhzbIXSpUv9+usBP/8Sl+32qZG5dlYG3Pi1tcS9Y68xtaSIRy27 HVB2Se09S23OygT796+qVatqXNz7eppMY5Mw7Je4CNyAWuIn5yCj3yBY0p81a5T8tY4Rb65T p7p4s/6OuQ0b1klPX3r16j75K8N6zh9JSbPq1aspn2XtHmTbN9H2Ldu2LRBbXbZsUkHBTvkI efrYYx09eYNg/4zIqZb4z81wi6glPrbZeOwGwW6HtnHjPLXuhhqraRtI69bN5KOvXbNkZn7S vHlD60tPP91z0KBep05tlfempS28665Gjq3QqFGdzZuj7b7V4A9d3tW2T43MtbMy4MavrSXu HXsNe4Pgohy17Hpgb9o0X3vPUpuzdYIjRxLr1q3x0UfjC7Uj243RODIYoTgmcKPdINgfzkFG 15J33x0eHFxa/tqOTEyc2apV0zJlgiXlJUsmujxYy3Yse4hyW7TZs0fLG11uu/IQfWzcOEIk z/FOjnbvkpbu2vU+UcmwsBAZkEb1pJb4Z0R+riUbpsXs3LkzIyNDim/Z/c6ePVtYLfGlzcZj WuJ2aPJYvPhttZvVqq2m7TQHD8a1adNMPkVOJ3PnjrG+JCcSOQ9Vq1ZZXpLFWLVqquMpQZZQ 6uZSpYL87QbBatunRubaWRlw49fWEveOvYbVkqIctazJS/vaTqa2Z6nN2XaC775LldZ///0R +ndkxzEaRwavF8cEbjQt8YdzkNG1pNgf+/Z93KxZA+PUlwb8OUVTROTnWhI3YVpiYqIU37t3 75b6+8SJE17/OUUvbjZm/DlFg29gvvdziiW6fRrnmGnGbYCdzjONRc4k71etYGgtGTz4scOH E65ds2RkrGjRInLatJFoidkj8nMtWT52yooVK+Lj46X+zsjIkD3QK1pikM0GLUFLPL99GvOY iZaww1IckzytYHQtWbZs0t13NylbNrR584azZo0qie+3mV1LTBcRWrJ06VIxk8TExJ07d+bk 5HhFSwyy2aAlaInnt09jHjPREnZYimOSpxXM9CUuA6ZptC9xmSIiP9cSpyW4d7/EZcxM0BK+ xMUDLaGxyJnk0RK0BC1BS9AStISSFC1hG6AdKY5JnuTRErQELUFL0BK0BC3hgZZQHJMzyaMl aImJtGTdulkRETXsfjm42O/mZi4t8e7qe1dLDLg9mEVLjJkSWlLsD1M3tCm0xFcTNlpx7PRo Xyz7ggFbsLhObYbVEseVsl1lHzuymV5L7LI2bM3tFS1p1KjO3r3L1DZrtMTftMST20MRZ4uW oCVm1xJjnpvQEj/REqdHe1/VkuI6tZlIS2xXGS1BS0yjJUFBQb//ftBQWydf4vKilnhye/Ax LeE/5WgJWsKXuEykJU6P9r76v5jiOrUZX0uKsX3REr3Rf/TR+CZN6gYHlxYXjI19x/rSsWPr Bwx4pEqVOypWLNevX9dz53Yo02ugvDE5eXarVk1DQsrIDCdPfvXmzUzrZ82aNSoiokZgYKDy dNWqqa1bN5Mpq1evMnjwYwUFO02tJXZROP0Xglo4htWS/Py08PA7rl/PsI65ds0iY2S8sjpt 2zaX1alXr+bixW+73L0XLJjg9BdStTcGmbJx4wh5l+OPOttuUfrj9YyWFGV7yM399C9/6ar8 5mubNs1Wr/6n9luc7ok+c7XEIJsNWmL3cHqOcNkuS5e+Izm7/H1onzk3GepqiUF2pcI2ruNn aUwWHf1mw4Z15Mh5zz1N9u2Ts967kZH1wsJCHnqo9b//vaGEimONo32x7AuGasFiLHWKRUv0 N7paDhptYV1HK7VrV/vpp8+sb7xyZa+cqc+f32nAVtMoJAytJfXr19q5c7Eku2PHIikut2yJ Vl5q0SIyLW2h1KMXL+5+7bWnXnihn57/SO3ZEytvlL9SvEoi3bu3nzJluHXKrl3vO358k/Xp XXc12r59oXz0qVNbBw3q9fTTPc1+tcQ2Dcd9VSMcI18t6du3k+w51qcrV06RMTKwYcPcWrWq pqTMlRaU1RkypLd2JjKl7JnKxiZ/ZcOzjUhtY0hK+s8XOuWly5f3yF8Z/vTTOU63KP3xeuxq idvbgxxBZs58/cKFXT///Plnn63o3/9hPfuXT36JyzibDVpi99A4R6i1y+bN0dbWVM44GqWY b5ybjKMlxtmV3Gtc28/SmEwq0ZycdTLnsWP/VqlShU6d2lif9unzUIkWx06P9sWyLxiwBYul 1Cmu5PU0ukYOGm3hOCAztP0nrPjM88//xZitplZIGF1LrKuq9Onp3Lmt42SXLu2RUPQc+rt1 a7d//yrr0xMnNosdWqfMzo63fePBg3H/l8vZ7eHhd/i2lmiEY2QtSUiY/uijD9g28dq1M2Sg ffsW8pL+TOTAIfundbxseLYRqW0MDz7YUjZL60uyr3bo0MrpFqU/XoNoicYCV6hQTp46zlB7 //JJLTHOZoOWaDzszhFq7SLlgt0ZR6MU841zk3G0xDi7knuNa/tZGpNJPaoMSzVm91QKVs9r SbHsCwZswWIpdYoreT2NrpGDRls4DohaNGvWwPqFLtl0s7IMut+pFRJG15Iff0y3PpUmrFLl /w8lL2+jqFW1apWV61alSgXpOfRXrVpJppSHEBgYKK/KgHVKMTbbN9r9pm9RvphoCi3RCMfI WvLTT5/Jkp88uUXZ4mVYacewsBDHC5camVSuXNFuY7ONSG1jkHfJlLbvkjFOtyj98RpESzQW eNy45+TVYcMGfPzx5NOn/6Vz//JJLTHOZoOW2D00zhFq7SLnF7XW9NVzk3G0xDi7knuNa/tZ GpPZdgBwfOp5LSmWfcGALVgspU5xJa+n0TVy0GgLp19Ra9u2eXLybBn49tsNojSGbTW1QsKs WtKly72ySlKM3ryZeePGZ2o3W7B7GhpaRm3lXfZH9Hkt0QjH4F3eX3554NSpr8nAlCnDX3nl Ceue7FRL1L54qr1zauzSGjunzm3PmFqivcDZ2fHTpo0cOLCbrO+sWaMKu3/5iZZ4crNBS+we Os8R+lvT7rjhG+cms2hJie5Kxd647m0DXtGSYtkXDNiCxVLqFHvyGk81ctATrO1s4+Le79jx P9cu3n77pTVrphm58nFaSJjsS1xW8ytXLuzKlb3K8K5dS6xBlC5d6tdf/0/v7J526NAqJuYt tMTp1qwRjsG1xGJZ3rRpAxm48876Mmw9MSjf5nLv2zgyrGfnfPDBluvXf2C7idpeyrR9i/54 DaIlOhf43//ecMcd5V2+xW5P9NUvcXlxs0FL7B5q5wiNdinKl7hMem4y7Je4vLgrudG4dp+l czIja0nRv8Tl3RYsllLHk1qikUOhvsQlD5Hh+vVr7d27TOagcV8HQ7WabSFhsi7vmzbNV15q 3bqZqNW1a5bMzE+aN29oe/PmzZujrRee7J5u27agSpU7li2bVFCw8+rVffL0scc6oiUuwzH+ DYJFSGR7kL/WMbLB1KlTPTX1Q/1d3hs2rJOevlTWXf7KsJ6dMylplmyW8lnWTdS245ftW/TH axAt0Vjgnj0f3Lo1RkbKWkdHv3nvvXe5fIvdnuhLXd4NstmgJXYPtXOERrts3DjP7S7vJj03 GarLu0F2JTca1+6zdE5mZC0p1L5gwBYsllLHk1qikYNGW6glLJtf48YRkya9YuRTmFohYXQt Ec2ScEuXLiVhLVky0frSwYNxbdo0K1MmWOKYO3eMNYjExJkyZalSQcoYu6dKf6CuXe8rVy4s LCxEBiQjtMQ6Ui0c42vJu+8ODw4uLX9tR0rrt2rVVDYS2aVtNx61TD76aLycjZTb5M2ePVre qGdjsG6ijrfJs3uXzngNoiUaCyyy17lz29DQMlWrVurf/2HbWxyqvcVxT/SZGwQbZLNBS+we aucI7XZZvPhtp/fK9NVzk6FuEGyQXcmNxrX7LJ2TGVlLCrUvGLAFi6XU8aSWaOSg0RZqTXn5 8p7y5cueObPNyKcwjULC0Fri4e8Ueazm9oqWmCsi7/6c4r59Hzdr1sC7mZS0lphxOzH4zyl6 cbNBSzz58Jlzk2F/TtGLu5LRGtewP+rnAwdDn0xeuQai9g0R07UaWoKW+K+WDB782OHDCdeu WTIyVrRoETlt2ki0BC0xy2aDlqAlZtcSg+xKaIn/HAx9UktOndp6991N9Nx71xSthpagJf6r JcuWTZKduWzZ0ObNG86aNcrtjhBoiV9piUE2G7QELTG7lhhkV0JL/Odg6HtaIltvuXJhGzbM 9ZlWM5aW+HDNjZYY/EtcxizB0RKDf4mLktRPtIRtgHakOCZ5kkdL0BK0BC1BS9AStIQHWkJj kTPJoyVoCVqClqAlaAklKVrCNkA7UhyTPMmjJWgJWoKWkAlagpbwQEtoLHImebQELUFL0BK0 BC2hJEVL2AZoR4pjkid5tAQtQUvQEjJBS9ASHmgJjUXOJI+WuKElxz6YKXP3q4escqG0hIhc aok/RGTNRKeW+Hkm7mmJH+5rjmGaRUv8ubF8YxugHT3TWORM8n7VCkXVEr996NcSInKpJX6V iU4t8fNM3NMSHibSEh5m3wZoR880FjmTvF+1gvtacvPS1XO7DiqPndErkt+btzpq+opxU/3k sfyjRVJzS44pKSkWiyUvL88xOCJyjMhOSy6fOXdiyz7l8a85SxMnz1711vsfj3l3+dgpPvlY Fr1g6dKlK1asSExM3LlzZ05OjqOWkIkbWvJ11uHsuA3KQxKT2S7+x9uL/h4VO3qSXz0Wz50v h/iYmBjRvKSkpPT0dANqiW1jySFxyesTlZaSUxSPYngsW+EZLWGn88wOS84k71et4L6W2JKV lSXHvvXr18tBcLnfICsrqywrLqt/+vRp7RCJSInITktsycjI2LRpU3x8vFSosb6LrJ2so6yp rK/sgdc18dtMCqsltqSmpsqGt2TJEjnYRfsfstay7pKA5GCxWL41NnIqkg1AaalFUEx4Xk39 fKfz2A5LziTv861QPFqSm5u7f/9+qT5TUlIS/AZZWVllWXFZ/YKCAu0QiUiJSENLDh8+vHv3 bqlNExMTP/FdZO1kHWVNZX1PnDihrSV+m0lRtEQ2ueTkZDnMSVm2wP+QtZZ1lwQkh8zMTINr CSd731BTP9/pPLbDkjPJ+3wrFI+WnD59WurOrKwsOQKm+Q2ysrLKsuKy+pcvX9YOkYiUiDS0 RDZHqUozMjJ27ty5yXeRtZN1lDWV9T179qy2lvhtJkXREmUXk4IsKSkpzv+QtZZ1V/a+7Oxs g2sJJ3vfUFM/3+k8tsOSM8n7fCsUj5ZIxVlQUCClZ15eXq4H2fT393K9h6ysrLKsuKz+zz// rB0iESkRaWiJ1KMnTpyQjTInJ+ewR0h5bfJhjyNrJ+soayrr++OPP2prid9mUhQtkUOblGJy jEtPT/e8iq9+bqx3/xcgay3rLglIDkqwRsYsJ/v5g0egphp4d6cz+C5ZjDuskXM2S+A+nLy5 8ldrheLREm9hqIUxJkaLSENLPI9BFsNQGKdp3NYS72LARTIyZjnZzw1uY+ozvT/DLkng5G+u 5UdL0BK0BNASTglAs9J2QODkj5agJWgJWoKWoCXAmR5oOwIHtAQtQUvQEkBLOCUAzUrbAYGT P1riDkfeWYx4mCsiQ2lJ1vgYPMSYmZhXS3aPmMZ50fegWWk7IHDyR0vAN6/ecJkCfFVLAAAA AC0BtATQEgAAAEBLANASQEsAAAAALQG0BNASAAAAQEvo8k6Xd7q80+WdLu/gU9CstB0QOPmj JbpqXDBRRNwgmBsEc4NgMOOZkhBoOyBw8kdL0BK0BC1BS9ASoFmBtiNwQEvQErQELUFL0BJO yZzpgbYDAid/tAQtQUvQErQELQGaFWg7Age0hC7vdHmnyztd3tES19Dd0yehWWk7IHDyR0vA N6/ecJkCuEEwAAAAoCWAlgBaAgAAAGgJoCUAaAkAAACgJYCWAFpiKD755JMRYAbi4uKoHgAA 0BK6vNPlnS7vdHn3zS7vUu8GgBmQlqJ6MAv0wCZw8kdLPFrjgoki4gbB3CCYGwRra0nHjh3H glHp0KEDWmK6KocQCJz80RK0hIjQErQELSm0lkjt+yMYFWkdtIQqDQic/NEStAQtQUvQErQE vK8lAwYMSEpKSk1NTUtLs1gs2dnZFENUaUDg5I+WoCVoCVqClqAl4FEt6dOnT2xsbFxcXHJy sphJZmYmxRBVGhA4+fu7ltDlnS7vdHmny7uhKHqXd7TE+FrSu3fvmJiYJUuWiJmkpqZaLBaK IcNCD2wCJ3+0BMAEWgLcINhQoCVm0ZK+fftGR0eLmcTGxiYlJaWnp1MMAQCgJYCWAFri41qi 3JTWb03AcfW9GIiiJU888cSiRYvETBYsWBAXF5eWlkYxAQCAlgBaAmgJWoKWoCUAAGgJAFoC aIkHteTDDz+88847Q0JCmjZtGhMTY/uqMjx//vzGjRvLBPfcc8+WLVuUl86fPz9t2jR5Y1hY WGRk5Pvvvy9jbN8lr9apUycwMFDGXLhwYc6cOXfddVfZsmWbNGkyffp0GaNWqU+dOlXeHhQU VL169aFDh544cULDLmSBZbFl2WQZ5s6d63I+dr9j6HSM9gI7rp1GSmgJAIBptIQf9wUAKFG0 tUSKaRnu1q1bzm26du3qqCV//etf8/LypG6WYfEQ5aX33ntPnr788svy0ksvvSTDYia27xo0 aNDx48eVMTNnzpQxTz31lIwZPXq0DH/wwQdqlfq4ceMyMjLOnDkzb948mfKFF17Q0JLu3bvL Yh87dkwGFDdwOR89V0s0Fthx7TRS0qklAwcOfOONN3r37i0iVKVKleDgYLZbAIBioRBaQn9H AIAS/YKQtpY0b95chj///HPlqdTxjlry1VdfyXB+fr5y8UF5KTIyUp4eOXJEhr/88ksZljG2 7zp69Kj1E6VMlzEHDhyQYandZbhp06Yul7+goECmjIiI0NCS/fv3K09lQJ7K6ricjx4t0Vhg x7XTSEn/1ZKlS5cuXrx4+fLlKSkpyucCAEDRQUsAAMyhJWFhYTJ85swZ5akMOGqJ0zeGhobK sFThMnz27FkZllmpVfkhISF2/74KDg52uszbtm3r3LlzeHi4VPbKlGolvvKq3ZJbl0FjPnq0 RGOBXb69UD1V0BIAAKNoCZeWAAC8+CUu5WpJZmam8tTp1RKnb2zcuLH21RLbT6xfv771eoI2 9erVkylXr14twnPy5EmNEl/7aonGfPRoicYCl4SW8CUuAADvf4lL6WOakJCQlpaWkpKS4G3e vuvRBDBVRMryyN9PDIBBFsNQGKdpdG5OCwxGURapT58+Afr6lkhBfOzYsZycnIcfflinlkyY MCHgdt+S48ePK31L3nvvPbW6XOmI0r9//2+++ebEiRMSddeuXZ2W6bVr15YpN27cKJMps9XW ku7dux89elQWvkePHvJ03rx5LucTHh4uw4cOHbLOynGMxgKX0NWS2bNnv/3222PGjBk3btyU KVMWgFEx4FGCwIH8NZbfnTtxGURL5r86DvEwV0SG0pIPX34DDzFmJubVkhnPjSxRLRHmzp0b GRkZFhZ29913z5kzR14qVaqUy4L73Llz48ePb9y4cWhoaJMmTaZOnWp3Jy67D128eHHr1q0r 3KZbt25JSUlOy/TU1FRZjDJlykRERCj9zrW1JDo6WqZX7pdl241eYz7ytGrVqtpjNBYYLfFz irJLAoGTvzm0JCsry2KxpAEUkner3K/83QSgjrKd6Nmc4nyIAQMGBBTyV9737dsnb5ES3/hf Fy5U9W/w/j+iJSKH7777blRU1KRJk0QO4wAAoMjIad0dLTl9+nReXl4uQCGZG9xG+XsYQB1l O9GzOfmStA8dOlSPlvTt23fHjh1nzpzZv39/x44dA27/GAha4mEtiY6OnjFjxrRp08RPVq5c yb+cAACKjpzW+TlF4OcUgZ9TNO7PKdqxfPnyVq1aBQcHV6hQQbREamJTFPQ+piX8nCIAAL/y DmgJoCV+rSWAlgAAoCWG05Ij7yym0DdXRIbSkqzxMQiAMTMxr5bsHjENLUFLwDd2SSBw8kdL Cl3jgokiMpSWcNHGsJmYV0uKskhoCVoChtolgcDJHy1BS9AStAQt8V8t6dChw1gwKtI6aAlV GhA4+aMlaAlagpagJb6vJWB80BKqNCBw8kdL0BK0BC1BS3xWS6TAHfEHAwYM6NOnT+/evfv2 7fsEeJ2BA22fTZw4ES2hSgMCJ3+0hC7vdHmnyztd3n2zy7stSUlJsbGxMTExUvsuAm8T88+Z dmOkXaR1pI2kpdLT0ymGDAs9sAmc/NESABNoCXCDYMOSmpoaFxe3ZMkSxUzAaEi7SOtIG0lL WSwWiiEAALQE0BJAS3yQtLS05ORkqXpjY2MXgPGQdpHWkTaSlsrMzKSYAABASwAtAbTEB7FY LFLvpqamJiUlxYHxkHaR1pE2kpbKzs6mmAAAQEsALQG0xAeRSjczM1NK3vT09DQwHtIu0jrS RtJSOTk5FBMAAP6uJXR5p8s7Xd7p8m4o6O7pk9CstB0QOPmjJbpqXDBRRNwgmBsEc4NgMOOZ khBoOyBw8kdL0BK0BC1BS9ASoFmBtiNwQEvQErQELUFL0BJOyZzpgbYDAid/tAQtQUvQErQE LQGaFWg7Age0hC7vdHmnyztd3tES19Dd0yehWWk7IHDyR0vAN6/ecJkCuEEwAAAAoCWAlgBa AgAAAGgJoCXuEhAQQNWOlqAlAAAAaAlaAl7QEquNoCVoCVoCAACAlpimy3vAH9SoUWPo0KHn z5+3fXX69OmlSpWSv47Tu8TpxHYzCQ8P7927d25urnV8jx49bt26ZbeEaosdGBhYsWLFVq1a jR079ty5c45vUfsgx/lLRJcuXRo3blxkZGRYWFjlypUff/zx7du3a4dmt1IuF9jxXaa4WkKX d7q8Fzt09/RJaFbaDgic/NES9+9+a62PT5069cQTTwwaNMj60u+//96wYcMPP/ywUaNGMqz2 Ro2RasW3dbxYUFRUVPv27a3jn3766Xnz5un/oGvXrh06dGjEiBG1a9fOy8tTMwS7D3KclUQk RvTiiy+Kuvzyyy8iOfHx8Z07d9Zefqcj9SRjri9x0cWFGwSXxCGV86JP/gOPEGg7IHDyR0uK qiVCfn5+eHi49WlqamqbNm1k4L777tu4cWNJaIlw5cqVsLAw6/iLFy82bdr06NGjhfogQaxj 8ODBGoZg+0FOtURevXTpkp48jaAlMsO5c+fWq1cvNDT0/vvvz8zMLLkvcaElaAmnBKBZaTsg cPJHS7ymJY899lhsbKwMLFu2TIZLQksuXLgwYcIEqaptx+/cufPee++9efNmoar877//vmbN mmqGYPdBTrWkV69eTz755N69e2/cuOEVLVH7OpyalvTt2zcnJ+fcuXOyau3bt0dL0BK0BGhW oO0IHNAS02vJ6dOn/3ob5em///3vatWq/fTTTzIsf2X4u+++c0NLtPuWCLVq1XL88tUbb7zx 5ptvFqrKF40JDg5W61ti90FOteTy5ctRUVEtW7YMDQ1t1KjR6NGj1S6eGKFvicxBWkQZLigo CAsLQ0vQErQEaFag7Qgc0BLTd3mvXr36M888Y+04LkW5XRktqlC8V0tu3bolyXbs2HHdunV2 0//yyy9t27bds2dPoa6WiHg4NQTHD3La5d06RqY/cuTIs88+27t3b7uUDPUlLu0bcNHlnS7v dHkHmhVoOwIH38vfZ28Q7LRcVi6P2F5b+O6776wXT4q3b4ny5asrV67Yjf/qq6+aN28u4/X3 LRkyZIiGIdh+kJ6FvHjxYoUKFYz8JS6PaQlwg2AAAABAS7ygJcuWLevTp4/dyF69en388cfF riXCwIEDFyxY4Dh+7ty5zz77rPYHSWV26NChkSNHat+Jy+6DnM6qc+fO8fHxZ8+evXnzpmjY sGHDZJWN3OUdLQG0BAAAAC3xZS259957N23aZDcyJSXlvvvuK66+JbaTbd26Vbnll934W7du 9ejRQ/t3S8qXL9+yZcsxY8bk5+e7NATrBzld5rS0tH79+lWuXDk0NLRhw4bDhw+/cOGCe1qi /ydc0BJASwAAAAAtAYNS9N8tceR87vFvP9l85cJFqnm0BAAAANASY3V5B2NGVBJaIoiWJFV+ ZP8r7+dnHaXLO13evQjdPX0SmpW2AwInf7TE/RsEgzEjKiEtEY7FrF0TeL/MeXOrZ3KXb9Bz 8YQbBHOD4JI4pHJe9Ml/4BECbQcETv5oCVqClhTCTOJLt5eZJ5bvklius8uLJ2gJWsIpAWhW 2g4InPzRErQELSkRM0m4bSbyEEVZG/aQxsUTtAQt4ZQANCttBwRO/mhJ8dS4PHhoP9aW67wm 6IH1NXqe2GJxOTFagpZwSgaalbYDAid/tIQu73R5Lyo5s+PWBLZTHGNj8yc3NPpLSr2+X7y7 5MfvTrosdtESurwXHbp7+iQ0K20HBE7+aAlwg+BCO0liha6bWj4jf3f3e+P4p7v0F7toCTcI BgAAALQE0JKiOkl86fYJwQ/aXh4pVLErr06ePHnBggXbt29HDNASAAAAQEsALSkcJ7d9lljR yeWRwmpJVFTUzJkzU1NTEQO0BAAAANASQEsKwfnc40c++MTp5RG0BC0BAAAAtIQu70Tk6S7v aAld3r0L3T19EpqVtgMCJ3+0RFeNCyaKCC3hBsHcIBjMeKYkBNoOCJz80RK0BC1BS9AStARo VqDtCBzQErQELUFL0BK0hFMyZ3qg7YDAyR8tQUvQErQELUFLgGYF2o7AAS2hyztd3tESuryj Ja6hu6dPQrPSdkDg5I+WgG9evUFLgBsEAwAAAFoCaAlagpZ8GxAQwDkAAAAALQG0BC0BL2iJ 1UbQEgAAALQE0BLTaEnAH1SvXn3QoEEnT/7Xz8lPnTq1VKlS8tdxepc4ndhuJlWqVOnZs+cX X3xhHd+tW7dr167ZLaHjyipvDwwMrFChQosWLV5//fXvv//e8S1qH+R0/mfOnBk1alSTJk3C wsIqVarUp0+fjRs3Oo1abaVcLrAtXC0BAABAS+jyTpd3tMS+KP/mm2/69+//5JNPWl+6evVq gwYN5C0NGzaUYbVqXmOk02lsx4sFjRs3rl27dtbxsgCzZs3S/0Hnzp2zWCyvvvpqrVq1cnJy 1AxB+aAWdRppzEqM6LnnnhN1uXjxokjOihUrHnroIe3ldzrSZTLm/RIX3T19EpqVtgMCJ3+0 RFeNCyaKyNRaIhw/frxKlSrWp0lJSa1atZKBtm3brlu3riS0RMjPzw8LC7OO/+GHHyIjI7Oy sgr1QYJYx1//+lcNQ5APKhMQpDErWYwzZ87oidoIWiIznDx5cp06dUJCQqSZNm3aZGcjJaEl 9ML31X/gEQJtBwRO/mgJWoKWGFdLevTosWDBAhlYuHChDJeElpw6dWrs2LH33nuv7fgtW7a0 adPm0qVLhdKSY8eO1ahRQ80QlA9qElBOY1bdu3cfMGDA9u3bz58/7xUtUfs6nJqWPProo7t2 7fryyy9Hjhwp6oiWAM1K2wGBkz9agpYQkem1RHaYJ26jPD1y5EjVqlUvXLggw/JXhr/66is3 tES7b4lQs2ZNxy9f/f3vfx89enShtEQ0Jjg4WK1vifJB8wJaaszq7Nmz48aNu+eee0JDQxs2 bCi1vtrFEyP0LZE5ZGRkKMNiJrLMaAnQrLQdEDj5oyVoCRGZvst7tWrVnnrqKWvHcSnK7cpo UYXivVpy7do1qacffPDB1atX201/8eLF1q1bb9u2rVBXS0Q8nBqC9YNGBUTqmZVMf+DAgWee eaZnz552KRnqS1xOn6IlQLPSdkDg5I+W0OWdLu/m/hKXFeXyiPUihvDVV19ZL54Ub98S5ctX +fn5duMPHjzYtGlTGa+/b8nTTz+tYQjyQeHlKyofpGchf/jhh/Llyxv5S1ye1xK6e/okNCtt BwRO/mgJ+ObVGx/QkoULF/bq1ctuZPfu3RctWlTsWiL069fvww8/dBw/Y8aMZ555RvuDCgoK LBbL8OHDte/EZfdBTmf10EMPrVixIi8v79KlS6Jhzz//vKyykbu8e15LAAAAAC0BtMRzWtKm TZv169fbjVy7dm3btm2Lq2+J7WQpKSnKLb/sxl+7dq1bt27av1tSvnz5e+655x//+Mfx48dd GoL1g5wu86ZNm/785z9XqlQpNDS0QYMGw4YNO3XqlHtaoucnXNASAAAAtAQtAbQEfPNX3vWQ s3d/5vy43K+OcpIAAABASwAtQUvQEu9oiSBakljpkV3Pv/Pl1nROFQAAAGgJXd7p8o6WeI6s 8TFoiZV9UfPXBN4vn5La+pn9c1fquXhCd0+fhGal7YDAyR8t0VXjgokiQkuMf5kCLbE3k6AH 1gS1SwrvtrZ8Z5cXT7g5pq/+A48QaDsgcPJHS9AStAQtQUu8piWKmcSLmQT857LJ2nKdE8p2 0rh4wimZMz3QdgQO5I+WAFpSVC3hwUPPIz74wTVBDyRV6571yQaXE3Oa5EwPtB2BA/mjJYCW cLWEqyVF5fNZy9f8cbVkXbXu62r1kseeNz44mnHA5TGUMzRneqDtCBzI3y+0hC7vdHlHS+jy 7gEniS/dfn39vgllO23t+dqhZev0H0M5Q/sG9OKl7YDAyR8tAd+8eoOWgCm0RJwkvlQ7cRLb yyOFOobKq2+++eaMGTMSEhI4XwIAAKAlgJagJWhJ4cheszGhfGfHyyOF1ZIxY8ZMmjRp5cqV nG8AAADQEkBL0BK0pBDk7N1veecjp5dH0BIAAAC0BNAStAQtMVbPDbQEAAAALaHLO13e0RK6 vKMlUOLQi5e2AwInf7REV40LJooILeEGwWgJmPFMSQi0HRA4+aMlaAlaYhQtuZx/Pjf208s/ 5KMlaAlawpkeaDsgcPJHS9AStMTTWnIy7fP0fm+sr9Hz5LbPuFqClqAlnOmBtgMCJ3+0BC1B SzynJZfzz2eNjxEbkZfWlu3k806ClqAlQKVF2wGBkz9aQpd3urwbSEtOpn2+/eFX4ku3l5Hr qjy6rlp3f3ASuryjJeAUevHSdkDg5I+WgG9evTGslkwc+9ai7s/FV344PugBeSqPlLp9/cdJ uEFwSWgJv/IOAACAlgBaUjgtWV2qnWIj1kdCmQ5fL1qXNT5GhpUrCQx7YFj+HnlnsfJXuejn dFhpI+WfQ/LXK8N2G4zjY9KkSfPnz09JSeF8AwAAgJYAWqJLSyb/v9FLOjyzJrRjQkgHpaZM rt07uWav/KyjXMHgaok2b7755pj/RsaIk8yePXvlypXbtm3jfAMAAICWAFpSmL4ln6Z8u3Lj ltaDE8p0iA9qt67qo5gJWuKSGTNmTPpvZMz8+fPFSVJSUvbt28f5BgAAwGe1hC7vdHkv0Ttx FeT8+7Nh760t3/k/clKtuz+YCV3e3SYhIUEMZPHA4Sv/QMaIkGzbtk2cJDs7m/ONeaEXL20H BE7+aImuGhdMFJEZf7fk2uUr367cuK3Di+tr9PR5M+EGwUU/pHJe9Ml/4BECbQcETv5oCVqC lnj/5xStF0++nL6CX3lHSzglc6YH2g4InPzRErQELfGalvhJpw60hFMy0Ky0HRA4+aMlaAla gpagJWgJ0KxA2xE4oCV0eafLO1rix1pCl/ciQndPn4Rmpe2AwMkfLSkqv169cXzV5psXr+An aAlawg2CAQAAAC3xNBcyc/b9dXxy9Z4Fe7KRAbQELUFLAAAAAC3x6OWR3HkJqY36yXImhHTA SdAStAQtAQAAALTE05dHEkI6rg3pIAuZWLErToKWoCVoCQAAAKAlnujPbb08sja0oyyb8sBJ 6PLunpZMnjx5wYIF27dvp8s7WuIedPf0SWhW2g4InPzREtdFydqyneKD2lmFRB7xpR7I+zhV ynEZVopyfx5WMjHa8ihaIhWwDCh1sGeGXT5mzpy5cuVKi8XCDYLRErcPqZwXffIfeIRA2wGB kz9a4qIouZb3wxdj5q+r/Mj68EfXlHpAKS7XVXr48tE8LpX8L79bosLkyZOjoqLevuvRqD+Q MeIkS5YsSU1Nzc7ORkvQEk7JQLPSdkDg5I+WFLrmvvXrbycTd+zo8kpi2U5JFbpgJmiJNgsW LBAJebfKfy6PKMiYlStXipNYLJZvvvkGLUFLOCUDzUrbAYGTP1rifs1tvXgSH/RAUsWumAla 4pTt27eLgcwNbpP6BzJGhCQ7O1uc5MyZM2gJWsIpGWhW2g4InPzRkqL257ZePEmu0dPPzYQu 78bv3k2Xd7q8g8GhWWk7IHDyR0uKyrW8H76es4ZfeUdLgBsEAwAAAFoCgJYAWgIAAABoCaAl gJYAAAAAWgKAlgBaAgAAAD6oJUbrz02Xd7q80+WdLu+cV3wPmpW2AwInf7REV40LJorIUFrC RRtuEFwSh1TOiz75DzxCoO2AwMkfLUFL0BK0BC1BS4BmBdqOwAEtQUvQErQELUFLOCVzpgfa Dgic/NEStAQtQUvQErQEaFag7Qgc0BK6vNPlnS7vdHlHS1xDd0+fhGal7YDAyR8tAd+8esNl CuAGwQAAAICWAFoCaAkAAACgJYCWAKAl3377ySefjADTEhcXRxkBAICWAFoCaInptURK2wAw LdJ8lBEAAGgJXd7p8k6Xd7q8m77Lu6IlHTt2HAumokOHDmiJKaAHNoGTP1ri0RoXTBQRNwjm BsHcINhRS6TM/RFMhTQZWmKWKocQCJz80RK0hIjQErQELUFLfFlLBgwYkJSUlJqampaWZrFY srOzqYqo0gicEMgfLQG0BC1BS9AS8KiW9OnTJzY2Ni4uLjk5WcwkMzOTqogqjcAJgfzREkBL 0BK0BC0Bj2pJ7969Y2JilixZImaSmppqsVioiqjSCJwQyN9PtYQu73R5p8s7Xd4NhXtd3n1b Sz755JOGDRsGBQXJmspT5R5Wyku2w17B7QVQtKRv377R0dFiJrGxsUlJSenp6VRFZt8lgcDJ Hy0B/7p6w2UK4AbBLrXE6yV7cRERESErYrFYHNfLw+vo+HFF1JInnnhi0aJFYiYLFiyIi4tL S0ujKgIAQEsALQG0BC0xIhorgpYAAABaAmgJoCVm0pIPP/zwzjvvDAkJadq0aUxMjOM1h/nz 5zdu3FgmuOeee7Zs2aK8dP78+WnTpskbw8LCIiMj33//fRlj+y55tU6dOoGBgTLmwoULc+bM ueuuu8qWLdukSZPp06fLGLW6fOrUqfL2oKCg6tWrDx069MSJExomYEXjaon+T1feJSFIFLK+ sl5z5851uWyOS6IdHVoCAGBoLeE3fQEAih2XWiJ1swx369Yt5zZdu3Z1rK3/+te/5uXlSZUs w+IhykvvvfeePH355ZflpZdeekmGxUxs3zVo0KDjx48rY2bOnCljnnrqKRkzevRoGf7ggw/U 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 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 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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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\\\)\\\)\:\|\= \\) \{\} + ```
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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."
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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."
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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."
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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=
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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`.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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)))
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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."
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.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=
Wolfgang Scherer <Wolfgang.Scherer@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#37189
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.