#!/usr/bin/env bash
set -euo pipefail
REMOTE_NAME="${1:-origin}"
BRANCH="${2:-}"
REPO_PATH="${3:-.}"
if [[ ! -d "$REPO_PATH" ]]; then echo "Error: directory not found: $REPO_PATH" >&2; exit 1; fi
cd "$REPO_PATH"
git fetch "$REMOTE_NAME" --quiet || true
if [[ -z "$BRANCH" ]]; then
    if git rev-parse --verify --quiet "$REMOTE_NAME/main" >/dev/null 2>&1; then BRANCH="main"
    elif git rev-parse --verify --quiet "$REMOTE_NAME/master" >/dev/null 2>&1; then BRANCH="master"
    else echo "Error: no default branch found for remote '$REMOTE_NAME'." >&2; exit 1; fi
fi
REF="$REMOTE_NAME/$BRANCH"
if ! git rev-parse --verify --quiet "$REF" >/dev/null 2>&1; then echo "Error: ref not found: $REF" >&2; exit 1; fi
git ls-tree -r "$REF" --name-only
