builtin/add: add ODB transaction around add_files_to_cache
The add_files_to_cache function is invoked internally by builtin/commit.c and builtin/checkout.c for their flags that stage modified files before doing the larger operation. These commands can benefit from batched fsyncing. Signed-off-by: Neeraj Singh <neerajsi@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4d33e2ba6b
commit
b4a0c6dc97
@ -141,7 +141,16 @@ int add_files_to_cache(const char *prefix,
|
||||
rev.diffopt.format_callback_data = &data;
|
||||
rev.diffopt.flags.override_submodule_config = 1;
|
||||
rev.max_count = 0; /* do not compare unmerged paths with stage #2 */
|
||||
|
||||
/*
|
||||
* Use an ODB transaction to optimize adding multiple objects.
|
||||
* This function is invoked from commands other than 'add', which
|
||||
* may not have their own transaction active.
|
||||
*/
|
||||
begin_odb_transaction();
|
||||
run_diff_files(&rev, DIFF_RACY_IS_MODIFIED);
|
||||
end_odb_transaction();
|
||||
|
||||
clear_pathspec(&rev.prune_data);
|
||||
return !!data.add_errors;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user