зеркало из https://github.com/microsoft/git.git
Merge branch 'ps/ref-transaction-hook'
Code simplification by removing ineffective optimization. * ps/ref-transaction-hook: refs: remove lookup cache for reference-transaction hook
This commit is contained in:
Коммит
6ddd76fd6c
11
refs.c
11
refs.c
|
@ -1950,24 +1950,17 @@ int ref_update_reject_duplicates(struct string_list *refnames,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const char hook_not_found;
|
||||
static const char *hook;
|
||||
|
||||
static int run_transaction_hook(struct ref_transaction *transaction,
|
||||
const char *state)
|
||||
{
|
||||
struct child_process proc = CHILD_PROCESS_INIT;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *hook;
|
||||
int ret = 0, i;
|
||||
|
||||
if (hook == &hook_not_found)
|
||||
return ret;
|
||||
hook = find_hook("reference-transaction");
|
||||
if (!hook)
|
||||
hook = xstrdup_or_null(find_hook("reference-transaction"));
|
||||
if (!hook) {
|
||||
hook = &hook_not_found;
|
||||
return ret;
|
||||
}
|
||||
|
||||
strvec_pushl(&proc.args, hook, state, NULL);
|
||||
proc.in = -1;
|
||||
|
|
|
@ -7,11 +7,13 @@ test_description="Tests performance of update-ref"
|
|||
test_perf_fresh_repo
|
||||
|
||||
test_expect_success "setup" '
|
||||
git init --bare target-repo.git &&
|
||||
test_commit PRE &&
|
||||
test_commit POST &&
|
||||
printf "create refs/heads/%d PRE\n" $(test_seq 1000) >create &&
|
||||
printf "update refs/heads/%d POST PRE\n" $(test_seq 1000) >update &&
|
||||
printf "delete refs/heads/%d POST\n" $(test_seq 1000) >delete
|
||||
printf "delete refs/heads/%d POST\n" $(test_seq 1000) >delete &&
|
||||
git update-ref --stdin <create
|
||||
'
|
||||
|
||||
test_perf "update-ref" '
|
||||
|
@ -24,9 +26,14 @@ test_perf "update-ref" '
|
|||
'
|
||||
|
||||
test_perf "update-ref --stdin" '
|
||||
git update-ref --stdin <create &&
|
||||
git update-ref --stdin <update &&
|
||||
git update-ref --stdin <delete
|
||||
git update-ref --stdin <delete &&
|
||||
git update-ref --stdin <create
|
||||
'
|
||||
|
||||
test_perf "nonatomic push" '
|
||||
git push ./target-repo.git $(test_seq 1000) &&
|
||||
git push --delete ./target-repo.git $(test_seq 1000)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче