Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

31 lines
878 B
Bash
Executable File

#! /usr/bin/env bash
#
# This updates the requested test repo's commit file to the current HEAD commit
# of that repo. If the repo isn't available, this does nothing. If the commit
# file doesn't exist yet, this creates it. It doesn't stage or commit the
# updated commit files.
[[ -z "$1" ]] && {
echo "sync-commit needs a local testsuite repository path as argument"
exit 1
}
repo="$1"
reponame=$(basename $repo)
commitfile=commit-hash.$reponame
[[ ! -d $repo || ! -d $repo/.git ]] && exit 0
commit=$(cd $repo && git log -1 --pretty=format:%H)
[[ -f $commitfile && $(cat $commitfile) == $commit ]] && exit 0
if [[ -n $commit ]]; then
echo "Pinning '$reponame' to $commit"
echo $commit >$commitfile
# If git knows the commit file, show diff:
if git ls-files --error-unmatch $commitfile >/dev/null 2>&1; then
git diff $commitfile
fi
fi