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
*
Tanteが言うように、それらの$Word: ...$
は、いくつかのバージョン管理システム(CVSとSubversion、通常)によって挿入および更新されます。
GNU diff
にはオプション--ignore-lines-matching-re
があり、特定の正規表現に一致する行を除外できます。これはトリックを行う必要があります:
diff -wu --ignore-matching-lines='\$[A-Z][a-z]*:.*\$' -r sourceA/ sourceB/
(正規表現で行末マーカーとして解釈されないように、\
の前の$
に注意してください。)
CVS(バージョン管理システム)は、チェックアウト時に特定の「プレースホルダー」をそれらの値に置き換えることができます(たとえば、ファイルにチェックアウトのバージョンや作成者が含まれています)。
ビットキーパーもこの「チェックアウト時にキーワードを拡張する」ダンスをしたことを覚えているようです。引用された日付までに、これが違いを説明するかもしれません(ただし、本当に古いカーネルソースの場合のみ)。ビットキーパーの大失敗の後、ソースはgitにチェックインしましたが、これはキーワードの拡張を信じていないため、その時点でフリーズします。
比較しているカーネルソースを知ることができますか?ちょっと興味があるんだけど。