vc-dwim和vc-chlog

vc-dwim公司是一个版本控制的忽略更改日志差异和提交工具。vc-chlog公司是一个帮助工具,用于编写GNU样式的ChangeLog条目。

要求

vc-dwim公司需要可用的版本控制系统,当前一个或多个集市,并行版本系统,吉特,Mercurial公司、和颠覆.添加更多支持应该很容易。

vc-chlog公司要求vc-dwim公司和a插件实施,最好醒目安全带.

下载

吉特存储库: http://savannah.gnu.org/git/?group=vc-数字万用表
释放柏油球: ftp://ftp.gnu.org/gnu/vc-dwim/

邮件列表

http://lists.gnu.org/mailman/listinfo/bug-vc-dwim

文档

vc-dwim手册有多种格式,请访问http://www.gnu.org/software/vc-dwim/manual(中文)/.

vc-dwim公司

什么可以vc-dwim公司做什么?

vc-dwim公司如果您想维护一个描述对版本控制文件所做的更改。它可以避免您在使用时犯一些小错误命令行中的版本控制程序。

例如,如果在编辑器缓冲区中有未保存的更改,请使用vc-dwim公司要打印差异或提交涉及该文件的更改,它将发现问题,告诉你,然后失败。只要您使用Emacs或Vim。

使用此工具可以避免的另一个常见错误是创建一个新文件,将其名称添加到Makefiles等,并提及添加在ChangeLog中,但忘记了,例如。,git添加(或添加汞等)文件到版本控制系统。vc-dwim公司检测到此差异并未能通过诊断来解释可能的情况。你可能会也只是在ChangeLog中输入了错误的文件名。

也,vc-dwim公司使提交严格子集更容易/更安全工作目录中修改的文件。但从来没有人这么做过。

你如何使用vc-dwim公司

打印任意文件的差异:

使用这样的别名显示所有或指定的差异:

cv='vc-dwim--diff'

当您想查看指定文件的差异时,请使用该选项,无论是否为其编写了新的ChangeLog条目。它对cvs、git、hg、svn存储库的工作原理相同,只要您所需要的只是本地副本和签出版本。

打印包含新ChangeLog条目的文件差异:

假设您对文件进行了本地更改,并且还添加了ChangeLog文件中至少有一个对应条目。然后,您可以使用vc-dwim更改日志打印有ChangeLog的差异条目,警告上述潜在问题(编辑器可能暗示存在未保存的更改的临时文件,以及中列出的文件ChangeLog,但不是简历添加d)。如果您的更改影响了可以使用多个ChangeLogvc dwim变更日志lib/ChangeLog,或者更简洁地说,vc-dwim{,lib/}更改日志.

使用新的ChangeLog条目提交对文件的更改:

使用vc-dwim—提交更改日志vc-dwim—提交ChangeLog-lib/ChangeLog-src/ChangeLog提交不使用--提交选项。

假设您已完成更改并在中记录了所有内容一个或多个ChangeLog文件,运行vc-dwim—提交更改日志承诺ChangeLog文件和新的ChangeLog行“隐含”的文件。提交日志消息源自添加的ChangeLog行。用一个单个ChangeLog文件,日志消息与列表几乎相同已添加行(共行)。删除一个前导TAB日期用户名<电子邮件>行被省略。当有两个或多个ChangeLog文件时消息中每个消息都包含一行,指示受影响的目录。例如:

[更改日志]*一些文件在顶层:。。。[lib/ChangeLog]*lib.c:。。。[m4/更改日志]*foo.m4:。。。

vc-chlog公司

什么可以vc-chlog公司做什么?

vc-chlog公司是关于编写符合GNU编码标准的ChangeLog很容易输入。

假设您对代码进行了一些更改,准备提交。剩下的唯一部分是写入一个或多个ChangeLog条目:对于管理包的一部分的每个ChangeLog,收集列表在更改的文件中,在每个文件中列出更改的功能,并提及所有这些,以便随后描述这些变化:

*file1.c(foo,bar,…):。。。*file2.c(baz):。。。

vc-chlog公司尝试帮助完成此步骤。它扫描差异(获得通过vc-dwim—差异或传递标准输入--标准输入)对于被触摸的文件和行集已经改变了。然后使用插件试图找出哪些函数的程序这些更改已经发生,并格式化文件和函数名在标准输出的原型ChangeLog条目表单中。

这个想法背后有一个关键的假设,即在实践中能够很好地工作:插件应该能够为更改的标识符生成标记。例如,它应该列出C源文件中的函数(而不是函数-本地或其他嵌套实体);它应该列出M4文件中的宏(例如。,作为Autoconf的输入),或者它应该在中列出“@node”Texinfo文件。的输出vc-chlog公司提高了插件.

Exuberant Ctags是这一功能强大且可扩展的实现命令,因此首选。例如,使用.ctag类中的文件此套餐:

--langmap=Sh:+.in
它检测shell脚本vc-chlog.in像这样的。用一个~/.ctag包含
--langdef=特新福--langmap=纹理信息:.texi.txi.Texinfo--regex texinfo=/^@节点[]+([^,]+)/\1/d,定义/
它检测Texinfo节点名称(vc-chlog公司使用一些启发式处理使用Exuberant Ctags时,标识符名称中有空格)。

Autoconf宏可以通过以下选项进行标记:

--langdef=m4--语言映射=m4:.m4.at.ac.as.m4sh--regex-m4=/^(m4_def(ine|un(|_once))|A[CU]_DEFUN(|O_once)|AU_ALIAS)\(\[*([A-zA-Z0-9_()+]+)/\5/d,定义/

vc-chlog公司尝试查找添加和删除的标识符通过检查文件的新版本和旧版本。在这里,它起作用了很难不更改工作目录中的任何文件,使用ctags-x并将所有中间文件保存在临时目录中。

对于某些语言,vc-chlog公司试图猜测函数的结束位置,因此,属性更改不会超过前一个标识符的末尾。

通常,vc-chlog公司在更改的文件列表中是准确的,false标识符列表中的负值源于插件失败了正确枚举所有标识符,或在函数之前进行更改,误报通常源于嵌套函数之类的构造。

使用vc-chlog公司项目中有多个ChangeLog文件

如果一个项目使用多个ChangeLog文件,vc-chlog公司假设发生了变化将记录在目录树上最近的日志文件中。一种可能性是调用vc-chlog公司始终从项目根开始的输出

找到-name ChangeLog|sed的,^\./--变更日志,'

进入.vc密码文件的根目录。