From 95183eb5ebd63ee3ae4480a5022d2c132f90ba4c Mon Sep 17 00:00:00 2001 From: Robert Rosca <robert.rosca@xfel.eu> Date: Mon, 22 Feb 2021 15:50:09 +0100 Subject: [PATCH] Add a script for easy execution of diff-only pre-commit checks --- bin/pre-commit-diff.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 bin/pre-commit-diff.sh diff --git a/bin/pre-commit-diff.sh b/bin/pre-commit-diff.sh new file mode 100755 index 000000000..af24d1d81 --- /dev/null +++ b/bin/pre-commit-diff.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# We'd like to run the pre-commit hooks only on files that are being modified by +# this merge request, however `CI_MERGE_REQUEST_TARGET_BRANCH_SHA` is a'premium' +# feature according to GitLab... so this is a workaround for extracting the hash +CI_MERGE_REQUEST_TARGET_BRANCH_NAME="${1:-master}" # Set to master or 1st input +CI_COMMIT_SHA=$(git rev-parse HEAD) +CI_MERGE_REQUEST_TARGET_BRANCH_SHA=$(git ls-remote origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME | cut -d$'\t' -f1) +FILES=$(git diff $CI_COMMIT_SHA $CI_MERGE_REQUEST_TARGET_BRANCH_SHA --name-only | tr '\n' ' ') +echo "Running pre-commit on diff from $CI_COMMIT_SHA to $CI_MERGE_REQUEST_TARGET_BRANCH_SHA ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME)" +# Pass list of modified files to pre-commit so that it only checks them +echo $FILES | xargs pre-commit run --color=always --files -- GitLab