1

注: より適切な言葉はありませんが、ソース ファイルの先頭にある毛羽立ちと呼びます --

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

--キーワード置換に関するコメント。ただし、これが単なる転覆用語かどうかはわかりません。

とにかく、ここで質問です。ソースコードを取得するサードパーティのサプライヤがあります。これらの c ソースにはすべてこれらのキーワード subst コメントがあり、サプライヤから新しいバージョンを取得するたびに、すべての(1000 以上の) ファイルが変更されますこれらのファイルで作成されているため、唯一の変更はコメントです。これらのソースをコンパイルして使用する前に、変更された領域を確認するために大まかなコード レビューを行うことに関心があります。(リリース履歴を信用しないでください)。ただし、単純なフォルダー diff を実行すると明らかにすべてのファイルが一覧表示されるため、これはかなり困難です。

私が今探しているのは、これらの特殊な複数行のコメントをソース ファイルから削除する簡単なツールが既に存在するかどうかです。ファイルからそのようなものをスクラッチする 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 に答える