Emacs:有没有办法从diff生成骨架ChangeLog?

Lau*_*nis 6 emacs version-control elisp changelog

在使用版本控制中的源代码时,我想部分自动创建GNU样式的ChangeLog条目.将add-changelog-entry-other-window一个文件的时间和工作你必须访问使用它的文件.

我想要看到的是有一些命令可以输出diff -u -p(或者与VC模式集成以便它可以处理svn diff等)并立即创建所有骨架条目.

例如,如果svn status显示

D file1.c
M file2.c
A file3.c
Run Code Online (Sandbox Code Playgroud)

命令会创建

2009-09-05  My Name <my.email>

      * file1.c: Removed.
      * file2.c: WRITE YOUR CHANGES HERE
      * file3.c: New.
Run Code Online (Sandbox Code Playgroud)

更好的是,如果它可以在某种程度上解析某些语言中已更改的文件,那么它可以提供:

  * file2.c (new_function): New function.
  (deleted_function): Removed.
  (changed_function): WRITE YOUR CHANGES HERE
Run Code Online (Sandbox Code Playgroud)

在Emacs手册中找到了这个功能,但我不知道如何在这里应用它.

有什么建议?谢谢.

编辑:一个答案建议vc-update-change-log.不幸的是,它只支持CVS,它通过查询已经提交的VC日志来创建ChangeLog条目.因此,即使它支持svn和其他,也不可能在同一次提交中提交更改和ChangeLog.

EDIT2:显然add-changelog-entry-other-window(Cx 4 a)不仅可以从被访问文件中运行,还可以从涉及该文件的diff hunk运行.(来源)这几乎就是我要找的.这与遍布所有帅哥的elisp循环一起应该解决它.

Cha*_*tin 2

我不知道有什么函数可以做到这一点,但它应该很容易实现。基本上,你想要

\n\n
    \n
  • 获取更改的文件
  • \n
  • 对于每个文件,调用add-change-log
  • \n
\n\n
\n“查找更改日志文件,并添加今天的条目和该文件的项目。\n可选参数 WHOAMI(交互式前缀)非零表示提示输入用户名和电子邮件(存储在 `add-log-full- name\' 和 `add-log-mailing-address\')。\n\n第二个参数 FILE-NAME 是更改日志的文件名。\n如果为 nil,则使用 `change-log-default-name\' 的值.\n\n第三个参数 OTHER-WINDOW 非 nil 表示在其他窗口中访问。\n\n第四个参数 NEW-ENTRY 非 nil 表示始终在前面创建一个新条目;\n永远不会附加到现有条目。选项 `add -log-keep-changes-together\'\n否则会影响是否创建新条目。\n\n选项“add-log-always-start-new-record\”非零表示始终创建\n新记录,甚至最后一条记录是在同一日期由同一个人\n创建的。\n\n更改日志文件可以以版权声明和复制\n许可声明开始。第一个空行表示这些\n声明的结尾。\ n\n如果非 nil,则根据“add-log-time-zone-rule”计算今天的日期,否则为当地时间。
\n\n

所以神奇的代码看起来像这样

\n\n
(apply \'make-magic-change-log-entry changed-files-list)\n
Run Code Online (Sandbox Code Playgroud)\n\n

make-magic-change-log-entry简单地柯里化该add-change-log函数,以便唯一的参数是file-name\xe2\x80\x94 你设置其他参数。

\n