web-dev-qa-db-ja.com

ソースのメタデータはどうなっていますか?そのためのツールはありますか?

2つの異なるカーネルバージョン(1つは公式、もう1つはメーカーのもの)を比較しています。何千ものファイルがあり、その唯一の違いはファイル内のメタデータにあります。メタデータは「$:Key:value $」のようになります。このようなものを変更するツールのセットはありますか?このデータを生成するものは何ですか?ソース全体をsedに通さずに、これを汚染せずにdiffを実行する方法はありますか?

例:

    --- ./drivers/atm/idt77252.h  2010-10-05 14:53:01.787778390 -0400
+++ ../linux-2.6.21.x/drivers/atm/idt77252.h 2010-03-26 03:08:26.000000000 -0400
@@ -1,8 +1,8 @@
 /*******************************************************************
- * ident "$Id: idt77252.h,v 1.2 2001/11/11 08:13:54 ecd Exp $"
+ * ident "$Id: idt77252.h,v 1.1.1.1 2007-05-25 06:50:05 bruce Exp $"
  *
- * $Author: ecd $
- * $Date: 2001/11/11 08:13:54 $
+ * $Author: bruce $
+ * $Date: 2007-05-25 06:50:05 $
  *
  * Copyright (c) 2000 ATecoM GmbH
  *
1
Shawn J. Goff

Tanteが言うように、それらの$Word: ...$は、いくつかのバージョン管理システム(CVSとSubversion、通常)によって挿入および更新されます。

GNU diffにはオプション--ignore-lines-matching-reがあり、特定の正規表現に一致する行を除外できます。これはトリックを行う必要があります:

diff -wu --ignore-matching-lines='\$[A-Z][a-z]*:.*\$' -r sourceA/ sourceB/

(正規表現で行末マーカーとして解釈されないように、\の前の$に注意してください。)

4
Riccardo Murri

CVS(バージョン管理システム)は、チェックアウト時に特定の「プレースホルダー」をそれらの値に置き換えることができます(たとえば、ファイルにチェックアウトのバージョンや作成者が含まれています)。

1
tante

ビットキーパーもこの「チェックアウト時にキーワードを拡張する」ダンスをしたことを覚えているようです。引用された日付までに、これが違いを説明するかもしれません(ただし、本当に古いカーネルソースの場合のみ)。ビットキーパーの大失敗の後、ソースはgitにチェックインしましたが、これはキーワードの拡張を信じていないため、その時点でフリーズします。

比較しているカーネルソースを知ることができますか?ちょっと興味があるんだけど。

0
vonbrand