52 lines
2 KiB
Bash
Executable file
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
|