diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-04-25 06:15:25 +1200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-04-25 06:15:25 +1200 |
commit | 2fc01f7cad3f0df92aa08b22072ee51f3b1b9db4 (patch) | |
tree | be1f1d2c1080a4efbe735da050af5a2cd2d0b337 | |
parent | d4533994918bacd3888882448781f7041ff2bf18 (diff) | |
download | dupfiles-2fc01f7cad3f0df92aa08b22072ee51f3b1b9db4.tar.gz |
Only report hardlinks as duplicates if there's another identical file as well.
If foo and bar are hardlinks to the same inode, and foobar is a file
with the same content, report all three. However, if there is no foobar
to be reported, do not report anything.
-rwxr-xr-x | dupfiles | 3 | ||||
-rwxr-xr-x | testit | 2 |
2 files changed, 4 insertions, 1 deletions
@@ -84,6 +84,9 @@ class DuplicateFileFinder(object): result = [] for size, tuples in self.by_size.iteritems(): + if len(set((dev, ino) for dev, ino, pathname in tuples)) == 1: + # All duplicates are hardlinks to the same inode. Skip. + continue by_checksum = dict() for dev, ino, pathname in tuples: checksum = self.file_checksum(pathname) @@ -92,7 +92,7 @@ class TwoHardlinksToSameContent(TestCase): def setUp(self): self.create('foo', 'foo') self.hardlink('foo', 'bar') - self.identical = ['foo', 'bar'] + self.identical = [] class TwoHardlinksToSameContentPlusSecondIdenticalCopy(TestCase): |