[PATCH v6 05/12] builtin/add: add ODB transaction around add_files_to_cache
- From
- nksingh85@gmail.com <nksingh85@gmail.com>
- Date
- Apr 5, 2022, 05:20 UTC
- Message-ID
- <20220405052018.11247-6-neerajsi@microsoft.com>
- In-Reply-To
- <pull.1134.v5.git.1648616734.gitgitgadget@gmail.com>
From: Neeraj Singh <neerajsi@microsoft.com>
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> --- builtin/add.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/builtin/add.c b/builtin/add.c index 9bf37ceae8e..e39770e4746 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -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; }
-- 2.34.1.78.g86e39b8f8d