Browse Source

Merge branch 'ps/ref-transaction-hook'

Code simplification by removing ineffective optimization.

* ps/ref-transaction-hook:
  refs: remove lookup cache for reference-transaction hook
maint
Junio C Hamano 4 years ago
parent
commit
6ddd76fd6c
  1. 11
      refs.c
  2. 13
      t/perf/p1400-update-ref.sh

11
refs.c

@ -1950,24 +1950,17 @@ int ref_update_reject_duplicates(struct string_list *refnames, @@ -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;

13
t/perf/p1400-update-ref.sh

@ -7,11 +7,13 @@ test_description="Tests performance of update-ref" @@ -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" ' @@ -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

Loading…
Cancel
Save