# # # patch "work.cc" # from [f76894ad7d35752ca48c770c6fcc9e2401d33089] # to [7202840b92a2aaf69aaa25112e624c03da9ec597] # ============================================================ --- work.cc f76894ad7d35752ca48c770c6fcc9e2401d33089 +++ work.cc 7202840b92a2aaf69aaa25112e624c03da9ec597 @@ -382,6 +382,11 @@ workspace::maybe_update_inodeprints() for (node_map::const_iterator i = new_nodes.begin(); i != new_nodes.end(); ++i) { node_id nid = i->first; + if (!is_file_t(i->second)) + continue; + file_t new_file = downcast_to_file_t(i->second); + bool all_same = true; + for (parent_map::const_iterator parent = parents.begin(); parent != parents.end(); ++parent) { @@ -389,26 +394,26 @@ workspace::maybe_update_inodeprints() if (parent_ros.has_node(nid)) { node_t old_node = parent_ros.get_node(nid); - if (is_file_t(old_node)) - { - node_t new_node = i->second; - I(is_file_t(new_node)); + I(is_file_t(old_node)); + file_t old_file = downcast_to_file_t(old_node); - file_t old_file = downcast_to_file_t(old_node); - file_t new_file = downcast_to_file_t(new_node); - - if (new_file->content == old_file->content) - { - split_path sp; - new_roster.get_name(nid, sp); - file_path fp(sp); - hexenc ip; - if (inodeprint_file(fp, ip)) - ipm_new.insert(inodeprint_entry(fp, ip)); - } + if (new_file->content != old_file->content) + { + all_same = false; + break; } } } + + if (all_same) + { + split_path sp; + new_roster.get_name(nid, sp); + file_path fp(sp); + hexenc ip; + if (inodeprint_file(fp, ip)) + ipm_new.insert(inodeprint_entry(fp, ip)); + } } data dat; write_inodeprint_map(ipm_new, dat);