从源文件中删除关键字替换注释?

时间:2011-02-15 09:18:18

标签: c version-control comments keyword-substitution

注意:对于一个更好的词,我在源文件的开头叫做绒毛 -

/* @(#) $Id: file.c,v 1.9 2011/01/05 11:55:00 user Exp $
   **************************************************************************
   * COPYRIGHT, 2005-2011                                                   *
   ...
 */

- Keyword Substitution评论,虽然我不知道这只是一个颠覆术语。

无论如何,现在到问题:我们有第三方供应商,我们从中获取源代码。这些c源所有都有这些关键字替换注释,每次我们从供应商处获得新版本时,所有(1000+)文件都会更改,因为他们更新了这些注释他们发送给我们的每个版本,即使没有源代码在这些文件中更改,所以更改是注释。现在,在我们编译和使用这些资源之前,我们有兴趣进行粗略的代码审查,以查看已更改的区域。 (永远不要相信发布历史)。但是,这很难,因为做一个简单的文件夹差异显然会列出所有文件。

我现在正在寻找的是,是否已经存在任何简单的工具来从源文件中删除这些特殊的多行注释。也许有人有一个指向grep或sed脚本的链接会从文件中删除这些内容吗?

2 个答案:

答案 0 :(得分:1)

类似的东西:

perl -ne 'if(m+/\*.*\$Id: +) $c = 1; print unless $c; if($c && m+\*/+) $c = 0;'

请注意,仅当

时才会起作用
  • 此类评论以/*...*/
  • 分隔
  • 在第一行有$Id:
  • */
  • 之后没有任何内容
  • */
  • 之前没有/*

并且它将删除评论开始和评论结束之间的所有行。

我还没有测试过它!

答案 1 :(得分:0)

首先,我会试着说服他们查看他们的版本控制系统(看起来好像他们使用RCS,仍然?)或者如果不可能让他们连接到svn或git服务器来提交他们的更改。但也许你已经做过了?

如果在这种意义上没有任何意义,我会尝试设置一个git存储库来保存它们提供给你的版本。 Git允许您在导入或导出时使用过滤器,并且还支持忽略版本之间增量的此类标记。