1

注意:为了更好的词,我在源文件的开头称为绒毛——

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

--关键字替换评论,虽然我不知道这是否只是一个颠覆术语。

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

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

4

2 回答 2

1

就像是:

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

请注意,这仅适用于

  • 此类注释以/*...*/
  • 在第一行有$Id:
  • 之后什么都没有*/
  • */之前没有/*

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

我没有测试过!

于 2011-02-15T09:24:58.633 回答
0

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

如果在这种意义上没有任何可能,我会尝试建立一个 git 存储库来保存他们提供给您的版本。Git 允许您在导入或导出时使用过滤器,并且还支持忽略版本之间差异的此类标签。

于 2011-02-15T09:47:32.743 回答