#! /bin/sh # # https://stackoverflow.com/questions/31278902/how-to-shallow-clone-a-specific-commit-with-depth-1 RELEASE=$1 MDATAFILE="/tmp/synclog.json" REPOURL="https://git.FreeBSD.org/ports.git" if ! fetch -q \ -o ${MDATAFILE} https://raw.githubusercontent.com/DragonFlyBSD/DeltaPorts/master/docs/synclog.json; then echo "Error fetching synclog" exit 1 fi if [ -z "${RELEASE}" ]; then RELEASE=$(jq -r '.current' ${MDATAFILE} ) fi export RELEASE COMMIT_ID=$(jq -r '.releases[] | select(.id == env.RELEASE) | ."base_commit"' ${MDATAFILE}) git init || exit 1 git remote add origin ${REPOURL} || exit 1 git fetch --depth 1 origin ${COMMIT_ID} || exit 1 git checkout FETCH_HEAD for p in \ $(jq -r '.releases[] | select(.id == env.RELEASE) | ."cherry-picks"[]' ${MDATAFILE}) do fetch -q -o - $p | git apply [ $? -eq 0 ] || exit done