在使用版本控制中的源代码时,我想部分自动创建GNU样式的ChangeLog条目。 add-changelog-entry-other-window
一次只能处理一个文件,您必须访问该文件才能使用它。
我希望看到的是有一些命令可以输出diff -u -p
(或者与VC模式集成以便它可以处理svn diff
等)并创建所有骨架条目一次。
例如,如果svn status
显示
D file1.c
M file2.c
A file3.c
命令将创建
2009-09-05 My Name <my.email>
* file1.c: Removed.
* file2.c: WRITE YOUR CHANGES HERE
* file3.c: New.
更好的是,如果它可以在一定程度上解析某些语言中的已更改文件,那么它可以提供:
* file2.c (new_function): New function.
(deleted_function): Removed.
(changed_function): WRITE YOUR CHANGES HERE
我找到this feature in Emacs manual,但我不知道如何在此处应用它。
有什么建议吗?感谢。
编辑:一个答案建议vc-update-change-log。不幸的是,它只支持CVS,它通过查询已经提交的VC日志来创建ChangeLog条目。因此,即使它支持svn和其他人,也不可能在同一次提交中提交更改和ChangeLog。
EDIT2:显然add-changelog-entry-other-window(C-x 4 a)不仅可以从被访问文件中运行,还可以从涉及该文件的diff hunk中运行。 (Source)这几乎就是我要找的。这与遍布所有帅哥的elisp循环一起解决它。
答案 0 :(得分:3)
有一个函数vc-update-change-log
可以自动从版本控制日志条目生成更改日志条目。
答案 1 :(得分:3)
diff-add-change-log-entries-other-window
完全按照您在EDIT2中提到的那样做:
diff-add-change-log-entries-other-window is an interactive compiled
Lisp function in `diff-mode.el'.
(diff-add-change-log-entries-other-window)
Iterate through the current diff and create ChangeLog entries.
I.e. like `add-change-log-entry-other-window' but applied to all hunks.
不幸的是,它对新文件的效果不佳:它甚至不包含骨架更改日志条目中此类文件的文件名。
你可能会更好地使用gcc的mklog脚本,你可以从http://gcc.gnu.org/viewcvs/gcc/trunk/contrib/mklog获得。
答案 2 :(得分:2)
我不知道这样做的功能,但应该很容易实现。基本上,你想要
add-change-log
"Find change log file, and add an entry for today and an item for this file. Optional arg WHOAMI (interactive prefix) non-nil means prompt for user name and email (stored in `add-log-full-name' and `add-log-mailing-address'). Second arg FILE-NAME is file name of the change log. If nil, use the value of `change-log-default-name'. Third arg OTHER-WINDOW non-nil means visit in other window. Fourth arg NEW-ENTRY non-nil means always create a new entry at the front; never append to an existing entry. Option `add-log-keep-changes-together' otherwise affects whether a new entry is created. Option `add-log-always-start-new-record' non-nil means always create a new record, even when the last record was made on the same date and by the same person. The change log file can start with a copyright notice and a copying permission notice. The first blank line indicates the end of these notices. Today's date is calculated according to `add-log-time-zone-rule' if non-nil, otherwise in local time."
所以魔术代码看起来像
(apply 'make-magic-change-log-entry changed-files-list)
和make-magic-change-log-entry
只是简单地讨论add-change-log
函数,以便唯一的参数是file-name
- 你设置其他参数。
答案 3 :(得分:2)
我写了一个功能来做类似于你所说的事情。您可以在http://www.emacswiki.org/emacs/log-edit-fill
获取代码