Answer on post by izomiac located here:
You tell BitComet (or it determines based on hashes/filesize) which files are identical (in this case 3.avi in A & C and c.avi in B) and it downloads them to a single location without redundantly requesting blocks from both swarms.
To sum up, it’s impossible right now to compare files within different .torrent-s as .torrent’s structure is based on using pieces’s (not files’) hashing. In rare cases that might be usable, but several conditions must be met: same piece size & same order of files in all .torrent-s plus they all must be without “Private” flag. Even then (as of now) only consecutive files from the beginning of all .torrent-s could be used.
Example (A,a,1,01 are all the same file; B,b,2,02 is another group of same files etc.):
Torrent #1: A, B, C, D
#2: a, b, c, d, e, f, g.
#3: 04, 05, 06
#4: 5, 6, 7, 8
Only “A,B,C,D” and “a,b,c,d” files could be downloaded (.torrent-s must meet conditions above), not “e,f”, “5,6” and “05,06” as they are divided into different pieces (on making .torrent) => these pieces have different hashes => client considers them to be different.
And even such implementation (only theoretical) would be good for situation we have now…
You see, I’ve tried uploading two different completed torrents with some same files in both of them at the same time. BitComet (after some time) gave me “sharing violation” error with itself, though all files were opened for reading only by BitComet (of course, they all were 100% completed, their torrents stopped, manually rehashed and started over again %) )
WTF? Files opened for “read” can be accessed for reading by any number of any programs!
(try playing some long .mp3 in Winamp, archiving it with WinRAR & copying it to flash drive & to another HDD at the same time. No prob.) So there is a long way to go…