summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-08-31 15:49:52 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-08-31 15:49:53 -0700
commit6ddd76fd6c356c037b5d5272732900f1f952721e (patch)
tree68aecad307e522635c853e61a08e69f28c995e04
parentMerge branch 'jk/rev-input-given-fix' (diff)
parentrefs: remove lookup cache for reference-transaction hook (diff)
downloadtgif-6ddd76fd6c356c037b5d5272732900f1f952721e.tar.xz
Merge branch 'ps/ref-transaction-hook'
Code simplification by removing ineffective optimization. * ps/ref-transaction-hook: refs: remove lookup cache for reference-transaction hook
-rw-r--r--refs.c11
-rwxr-xr-xt/perf/p1400-update-ref.sh13
2 files changed, 12 insertions, 12 deletions
diff --git a/refs.c b/refs.c
index 6aa4893996..156fdcd459 100644
--- a/refs.c
+++ b/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;
diff --git a/t/perf/p1400-update-ref.sh b/t/perf/p1400-update-ref.sh
index d275a81248..ce5ac3ed85 100755
--- a/t/perf/p1400-update-ref.sh
+++ b/t/perf/p1400-update-ref.sh
@@ -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