O que há com os metadados na fonte? Existem ferramentas para isso?

1

Estou comparando duas versões diferentes do kernel (uma oficial, uma de um fabricante); Existem milhares de arquivos cuja única diferença está nos metadados dos arquivos. Os metadados se parecem com '$: Key: value $'. Existe um conjunto de ferramentas que modificam essas coisas? O que gera esses dados? Existe alguma maneira de fazer um diff sem que isso poluam sem executar toda a fonte através do sed?

Um exemplo:

    --- ./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
  *
    
por Shawn J. Goff 06.10.2010 / 16:24

3 respostas

4

Como Tante diz, esses $Word: ...$ são inseridos e atualizados por alguns sistemas de controle de versão (CVS e SubVersion, tipicamente).

O GNU diff tem uma opção --ignore-lines-matching-re que pode excluir linhas que correspondem a uma determinada expressão regular. Este deve fazer o truque:

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

(Observe o \ antes de $ para evitar que ele seja interpretado como um marcador de fim de linha no regexp).

    
por 06.10.2010 / 17:22
1

O CVS (um sistema de controle de versão) pode substituir certos "Placeholders" por seus valores no momento da finalização da compra (assim você tem, por exemplo, a versão do caixa ou o autor no arquivo).

    
por 06.10.2010 / 16:31
0

Eu pareço lembrar que o bitkeeper também fez isso "expanda palavras-chave no checkout" dance, pelas datas citadas isso pode explicar as diferenças (mas somente se for para origens do kernel verdadeiramente antigas). Depois do fiasco do bitkeeper, as fontes foram checadas no git, que não acredita em expansão de palavra-chave, então elas congelariam naquele momento.

Podemos saber quais fontes de kernel você está comparando? Apenas curioso.

    
por 16.01.2013 / 04:50