1
0
Fork 0
llvm-premerge-checks/containers/buildkite-linux/pre-checkout
2023-09-07 14:49:20 +02:00

52 lines
2 KiB
Bash
Executable file

#!/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