ChangeLogファイルが重複していないかチェックする

前回grep-changelogがPerlで書かれてることが分かりました。

   242	# If files were specified on the command line, parse those files in the
   243	# order supplied by the user; otherwise parse default files ChangeLog and
   244	# ChangeLog.NNN according to $reverse.
   245	unless (@ARGV > 0) {
   246	    @ARGV = ("ChangeLog");
   247	
   248	    push @ARGV,
   249	      map {"ChangeLog.$_"}
   250	        sort {$b <=> $a}
   251	          map {/\.(\d+)$/; $1}
   252	            do {
   253	                opendir D, '.';
   254	                grep /^ChangeLog\.\d+$/, readdir D;
   255	            };
   256	
   257	    @ARGV = reverse @ARGV if $reverse;
   258	}
   259	
   260	while (defined (my $log = shift @ARGV)) {
   261	    parse_changelog ($log) if -f $log;
   262	}
   263	
   264	
   265	# grep-changelog ends here.
takk@deb9:~$ 

246行目に、ChangeLogという文字列で初期化しているのが気になったのですが、何のことはない。後ろに4桁の数字のない、ただのChangeLogというファイルも存在してるだけですね。
このファイルを初期値に持つということは、ただのChangeLogは、必ず存在するファイルと考えれば良いのでしょう。
ChangeLogとChangeLog-****という命名規則の異なるファイルが混在すると、ChangeLogはもしかしたら、いずれかのChangeLog-****のコピーなのでは?
と憂慮してしまいます。
心配を取り除くため、一致するファイルがないか確認してみましょう。ChangeLogに対してだけでなく、すべてのファイルが不一致であることを確認します。
md5sumを使います。

takk@deb9:~/src/binutils-2.28/binutils$ md5sum ChangeLog*
cae1395d2ba32bd7aa1bff4ab668e89f  ChangeLog
cd19eaa8aa273aa4d61d7349e18c3389  ChangeLog-0001
4dd4f6db448208624501492aaaa8ab38  ChangeLog-0203
9f7cd70e402801d73a0ca89c1d3f3c54  ChangeLog-2004
8baed05a82856c5df1bed764e235c8d4  ChangeLog-2005
5f7af231d9ff88f0bc687eda9cd24e98  ChangeLog-2006
81f74beea5680160602e72f1bbbbf124  ChangeLog-2007
6ad444fdd71464b78979bb60bfc9dee2  ChangeLog-2008
f1f25632c9112f18ff9d9fc483c6f76f  ChangeLog-2009
b31314081b88b15ab4cc9466bca4897a  ChangeLog-2010
4544318b4a2588bbc6a0121481dda180  ChangeLog-2011
42a0b322de143a02fa7bdf9cad745e94  ChangeLog-2012
a772ed439a2155615a476b9391604cc0  ChangeLog-2013
a5bd2fda981f1c341aa4723ea0bb7430  ChangeLog-2014
7fe60a4d365119b06cac1807caf6ed44  ChangeLog-2015
130d6dbdc1fda07ca1394311897d313f  ChangeLog-2016
327b22f42304c37a85ebf08765a083da  ChangeLog-9197
d93f4b8b246d5c55c84ad1d8c777573d  ChangeLog-9899
takk@deb9:~/src/binutils-2.28/binutils$ 

さらに、フィールド1にソートをかけて、uniqしてみましょう。

takk@deb9:~/src/binutils-2.28/binutils$ md5sum ChangeLog* | cut -d' ' -f1 | sort | uniq -c
      1 130d6dbdc1fda07ca1394311897d313f
      1 327b22f42304c37a85ebf08765a083da
      1 42a0b322de143a02fa7bdf9cad745e94
      1 4544318b4a2588bbc6a0121481dda180
      1 4dd4f6db448208624501492aaaa8ab38
      1 5f7af231d9ff88f0bc687eda9cd24e98
      1 6ad444fdd71464b78979bb60bfc9dee2
      1 7fe60a4d365119b06cac1807caf6ed44
      1 81f74beea5680160602e72f1bbbbf124
      1 8baed05a82856c5df1bed764e235c8d4
      1 9f7cd70e402801d73a0ca89c1d3f3c54
      1 a5bd2fda981f1c341aa4723ea0bb7430
      1 a772ed439a2155615a476b9391604cc0
      1 b31314081b88b15ab4cc9466bca4897a
      1 cae1395d2ba32bd7aa1bff4ab668e89f
      1 cd19eaa8aa273aa4d61d7349e18c3389
      1 d93f4b8b246d5c55c84ad1d8c777573d
      1 f1f25632c9112f18ff9d9fc483c6f76f
takk@deb9:~/src/binutils-2.28/binutils$ 

2以上の数のMD5がないので、重複ファイルはありませんね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA