#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" WORKTREES_DIR="$ROOT_DIR/worktrees" if [ -z "$1" ]; then echo "Usage: create-git-worktree.sh [branch-name]" echo " worktree-name: Name for the worktree directory" echo " branch-name: Git branch (defaults to worktree-name)" exit 1 fi WORKTREE_NAME="$1" BRANCH_NAME="${2:-$1}" WORKTREE_PATH="$WORKTREES_DIR/$WORKTREE_NAME" if [ -d "$WORKTREE_PATH" ]; then echo "Error: Worktree already exists at $WORKTREE_PATH" exit 1 fi mkdir -p "$WORKTREES_DIR" echo "Creating worktree '$WORKTREE_NAME' with branch '$BRANCH_NAME'..." git -C "$ROOT_DIR" worktree add "$WORKTREE_PATH" -b "$BRANCH_NAME" 2>/dev/null || \ git -C "$ROOT_DIR" worktree add "$WORKTREE_PATH" "$BRANCH_NAME" ENV_FILES=( ".env" "copilot/.env" "database/powersync/.env" "database/supabase/.env" "shells/shell-web/.env" "shells/palace-mobile/.env" ) echo "Creating symlinks for .env files..." for env_file in "${ENV_FILES[@]}"; do src="$ROOT_DIR/$env_file" dest="$WORKTREE_PATH/$env_file" if [ -f "$src" ]; then mkdir -p "$(dirname "$dest")" ln -sf "$src" "$dest" echo " Linked: $env_file" fi done echo "Done! Worktree created at: $WORKTREE_PATH"