main
Raw Download raw file

tissue status

Show tissue branch details and status.

Tissue Command

tissue status

Manual Workflow (bash + git)

Basic status check

# Check tissue setup status
tissue_status() {
    echo "Tissue Status Report"
    echo "===================="
    echo ""

    # Check if issues branch exists
    if git show-ref --verify --quiet refs/heads/issues; then
        echo "✓ Issues branch exists"
    else
        echo "✗ Issues branch not found"
        return 1
    fi

    # Check if worktree is set up
    WORKTREE_PATH=$(git worktree list | grep "issues" | awk '{print $1}')
    if [ -n "$WORKTREE_PATH" ]; then
        echo "✓ Worktree configured at: $WORKTREE_PATH"
    else
        echo "✗ No worktree found for issues branch"
    fi

    # Count issues by status using yq
    if [ -d "../issues" ] || [ -n "$WORKTREE_PATH" ]; then
        ISSUES_DIR="${WORKTREE_PATH:-../issues}"

        echo ""
        echo "Issue Statistics:"
        echo "-----------------"

        TOTAL=0
        OPEN=0
        IN_PROGRESS=0
        CLOSED=0
        BLOCKED=0

        for file in "$ISSUES_DIR"/*.md; do
            [ -f "$file" ] || continue
            [ "$(basename "$file")" = "README.md" ] && continue

            ((TOTAL++))

            STATUS=$(yq --front-matter '.status // "unknown"' "$file" 2>/dev/null)
            case "$STATUS" in
                open) ((OPEN++)) ;;
                in-progress) ((IN_PROGRESS++)) ;;
                closed) ((CLOSED++)) ;;
                blocked) ((BLOCKED++)) ;;
            esac
        done

        echo "Total issues: $TOTAL"
        if [ "$TOTAL" -gt 0 ]; then
            echo "  Open:        $OPEN"
            echo "  In Progress: $IN_PROGRESS"
            echo "  Closed:      $CLOSED"
            echo "  Blocked:     $BLOCKED"
        fi
    fi

    # Check sync status with remote
    echo ""
    echo "Remote Status:"
    echo "--------------"

    cd "$ISSUES_DIR" 2>/dev/null || cd ../issues 2>/dev/null || {
        echo "Cannot access issues directory"
        return 1
    }

    # Fetch latest (without merging)
    git fetch origin issues 2>/dev/null

    # Check if we're behind or ahead
    LOCAL=$(git rev-parse issues 2>/dev/null)
    REMOTE=$(git rev-parse origin/issues 2>/dev/null)
    BASE=$(git merge-base issues origin/issues 2>/dev/null)

    if [ "$LOCAL" = "$REMOTE" ]; then
        echo "✓ In sync with remote"
    elif [ "$LOCAL" = "$BASE" ]; then
        BEHIND=$(git rev-list --count issues..origin/issues)
        echo "⚠ Behind remote by $BEHIND commits"
        echo "  Run: tissue pull"
    elif [ "$REMOTE" = "$BASE" ]; then
        AHEAD=$(git rev-list --count origin/issues..issues)
        echo "⚠ Ahead of remote by $AHEAD commits"
        echo "  Run: tissue push"
    else
        echo "⚠ Diverged from remote"
        echo "  Local and remote have diverged. Manual merge required."
    fi
}

tissue_status

What tissue does for you:

  1. Provides comprehensive status overview
  2. Checks configuration integrity
  3. Shows sync status with remote
  4. Identifies issues needing attention
  5. Validates issue file structure
  6. Reports on recent activity
  7. Performs health checks
  8. Shows statistics and metrics
  9. Alerts on stale or blocked issues
  10. Manages worktree status