From 9ff18885e24529d43b9a0be2da863d1f52741789 Mon Sep 17 00:00:00 2001 From: Jason McDonald <jason.mcdonald@nokia.com> Date: Fri, 25 Sep 2009 14:19:14 +1000 Subject: Make syncqt order headers deterministically. Syncqt was relying on the order that headers appear in the filesystem. That order is effectively non-deterministic, meaning that the files generated when running syncqt on different copies of the same source are very hard to compare. For example, when generating source packages for the same sha1 twice in a row, you would expect to get identical source packages, but you don't because each packaging run downlaods the source tree from git, thus randomizing the order of files on the filesystem. This commit forces syncqt to be deterministic by making it sort each directory it reads before it processes the directory. On a side note: syncqt should probably be using Perl's File::Find function instead of recursing through directories itself. Reviewed-by: Lincoln Ramsay --- bin/syncqt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/syncqt b/bin/syncqt index 5cb5d86..6605bfa 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -529,7 +529,7 @@ sub findFiles { } else { ($dir =~ /\/$/) || ($dir .= "/"); } - foreach $file ( readdir(D) ) { + foreach $file ( sort readdir(D) ) { next if ( $file =~ /^\.\.?$/ ); $p = $file; ($file =~ /$match/) && (push @files, $p); -- cgit v0.12