在提交到 SVN 时,我可以添加一个顶级提交消息来详细说明正在提交的内容,但理想情况下,我希望有一种方法可以评论各个文件以及它们中发生的变化。我在以前的工作中看到过类似的东西,但这是使用 CVS(我不记得这是否是通过自制脚本生成骨架文件来实现的)
我已经查看了变更列表,但我不认为(尽管我愿意被证明是错误的)这给出了如下所述的粒度。
理想情况下,我正在寻找以下内容:
Foo.vb
- 新增功能栏
酒吧.vb
- 删除函数 foo
- 在 xyz 中添加功能以执行 abc +/- 修改功能以记录错误
每当您完成一项特定任务时,您就可以提交。无论如何,这应该会带来更好的评论。对三个必要文件的“实施的电子邮件验证”的评论比“添加的功能 verify_email”告诉我更多。我可以在差异中看到后者。
我会在单个提交消息中执行此操作。TortoiseSVN具有文件名自动补全功能,因此对此有很大帮助。
您可以做的另一件事是在提交之前 svn st 并将文件名复制/粘贴到您的提交消息中。
哦,一定要强烈质疑这个的价值。我知道一些 OSS 项目(linux?)需要这种保真度,但对于许多项目来说,这只是噪音。Diff 可以告诉你的远不止这些,而且更准确。
您可能要考虑的另一件事是使用Git。Git 允许您以较小的步骤在本地提交。然后,您将所有提交单独推送到主服务器,或者将所有提交消息压缩到单个提交中。这是一种简化的解释,但可能值得一试。
SVN 和 CVS 之间的本质区别之一是更改是原子提交的。在 CVS 中,每个文件都有自己的版本,但在 SVN 中,版本是针对整个项目的,包括一起签入的所有文件。
以下是解决方案的四个想法:
我写了一个项目来做这种叫做MOAP的事情
它的功能之一是从本地 diff 生成 ChangeLog 条目(目前支持 bazaar、cvs、svn、git 和 darcs)。您可以通过运行“moap changelog prepare”或“moap cl prep”来执行此操作,如果您启用该选项,该条目也可以包含更改的功能。
然后你去改变那个条目,描述你的改变。作为下一次提交的一部分,您可以删除不想提交的文件。
然后,您可以运行“moap changelog commit”来提交 ChangeLog 条目中描述的更改。它只会提交那里列出的文件,并将所有其他更改保留在本地。
希望有帮助!
如果对在每个提交的文件中写入注释的方式有一些规则,则可以获得这种结果。之后可以通过 svn 触发器提取这些注释。