diff options
Diffstat (limited to 'security/nss/fuzz/config/git-copy.sh')
-rwxr-xr-x | security/nss/fuzz/config/git-copy.sh | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/security/nss/fuzz/config/git-copy.sh b/security/nss/fuzz/config/git-copy.sh new file mode 100755 index 0000000000..fac8cbecf4 --- /dev/null +++ b/security/nss/fuzz/config/git-copy.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -ex + +if [ $# -lt 3 ]; then + echo "Usage: $0 <repo> <branch> <directory>" 1>&2 + exit 2 +fi + +REPO="$1" +COMMIT="$2" +DIR="$3" + +echo "Copy '$COMMIT' from '$REPO' to '$DIR'" +if [ -f "$DIR"/.git-copy ]; then + CURRENT=$(cat "$DIR"/.git-copy) + if [ $(echo -n "$COMMIT" | wc -c) != "40" ]; then + # On the off chance that $COMMIT is a remote head. + ACTUAL=$(git ls-remote "$REPO" "$COMMIT" | cut -c 1-40 -) + else + ACTUAL="$COMMIT" + fi + if [ "$CURRENT" = "$ACTUAL" ]; then + echo "Up to date." + exit + fi +fi + +rm -rf "$DIR" +git init -q "$DIR" +git -C "$DIR" fetch -q --depth=1 "$REPO" "$COMMIT" +git -C "$DIR" reset -q --hard FETCH_HEAD +git -C "$DIR" rev-parse --verify HEAD > "$DIR"/.git-copy +rm -rf "$DIR"/.git |