多行更改日志条目的起源是什么?

多行更改日志条目的起源是什么?

能够深入研究软件历史并为代码找到适当的理由是伟大的

我想我第一次看到这些是在 Linux 补丁中——预源代码控制。显然Git在编写时就支持补丁描述。但在 Git 之前,Subversion 或 CVS 等系统在编写时就考虑了单行消息。

我们是否可以追溯到其他影响,或者它主要来自 Linux 开发?

答案1

RCS 早于 Linux,支持多行更改注释(我从 1988 年就开始使用该功能)。 CVS 继承了 RCS 的这一点。 rcs2log 自 1992 年以来一直存在,用于呈现 RCS 日志——包括多行注释。

RCS的ci提示输入零行或多行以仅包含 a 的行结尾的更改注释.(如邮件)。自 2003 年以来,我一直在使用 rcs2log 将 RCS 日志格式化为可读的变更日志,例如ded

顺便说一句,SCCS 还支持多行注释,但当我在 1986 年初开始使用它时,我发现它在这方面不太用户友好(请参阅讨论)。

多行变更注释的一个方面似乎被忽视了:进入他们以及可能修改他们。您可能会发现 CVS 的最旧版本(1992 年 4 月的 1.3)使用文本编辑器来实现此目的。 CVS 的所有后续版本中均包含此功能。您可以浏览来源这里,或签出只读复制。该存储库似乎是从 1994 年 11 月底开始的,当时版本在 1.3 到 1.4 之间(1.5 于 1995 年 7 月发布)。要查看 1.3,您必须获得一个 tarball。

Linus 当然意识到了这一点,因为 BitKeeper 的变更历史记录中反映的第一个请求就是针对此功能的:

commit e1dc29195bd72a9a4c8f1e817e08b8c0358ee88b
Author: Larry McVoy <[email protected]>
Date:   Thu Jan 31 23:29:46 2002 -0800

    Add a bk comment interface so that Linus can edit the comments after
    the fact.

    bk: 3c5a43eabhI7oSce6C4ms5U-kIcEv

要了解实施的内容,您可能需要阅读源代码。这是大约一个月后的一些更改(这个更改注释暗示最初的解决方案并不令人满意):

+/*
+ * 用一组注释提示用户,返回
+ * 0 如果他们想使用它们,
+ * -1 表示错误或中止。
+ */
+整数
+comments_prompt(char *文件)
+{
+ 字符缓冲区[10];
+ extern char *编辑器;
+
+ 除非 (编辑器 || (编辑器 = getenv("EDITOR"))) 编辑器 = "vi";
+ 而 (1) {
+ printf("\n-------------------------------------------- -----\n");
+ fflush(标准输出);
+ if (cat(文件)) return (-1);
+ printf("-------------------------------------------- ---\n");
+ printf("使用这些注释:(e)dit、(a)bort、(u)se?");

话又说回来,问题问的是起源。我记得数字内容管理系统(早于 CVS 1.3)以全屏(终端)模式提供其信息。我在 1988 年至 1989 年期间使用过它。然而,Git 的起源经过 CVS,反过来 CVS 可能是原创的(从某种意义上说,没有受到接触早期工具的影响),也可能不是。

相关内容