Handles these cases:
old package new package
----------- -----------
A (hash = XYZ) B (hash = XYZ)
C (hash = XYZ)
D (hash = XYZ)
handled with relocations ( A -> B, A -> C, A -> D)
old package new package
----------- -----------
B (hash = XYZ)
C (hash = XYZ)
D (hash = XYZ)
set was again only adding one of these.. handled with
not using set and adding B, C, D as they were to delta.
This commit is contained in:
+7
-2
@@ -105,7 +105,11 @@ def find_delta(oldfiles, newfiles):
|
||||
files_old = set(map(lambda x:x.hash, oldfiles.list))
|
||||
files_delta = files_new - files_old
|
||||
|
||||
return map(lambda x:hashto_files[x][0], files_delta)
|
||||
deltas = []
|
||||
for hash in files_delta:
|
||||
deltas.extend(hashto_files[hash])
|
||||
|
||||
return deltas
|
||||
|
||||
def find_relocations(oldfiles, newfiles):
|
||||
|
||||
@@ -126,6 +130,7 @@ def find_relocations(oldfiles, newfiles):
|
||||
if hash in files_old and files_new[hash][0].path != files_old[hash][0].path:
|
||||
# symlinks are not relocated, they already come with the delta package
|
||||
if not os.path.islink("/" + files_old[hash][0].path):
|
||||
relocations.append((files_old[hash][0], files_new[hash][0]))
|
||||
for i in range(len(files_new[hash])):
|
||||
relocations.append((files_old[hash][0], files_new[hash][i]))
|
||||
|
||||
return relocations
|
||||
|
||||
Reference in New Issue
Block a user