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:
11
refs.c
11
refs.c
@ -1950,24 +1950,17 @@ int ref_update_reject_duplicates(struct string_list *refnames,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char hook_not_found;
|
|
||||||
static const char *hook;
|
|
||||||
|
|
||||||
static int run_transaction_hook(struct ref_transaction *transaction,
|
static int run_transaction_hook(struct ref_transaction *transaction,
|
||||||
const char *state)
|
const char *state)
|
||||||
{
|
{
|
||||||
struct child_process proc = CHILD_PROCESS_INIT;
|
struct child_process proc = CHILD_PROCESS_INIT;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
|
const char *hook;
|
||||||
int ret = 0, i;
|
int ret = 0, i;
|
||||||
|
|
||||||
if (hook == &hook_not_found)
|
hook = find_hook("reference-transaction");
|
||||||
return ret;
|
|
||||||
if (!hook)
|
if (!hook)
|
||||||
hook = xstrdup_or_null(find_hook("reference-transaction"));
|
|
||||||
if (!hook) {
|
|
||||||
hook = &hook_not_found;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
|
||||||
|
|
||||||
strvec_pushl(&proc.args, hook, state, NULL);
|
strvec_pushl(&proc.args, hook, state, NULL);
|
||||||
proc.in = -1;
|
proc.in = -1;
|
||||||
|
@ -7,11 +7,13 @@ test_description="Tests performance of update-ref"
|
|||||||
test_perf_fresh_repo
|
test_perf_fresh_repo
|
||||||
|
|
||||||
test_expect_success "setup" '
|
test_expect_success "setup" '
|
||||||
|
git init --bare target-repo.git &&
|
||||||
test_commit PRE &&
|
test_commit PRE &&
|
||||||
test_commit POST &&
|
test_commit POST &&
|
||||||
printf "create refs/heads/%d PRE\n" $(test_seq 1000) >create &&
|
printf "create refs/heads/%d PRE\n" $(test_seq 1000) >create &&
|
||||||
printf "update refs/heads/%d POST PRE\n" $(test_seq 1000) >update &&
|
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" '
|
test_perf "update-ref" '
|
||||||
@ -24,9 +26,14 @@ test_perf "update-ref" '
|
|||||||
'
|
'
|
||||||
|
|
||||||
test_perf "update-ref --stdin" '
|
test_perf "update-ref --stdin" '
|
||||||
git update-ref --stdin <create &&
|
|
||||||
git update-ref --stdin <update &&
|
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
|
test_done
|
||||||
|
Reference in New Issue
Block a user