91 lines
2.6 KiB
Bash
Executable File
91 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script provides a read-only overview of the repository's status.
|
|
# It does not modify any files, Git history, or infrastructure.
|
|
|
|
set -euo pipefail
|
|
|
|
# Go to the repository root.
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
cd "$REPO_ROOT"
|
|
|
|
echo "--- Git Status ---"
|
|
# Refresh local remote-tracking metadata only. Does not change source files, history, or branches.
|
|
echo "Refreshing remote-tracking branches..."
|
|
git fetch --prune origin &> /dev/null || echo "WARN: Could not fetch from origin."
|
|
|
|
echo "Repository root: $REPO_ROOT"
|
|
|
|
# Get current branch
|
|
CURRENT_BRANCH=$(git branch --show-current)
|
|
echo "Current branch: $CURRENT_BRANCH"
|
|
|
|
# Get local HEAD SHA and subject
|
|
LOCAL_HEAD_SHA=$(git rev-parse HEAD)
|
|
LOCAL_HEAD_SUBJECT=$(git log -1 --format=%s)
|
|
echo "Local HEAD: $LOCAL_HEAD_SHA ($LOCAL_HEAD_SUBJECT)"
|
|
|
|
# --- Remote Status ---
|
|
# Check for a configured upstream branch
|
|
UPSTREAM_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name "@{u}" 2>/dev/null || echo "")
|
|
|
|
# Check for a remote-tracking ref matching the current branch name
|
|
MATCHING_REMOTE_REF="origin/$CURRENT_BRANCH"
|
|
REMOTE_TRACKING_REF=$(git rev-parse --verify "$MATCHING_REMOTE_REF" 2>/dev/null || echo "")
|
|
|
|
if [ -n "$UPSTREAM_BRANCH" ]; then
|
|
echo "Configured upstream: $UPSTREAM_BRANCH"
|
|
REMOTE_REF_TO_COMPARE="$UPSTREAM_BRANCH"
|
|
else
|
|
echo "Configured upstream: unavailable"
|
|
if [ -n "$REMOTE_TRACKING_REF" ]; then
|
|
REMOTE_REF_TO_COMPARE="$MATCHING_REMOTE_REF"
|
|
else
|
|
REMOTE_REF_TO_COMPARE=""
|
|
fi
|
|
fi
|
|
|
|
if [ -n "$REMOTE_REF_TO_COMPARE" ]; then
|
|
REMOTE_HEAD_SHA=$(git rev-parse "$REMOTE_REF_TO_COMPARE")
|
|
AHEAD_BEHIND=$(git rev-list --left-right --count "$REMOTE_REF_TO_COMPARE"...HEAD)
|
|
BEHIND=$(echo "$AHEAD_BEHIND" | cut -f1)
|
|
AHEAD=$(echo "$AHEAD_BEHIND" | cut -f2)
|
|
echo "Remote tracking ref: $REMOTE_REF_TO_COMPARE"
|
|
echo "Remote HEAD: $REMOTE_HEAD_SHA"
|
|
echo "Ahead: $AHEAD"
|
|
echo "Behind: $BEHIND"
|
|
else
|
|
echo "Remote tracking ref: unavailable"
|
|
echo "Remote HEAD: unavailable"
|
|
echo "Ahead: unavailable"
|
|
echo "Behind: unavailable"
|
|
fi
|
|
|
|
echo ""
|
|
echo "--- Working Tree Status ---"
|
|
git status --short
|
|
|
|
echo ""
|
|
echo "--- Last 5 Commits (current branch) ---"
|
|
git log -5 --oneline --decorate
|
|
|
|
echo ""
|
|
echo "--- Documentation State ---"
|
|
if [ -f "docs/WORKING_STATE.md" ]; then
|
|
echo "- WORKING_STATE.md: Present"
|
|
else
|
|
echo "- WORKING_STATE.md: Missing"
|
|
fi
|
|
|
|
if [ -f "docs/DECISIONS.md" ]; then
|
|
echo "- DECISIONS.md: Present"
|
|
else
|
|
echo "- DECISIONS.md: Missing"
|
|
fi
|
|
|
|
if [ -f "docs/AGENT_OPERATING_PROTOCOL.md" ]; then
|
|
echo "- AGENT_OPERATING_PROTOCOL.md: Present"
|
|
else
|
|
echo "- AGENT_OPERATING_PROTOCOL.md: Missing"
|
|
fi
|