File size: 1,929 Bytes
0748838 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #!/usr/bin/env bash
set -euo pipefail
REPO_ID="${1:-}"
if [[ -z "$REPO_ID" ]]; then
echo "Usage: $0 <USER_OR_ORG>/<REPO_NAME>"
exit 2
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SSH_KEY_PATH="${SSH_KEY_PATH:-$HOME/.ssh/hf_codex_upload}"
SSH_CMD="ssh -i ${SSH_KEY_PATH} -o IdentitiesOnly=yes -o StrictHostKeyChecking=no"
if [[ -n "${TMP_DIR:-}" ]]; then
WORK_DIR="$TMP_DIR"
mkdir -p "$WORK_DIR"
else
WORK_DIR="$(mktemp -d /tmp/hf_model_repo_XXXXXX)"
fi
REPO_DIR="${WORK_DIR}/repo"
mkdir -p "$(dirname "$SSH_KEY_PATH")"
chmod 700 "$(dirname "$SSH_KEY_PATH")"
if [[ ! -f "$SSH_KEY_PATH" ]]; then
ssh-keygen -t ed25519 -f "$SSH_KEY_PATH" -N "" -C "hf-upload" >/dev/null
echo "[INFO] Generated SSH key: $SSH_KEY_PATH"
fi
echo ""
echo "1) Add this public key to https://huggingface.co/settings/keys :"
cat "${SSH_KEY_PATH}.pub"
echo ""
echo "2) After adding the key, run this script again to push."
echo ""
AUTH_MSG="$(ssh -o BatchMode=yes -i "$SSH_KEY_PATH" -o IdentitiesOnly=yes -T git@hf.co 2>&1 || true)"
if echo "$AUTH_MSG" | grep -q "Hi anonymous"; then
echo "[STOP] SSH key not linked yet. Add the key in Hugging Face settings, then rerun:"
echo " $0 $REPO_ID"
exit 1
fi
rm -rf "$REPO_DIR"
GIT_SSH_COMMAND="$SSH_CMD" git clone "git@hf.co:${REPO_ID}" "$REPO_DIR" >/dev/null
rsync -a --delete \
--exclude '.git/' \
--exclude 'output/**' \
--exclude '**/__pycache__/**' \
--exclude 'assets/best_model.pt' \
--exclude 'assets/best_model.pt.part-*' \
"$SCRIPT_DIR/" "$REPO_DIR/"
pushd "$REPO_DIR" >/dev/null
git config user.name "${GIT_AUTHOR_NAME:-hf-upload}"
git config user.email "${GIT_AUTHOR_EMAIL:-hf-upload@local}"
git add -A
if ! git diff --cached --quiet; then
git commit -m "Upload inference bundle" >/dev/null
fi
GIT_SSH_COMMAND="$SSH_CMD" \
GIT_TERMINAL_PROMPT=0 \
git push -u origin main
popd >/dev/null
echo "[DONE] https://huggingface.co/${REPO_ID}"
|