31 lines
878 B
Bash
Executable File
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
|