From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Christoph Badura Newsgroups: gmane.emacs.bugs Subject: bug#72341: VC: CVS template lines not stripped when committing Date: Mon, 29 Jul 2024 17:02:48 +0200 Message-ID: <20240729150248.GA9440@irregular-apocalypse.k.bsd.de> References: <86a5i0z89z.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14841"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/1.5.20 (2009-06-14) Cc: Dmitry Gutov , 72341@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jul 29 17:04:09 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sYRux-0003eC-Jx for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 29 Jul 2024 17:04:07 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sYRui-0003fN-Sd; Mon, 29 Jul 2024 11:03:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sYRug-0003Y9-J3 for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 11:03:50 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sYRug-0003jz-Ab for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 11:03:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=In-Reply-To:MIME-Version:References:From:Date:To:Subject; bh=TLlyVNlWKMp3qjHy7UmdN8LbbFjCBIPy9W1OtnGu74M=; b=tdceTGLK/YLTsKlR7hZQKxsUwswvNt2eQJ/THBNRPPRBooBx31tqrrAOP2E9xBvfl1YG423Msj2vk9I4VHeNp5KmFzh1M1GUE1pgb8R0X+s7P8d5iToOtukRvji5T91DLDLRU8v+64quhQRyYY2/x8Z0MoDCLfQ5+3vlkJUSyibfVCdIszSUiVVdHV1eilaxZLOtqG9AsDEYaT4lQ60i5Xqs5SWTVGJH2/ZupWYnYUeb8Fm9eQLBAuCnp47H729xKA8f9Fl4gxtRLQls52rO33sfym3UP0NxQbhJY7CyHNXCyUse0UCCYDQZ0quMohzTlh/sUKvVGLOTe+JuJT2cRQ==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sYRur-0006WF-Rp for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 11:04:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Christoph Badura Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 29 Jul 2024 15:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72341 X-GNU-PR-Package: emacs Original-Received: via spool by 72341-submit@debbugs.gnu.org id=B72341.172226538624983 (code B ref 72341); Mon, 29 Jul 2024 15:04:01 +0000 Original-Received: (at 72341) by debbugs.gnu.org; 29 Jul 2024 15:03:06 +0000 Original-Received: from localhost ([127.0.0.1]:46153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYRtx-0006Us-Pc for submit@debbugs.gnu.org; Mon, 29 Jul 2024 11:03:06 -0400 Original-Received: from moe.eta.tal.de ([195.8.227.228]:36520 helo=moc.eta.tal.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYRtv-0006Uj-Fg for 72341@debbugs.gnu.org; Mon, 29 Jul 2024 11:03:04 -0400 Original-Received: from irregular-apocalypse.k.bsd.de (unknown [82.139.197.224]) by smtp.tal.de (Postfix) with ESMTP id CA2B68015B2E; Mon, 29 Jul 2024 17:02:48 +0200 (CEST) Original-Received: by irregular-apocalypse.k.bsd.de (Postfix, from userid 201) id 70B46918D2; Mon, 29 Jul 2024 17:02:48 +0200 (CEST) Content-Disposition: inline In-Reply-To: <86a5i0z89z.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:289522 Archived-At: On Mon, Jul 29, 2024 at 03:34:32PM +0300, Eli Zaretskii wrote: > > Date: Mon, 29 Jul 2024 11:53:13 +0200 > > From: Christoph Badura > > Cc: 72341@debbugs.gnu.org > > > > On Mon, Jul 29, 2024 at 05:26:50AM +0300, Eli Zaretskii wrote: > > > Somewhat clearer, thanks. I don't see this stripping feature > > > documented in the CVS manual; did I miss something? > > > > I didn't see it documented either. The closest thing that comes to > > documentation of that feature is the documentation for rcsinfo: > > https://www.gnu.org/software/trans-coord/manual/cvs/html_node/rcsinfo.html#rcsinfo > > This says nothing about the "CVS: " prefix, AFAICT. > > > It is implemented in src/logmsg.c:do_editor(). > > > > > And one more questions: where do those "CVS:" lines come from when you > > > use the template file? > > > > They have to be be in the template file. > > > > I figure the idea is that the template files can contain "mandatory" text > > that will be part of the actuall log message and "explanatory" text, > > prefixed with "CVS: ", that will be stripped after the commit message has > > been edited. > > > > As an example, here's the default template for the NetBSD repositories: > > ----------------8<------------------8<------------------8<----------------- > > CVS: ---------------------------------------------------------------------- > > CVS: CVSROOT cvs.NetBSD.org:/cvsroot > > CVS: please use "PR category/123" to have the commitmsg appended to PR 123 > > ----------------8<------------------8<------------------8<----------------- > > > > I'm only aware of the NetBSD and pkgsrc repositories that make use of CVS > > templates. And their template files contain only lines prefixed with > > "CVS: ". > > I think I see what's happening. This is basically an undocumented > feature. The removal of "CVS: " lines is there for when CVS itself > invokes the editor: in that case, it injects instructions into the > temporary file that it submits to the editor, and those instructions > all start with "CVS: ", so that they could be later removed. IOW, > this prefix is basically an agreement between CVS and itself. > > Now, nothing in the documentation of CVS/Template file says anything > about "CVS: ", but the code processes the temporary file, which > includes the template, the same as it processes the lines injected by > CVS, and thus every line that begins with "CVS: " in the template will > be removed. > > IOW, NetBSD piggy-backs this feature to include their own instructions > in the template. That pretty much sums it up. However, while this behaviour isn't mentioned in the documentation, it is mentioned in every commit message file that cvs creates when it invokes an editor. E.g.: CVS: ---------------------------------------------------------------------- CVS: Enter Log. Lines beginning with `CVS:' are removed automatically CVS: CVS: Committing in . CVS: CVS: Modified Files: CVS: test.txt CVS: ---------------------------------------------------------------------- I have to admit, that after 30+ years of using cvs outside of emacs, my brain filters out that bit of the commit message. Anyway, it's clearly advertised even if it isn't documented in the manual. Note though, that when cvs invokes an editor itself to enter the commit message, it is impossible to disable this behaviour. That is, lines starting with "CVS: " are always removed. > I'm unsure how to proceed with this. My bother is that this is a > definite change in behavior wrt what VC did until now. Users of VC > might be unaware of this removal, and could start some log lines with > the prefix, which will mysteriously disappear from the log message. I've thought about that. Clearly it is a change in behaviour. The interesting question is, will users notice? My experience with this is that when I took up using emacs again after a very long hiatus this behaviour of VC tripped me up on my first commit. That was very annyoing indeed. A friend suggested to M-x erase-buffer on every commit. Obviously he wasn't aware of that C-w would have the desired effect. Neither did I. And that is not documented in the manual. This was enough of a bother to not use VC again until this weekend and then dig into why that is happending and not when I use "cvs ci file" outside emacs (and have it invoke emacsclient). If you work in an environment where other uses are using cvs outside of emacs VC, the only way to have lines starting with "CVS: " in the stored commit message is to require that the other users use "cvs ci -m" or prepare a commit message separately in a file and use "cvs ci -F". Frankly, a policy that requires stored commit messages containing lines starting with "CVS: " is not practical. Would VC users notice the change in behaviour? I'd say they are already using erase-buffer or C-w to clear the cvs template lines. Or they dug into the code and created a log-edit-done-hook similar to what I proposed. And they can continue to do so with no change to observed behaviour. And how many users that would be affected are there anyway? I think it is likely that there are very few or you would have got complaints in the last decades. Anyway, IMHO it is fine to add such a hook function by default to log-edit-done-hook. People could customize it away if it really interferes with their work. It's also not a big deal to fix up the commit messages with "cvs admin". I'd imagine people would notice quickly. --chris