| @@ -16,10 +16,10 @@ def normalized_recursive_directory_iterator(path): | |||||
| def create_map(name, L): | def create_map(name, L): | ||||
| return map(lambda x: os.path.join(name, x), L) | return map(lambda x: os.path.join(name, x), L) | ||||
| L = create_map(name, L) | L = create_map(name, L) | ||||
| yield (os.path.relpath(name, path), name, st.st_mode, st.st_uid, st.st_gid, st.st_size) | |||||
| yield (os.path.relpath(name, path), name, st.st_mode, st.st_uid, st.st_gid, st.st_size, st.st_mtime) | |||||
| Q = chain(L, Q) | Q = chain(L, Q) | ||||
| else: # file | else: # file | ||||
| yield (os.path.relpath(name, path), name, st.st_mode, st.st_uid, st.st_gid, st.st_size) | |||||
| yield (os.path.relpath(name, path), name, st.st_mode, st.st_uid, st.st_gid, st.st_size, st.st_mtime) | |||||
| name = next(Q, None) | name = next(Q, None) | ||||
| @@ -37,9 +37,9 @@ def _export_diff(mountpoint, origin_mountpoint, output_directory): | |||||
| def emit_compare(m, o): | def emit_compare(m, o): | ||||
| if m[2] != o[2] or m[3] != o[3] or m[4] != o[4]: | if m[2] != o[2] or m[3] != o[3] or m[4] != o[4]: | ||||
| print('Metadata change:', o[0]) | print('Metadata change:', o[0]) | ||||
| elif m[5] != o[5] : | |||||
| elif stat.S_ISREG(m[2]) and m[5] != o[5]: | |||||
| print('Size change:', o[0]) | print('Size change:', o[0]) | ||||
| elif stat.S_ISREG(m[2]) and filehash(m[1]) != filehash(o[1]): | |||||
| elif stat.S_ISREG(m[2]) and m[6] != o[6] and filehash(m[1]) != filehash(o[1]): | |||||
| print('Content change:', o[0]) | print('Content change:', o[0]) | ||||
| else: # no change | else: # no change | ||||
| pass # print('Compare:', m[0]) | pass # print('Compare:', m[0]) | ||||
| @@ -59,6 +59,10 @@ def _export_diff(mountpoint, origin_mountpoint, output_directory): | |||||
| elif m[0] > o[0]: | elif m[0] > o[0]: | ||||
| emit_removal(o) | emit_removal(o) | ||||
| o = next(oit, None) | o = next(oit, None) | ||||
| elif stat.S_ISDIR(m[2]) != stat.S_ISDIR(o[2]): | |||||
| emit_creation(m) | |||||
| m = next(mit, None) | |||||
| o = next(oit, None) | |||||
| else: | else: | ||||
| emit_compare(m, o) | emit_compare(m, o) | ||||
| m = next(mit, None) | m = next(mit, None) | ||||