diff --git a/scripts/ci/jobs/code-coverage.yml b/scripts/ci/jobs/code-coverage.yml
index ac68e457ea9e42821953606ecb735be0d10d8b8f..d596e62dc295255059624b72e950614bd774022a 100644
--- a/scripts/ci/jobs/code-coverage.yml
+++ b/scripts/ci/jobs/code-coverage.yml
@@ -3,10 +3,7 @@ code coverage:
   extends:
     - .template-build-linux
   tags: [shell, envinf]
-  needs:
-    - job: "build linux: [USE_PYTHON=OFF]"
-      artifacts: false
-    - meta
+  needs: [meta]
   variables:
     CMAKE_PRESET: coverage
     TARGETS: "testrunner_coverage ctest_coverage"
diff --git a/scripts/ci/jobs/meta.yml b/scripts/ci/jobs/meta.yml
index c0c9ed1adf960fa91eb7b1f687f09c133b554c07..95d24af06b451a548bcffdc3b578ed87dc753929 100644
--- a/scripts/ci/jobs/meta.yml
+++ b/scripts/ci/jobs/meta.yml
@@ -1,6 +1,7 @@
 meta:
-  stage: .pre
+  stage: preparation
   tags: [shell]
+  needs: []
   variables:
     GIT_DEPTH: 1000
   script:
diff --git a/scripts/ci/jobs/pre-commit.yml b/scripts/ci/jobs/pre-commit.yml
index f49d071eb8d5fafeec37a7dc8250d2705d825343..64caf85b5040574f87557d7f3a7175fda800403f 100644
--- a/scripts/ci/jobs/pre-commit.yml
+++ b/scripts/ci/jobs/pre-commit.yml
@@ -1,21 +1,28 @@
 pre commit:
   stage: preparation
   image: $PRECOMMIT_IMAGE
+  rules:
+    - if: $CI_MERGE_REQUEST_IID
   needs: [ci_images]
   variables:
     SKIP: clang-format
   script:
     - pre-commit install
-    - pre-commit run --from-ref `git merge-base origin/master HEAD` --to-ref HEAD
-    - git diff --check `git merge-base origin/master HEAD` HEAD -- . ':!*.md' ':!*.pandoc' ':!*.asc' ':!*.dat' ':!*.ts'
+    - TARGET_SHA1=$(git show-ref -s ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME})
+    - pre-commit run --from-ref `git merge-base ${TARGET_SHA1} HEAD` --to-ref HEAD
+    - echo "Target branch is ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}, target sha is ${TARGET_SHA1}."
+    - git diff --check `git merge-base ${TARGET_SHA1} HEAD` HEAD -- . ':!*.md' ':!*.pandoc' ':!*.asc' ':!*.dat' ':!*.ts'
 
 clang-format:
   stage: check
   image: $PRECOMMIT_IMAGE
+  rules:
+    - if: $CI_MERGE_REQUEST_IID
   needs: [ci_images]
   allow_failure: true
   script:
     - pre-commit install
-    - pre-commit run clang-format --from-ref `git merge-base origin/master HEAD` --to-ref HEAD
+    - TARGET_SHA1=$(git show-ref -s ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME})
+    - pre-commit run clang-format --from-ref `git merge-base ${TARGET_SHA1} HEAD` --to-ref HEAD
   after_script:
     - git diff