나는 두 가지 다른 커널 버전(공식 버전과 제조업체 버전)을 비교하고 있는데 파일의 메타데이터만 다릅니다. 메타데이터는 "$:Key: value$"와 같습니다. 이러한 것들을 수정하는 도구 세트가 있습니까? 이 데이터는 무엇에서 생성됩니까? sed를 통해 전체 소스 코드를 실행하여 오염시키지 않고 비교를 수행할 수 있는 방법이 있습니까?
한 가지 예:
--- ./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
Tante가 말했듯이 이는 $Word: ...$
일부 버전 제어 시스템(일반적으로 CVS 및 SubVersion)에 의해 삽입되고 업데이트됩니다.
GNU에는 특정 정규식과 일치하는 행을 제외하는 diff
옵션이 있습니다 . --ignore-lines-matching-re
이렇게 하면 트릭을 수행할 수 있습니다.
diff -wu --ignore-matching-lines='\$[A-Z][a-z]*:.*\$' -r sourceA/ sourceB/
( 정규식에서 줄 끝 표시로 해석되지 않도록 \
앞의 내용을 참고하세요.)$
답변2
CVS(버전 제어 시스템)에는 체크아웃할 때 특정 "자리 표시자"를 해당 값으로 바꾸는 기능이 있습니다(예를 들어 파일에서 체크아웃된 버전이나 작성자를 찾을 수 있습니다).
답변3
나는 bitkeeper가 "체크아웃 시 키워드 확장" 댄스를 수행한 것을 기억하는 것 같습니다. 이는 참조 날짜에 따른 차이를 설명할 수 있습니다(그러나 실제로 오래된 커널 소스인 경우에만). Bitkeeper 실패 이후 git에 체크인했을 때 소스 코드가 키워드 확장을 신뢰하지 않아서 그 시점에서 동결되었습니다.
어떤 커널 소스를 비교하고 있는지 알 수 있나요? 그냥 궁금해서요.