mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-02-11 14:53:43 -05:00
This commit allow to track branches from unusually-named remote refs and makes possible using external remotes (other than origin) for snapshots.
77 lines
2.2 KiB
Bash
Executable file
77 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# sfsnapshotgit - Snapshot script for Git repository
|
|
# Original author: Thomas Guyot-Sionnest <tguyot@gmail.com>
|
|
#
|
|
# Given an optional branch name (master by default), this script creates
|
|
# a snapshot from the tip of the branch and move it to ~/staging/.
|
|
# The repository, origin and destination directory can be overridden
|
|
# with environment variable (see below)
|
|
|
|
# Handle command errors (-e) and coder sleep deprivation issues (-u)
|
|
set -eu
|
|
trap 'echo "An error occurred in sfsnapshotgit at line $LINENO"; exit 1' EXIT
|
|
|
|
# Send all command output to STDERR while allowing us to write to STDOUT
|
|
# using fd 3
|
|
exec 3>&1 1>&2
|
|
|
|
# Git repository, origin and destination directory can be overridden by
|
|
# setting SFSNAP_REPO, SFSNAP_ORIGIN and SFSNAP_DEST respectively from the
|
|
# caller The defaults are:
|
|
SFSNAP_REPO=${SFSNAP_REPO-~/staging/nagiosplugins}
|
|
SFSNAP_ORIGIN=${SFSNAP_ORIGIN-origin}
|
|
SFSNAP_DEST=${SFSNAP_DEST-~/staging/snapshot}
|
|
|
|
# If one argument is given, this is the branch to create the snapshot from
|
|
if [ $# -eq 0 ]
|
|
then
|
|
HEAD='master'
|
|
elif [ $# -eq 1 ]
|
|
then
|
|
if [ -z "$1" ]
|
|
then
|
|
echo "If specified, the refspec must not be empty"
|
|
exit
|
|
fi
|
|
HEAD="$1"
|
|
else
|
|
echo "Too many arguments"
|
|
exit
|
|
fi
|
|
|
|
# Clean up and pull
|
|
cd "$SFSNAP_REPO"
|
|
# Sometimes "make dist" can modify versioned files so we must reset first
|
|
git reset --hard
|
|
git clean -qfdx
|
|
|
|
# Any branch used to create snapshots must already exist and be properly configured
|
|
git checkout "$HEAD"
|
|
|
|
# Get the remote tracking branch from config
|
|
origin=$(git config branch.$HEAD.remote)
|
|
ref=$(git config branch.$HEAD.merge |sed -e 's|^refs/heads/||')
|
|
git fetch "$origin"
|
|
git reset --hard "$origin/$ref"
|
|
|
|
# Tags are important for git-describe, but take only the ones from the hard-coded origin
|
|
git fetch --tags "$SFSNAP_ORIGIN"
|
|
|
|
# Write our snapshot version string (similar to NP-VERSION-GEN) to "release"
|
|
VS=$(git describe --abbrev=4 HEAD)
|
|
VS=${VS#release-}
|
|
|
|
# Configure and dist only if needed
|
|
if [ ! -e "$SFSNAP_DEST/nagios-plugins-$VS.tar.gz" ]
|
|
then
|
|
tools/setup
|
|
./configure
|
|
make dist VERSION=$VS RELEASE=snapshot
|
|
cp nagios-plugins-$VS.tar.gz "$SFSNAP_DEST/"
|
|
fi
|
|
|
|
# fd 3 goes to STDOUT; print the generated filename
|
|
echo "nagios-plugins-$VS.tar.gz" 1>&3
|
|
|
|
trap - EXIT
|
|
|