projects
/
dupemerge
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow --skip-hash and --skip-compare to be specified together
[dupemerge]
/
faster-dupemerge
diff --git
a/faster-dupemerge
b/faster-dupemerge
index 14360dc8c802d83c89132fe5780b7070fd0896f0..bc3a5afcbc180802af38153d471144ab5e31e6f4 100755
(executable)
--- a/
faster-dupemerge
+++ b/
faster-dupemerge
@@
-86,6
+86,7
@@
my $collapse_access = 0;
my $collapse_timestamp = 0;
my $collapse_zero = 0;
my $skip_compares = 0;
my $collapse_timestamp = 0;
my $collapse_zero = 0;
my $skip_compares = 0;
+my $skip_compare_preference = 0;
my $skip_hashes = 0;
my $skip_hashes_threshold = 0;
my $progress = 0;
my $skip_hashes = 0;
my $skip_hashes_threshold = 0;
my $progress = 0;
@@
-184,7
+185,7
@@
while ($#ARGV >= 0) {
} elsif ($arg eq '--zeros') {
$collapse_zero = 1;
} elsif ($arg eq '--trust' || $arg eq '--skip-compare') {
} elsif ($arg eq '--zeros') {
$collapse_zero = 1;
} elsif ($arg eq '--trust' || $arg eq '--skip-compare') {
- $skip_compare
s
= 1;
+ $skip_compare
_preference
= 1;
} elsif ($arg =~ /^--skip-hash(?:=(\d+)([KkMmGgTt]?))?$/os) {
my ($quantity, $unit) = ($1, $2);
$unit ||= '_';
} elsif ($arg =~ /^--skip-hash(?:=(\d+)([KkMmGgTt]?))?$/os) {
my ($quantity, $unit) = ($1, $2);
$unit ||= '_';
@@
-200,7
+201,8
@@
while ($#ARGV >= 0) {
t => 1000*1000*1000*1000,
T => 1024*1024*1024*1024,
);
t => 1000*1000*1000*1000,
T => 1024*1024*1024*1024,
);
- $skip_hashes = $skip_hashes_threshold = $quantity * $scale{$unit};
+ $skip_hashes = 0;
+ $skip_hashes_threshold = $quantity * $scale{$unit};
} elsif ($arg eq '--progress') {
$progress = 1;
} elsif ($arg eq '--verbose') {
} elsif ($arg eq '--progress') {
$progress = 1;
} elsif ($arg eq '--verbose') {
@@
-239,10
+241,6
@@
while ($#ARGV >= 0) {
}
}
}
}
-if ($skip_hashes && $skip_compares) {
- die "Cannot skip both hashes and compares.\n";
-}
-
@directories or usage;
if (defined($lock_file) && !$dry_run) {
@directories or usage;
if (defined($lock_file) && !$dry_run) {
@@
-597,7
+595,13
@@
while (<FIND>) {
print STDERR "weak_key=$weak_key inode=$inode name=$name\n" if $debug;
print STDERR "weak_key=$weak_key inode=$inode name=$name\n" if $debug;
- $skip_hashes = $size >= $skip_hashes_threshold;
+ if ($size >= $skip_hashes_threshold) {
+ $skip_hashes = 1;
+ $skip_compares = 0;
+ } else {
+ $skip_hashes = 0;
+ $skip_compares = $skip_compare_preference;
+ }
$input_links++;
merge_files if $weak_key ne $current_key;
$input_links++;
merge_files if $weak_key ne $current_key;