> +struct directory_versions { > + struct string_list versions; Maybe comment that this is an unordered list of basenames to <whatever the type of ci->merged.result is>. > @@ -442,6 +464,7 @@ static void process_entries(struct merge_options *opt, > struct strmap_entry *e; > struct string_list plist = STRING_LIST_INIT_NODUP; > struct string_list_item *entry; > + struct directory_versions dir_metadata; > > if (strmap_empty(&opt->priv->paths)) { > oidcpy(result_oid, opt->repo->hash_algo->empty_tree); > @@ -458,6 +481,9 @@ static void process_entries(struct merge_options *opt, > plist.cmp = string_list_df_name_compare; > string_list_sort(&plist); > > + /* other setup */ > + string_list_init(&dir_metadata.versions, 0); > + Might be clearer to just initialize dir_metadata as { STRING_LIST_INIT_NODUP }. The rest makes sense.