deltas: Search for similar objects (possibly renamed across directories)

The previous diff algorithm was file tree based, and only looked
at modified files that lived at the same path.

However, components like the Linux kernel have versioned
subdirectories, e.g. /usr/lib/modules/$kver/.../ext4.ko.  We want to
be able to detect these "modified renames" so that we can compute
diffs (rollsum, bsdiff).
This commit is contained in:
Colin Walters committed 2015-02-16 10:10:35 -05:00
1 parent 0f74ed62b7
commit c54df89771
4 files changed
+402 -67

No files matched your search

@@ -152,4 +152,23 @@ _ostree_repo_static_delta_part_have_all_objects (OstreeRepo *repo,
gboolean *out_have_all,
GCancellable *cancellable,
GError **error);
typedef struct {
char *checksum;
guint64 size;
GPtrArray *basenames;
} OstreeDeltaContentSizeNames;
void _ostree_delta_content_sizenames_free (gpointer v);
gboolean
_ostree_delta_compute_similar_objects (OstreeRepo *repo,
GVariant *from_commit,
GVariant *to_commit,
GHashTable *new_reachable_regfile_content,
guint similarity_percent_threshold,
GHashTable **out_modified_regfile_content,
GCancellable *cancellable,
GError **error);
G_END_DECLS