mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
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.format_callback_data = &data;
|
||||||
rev.diffopt.flags.override_submodule_config = 1;
|
rev.diffopt.flags.override_submodule_config = 1;
|
||||||
rev.max_count = 0; /* do not compare unmerged paths with stage #2 */
|
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);
|
run_diff_files(&rev, DIFF_RACY_IS_MODIFIED);
|
||||||
|
end_odb_transaction();
|
||||||
|
|
||||||
clear_pathspec(&rev.prune_data);
|
clear_pathspec(&rev.prune_data);
|
||||||
return !!data.add_errors;
|
return !!data.add_errors;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue