#!/bin/bash # Copyright 2020 Google LLC # # Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://llvm.org/LICENSE.txt # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # The `pre-checkout` hook will run just before your pipelines source code is # checked out from your SCM provider set -eu set -o pipefail # Convert https://github.com/llvm-premerge-tests/llvm-project.git -> llvm-project # to use the same directory for fork and origin. # BUILDKITE_BUILD_CHECKOUT_PATH="${BUILDKITE_BUILD_PATH}/$(echo $BUILDKITE_REPO | sed -E "s#.*/([^/]*)#\1#" | sed "s/.git$//")" gc_counter="$BUILDKITE_BUILD_PATH/git_gc_counter" echo "BUILDKITE_REPO: $BUILDKITE_REPO" if [ -d "$BUILDKITE_BUILD_CHECKOUT_PATH" ]; then cd "$BUILDKITE_BUILD_CHECKOUT_PATH" || exit remoteUrl=$(git remote get-url origin || echo "not a git repo") echo "current remote URL: $remoteUrl" if [ "$remoteUrl" != "$BUILDKITE_REPO" ]; then echo "Remote URL does not match. Deleting and recreating the directory." cd $BUILDKITE_BUILD_PATH rm -rf "$BUILDKITE_BUILD_CHECKOUT_PATH" rm -rf "$gc_counter" else # Run git gc from time to time to prevent repo from growing. echo -n "x" >> "$gc_counter" echo "GC counter $(wc -c < "$gc_counter")/20" if [ "$(wc -c < "$gc_counter")" -gt 20 ]; then echo "Running 'git gc'..." git gc git prune if [ -f ".git/gc.log" ]; then echo ".git/gc.log exist" cat ./.git/gc.log rm -f ./.git/gc.log fi rm -rf "$gc_counter" fi fi fi