@@ -14,12 +14,12 @@ WORKTREE_PATH=""
1414
1515# --- Usage ---
1616usage () {
17- echo " Usage: $0 < name> [--claude] [--compiler]"
17+ echo " Usage: $0 [ name] [--claude] [--compiler]"
1818 echo " "
1919 echo " Creates a new git worktree with dependencies installed."
2020 echo " "
2121 echo " Arguments:"
22- echo " < name> Name for the worktree (also used as branch name )"
22+ echo " [ name] Name for the worktree (auto-generated if not provided )"
2323 echo " "
2424 echo " Options:"
2525 echo " --claude Launch Claude Code after setup"
@@ -75,13 +75,42 @@ while [[ $# -gt 0 ]]; do
7575 esac
7676done
7777
78+ # Generate worktree name with timestamp prefix
79+ TIMESTAMP=$( date +%Y-%m-%d-%H-%M-%S)
80+
7881if [[ -z " $NAME " ]]; then
79- usage
82+ # Word lists for random name generation
83+ ADJECTIVES=(
84+ " quick" " bright" " calm" " dark" " eager" " fair" " gentle" " happy" " idle" " jolly"
85+ " keen" " lively" " merry" " noble" " orange" " proud" " quiet" " rapid" " silent" " tall"
86+ " unique" " vivid" " warm" " young" " zealous" " ancient" " bold" " clever" " daring" " elegant"
87+ " fancy" " grand" " humble" " icy" " jagged" " kind" " loud" " magic" " narrow" " odd"
88+ " plain" " quaint" " rough" " sharp" " tender" " ultra" " vast" " wild" " xeric" " youthful"
89+ " zesty" " agile" " brave" " crisp" " deep"
90+ )
91+ NOUNS=(
92+ " apple" " bear" " cloud" " dragon" " eagle" " flame" " garden" " hill" " island" " jungle"
93+ " kettle" " lemon" " mountain" " night" " ocean" " panda" " quartz" " river" " storm" " tiger"
94+ " umbrella" " valley" " whale" " xenon" " yarn" " zebra" " anchor" " bridge" " canyon" " desert"
95+ " ember" " forest" " glacier" " harbor" " igloo" " jewel" " knight" " lantern" " meadow" " nebula"
96+ " oasis" " phoenix" " quest" " rocket" " shadow" " thunder" " unity" " vortex" " willow" " xylophone"
97+ " yonder" " zenith" " aurora" " beacon" " coral"
98+ )
99+
100+ # Generate random name: worktree-yyyy-mm-dd-hh-mm-ss-<adjective>-<noun>
101+ RANDOM_ADJ=${ADJECTIVES[$RANDOM % ${#ADJECTIVES[@]} ]}
102+ RANDOM_NOUN=${NOUNS[$RANDOM % ${#NOUNS[@]} ]}
103+ NAME=" worktree-${TIMESTAMP} -${RANDOM_ADJ} -${RANDOM_NOUN} "
104+ echo " Auto-generated worktree name: $NAME "
105+ else
106+ # Use provided name: worktree-yyyy-mm-dd-hh-mm-ss-<name>
107+ NAME=" worktree-${TIMESTAMP} -${NAME} "
108+ echo " Worktree name: $NAME "
80109fi
81110
82111# --- Check .gitignore ---
83- if ! grep -qE ' ^/?worktrees/?$' " $REPO_ROOT /.gitignore" 2> /dev/null; then
84- error " 'worktrees' is not in .gitignore. Add it before creating worktrees."
112+ if ! grep -qE ' ^/?\. worktrees/?$' " $REPO_ROOT /.gitignore" 2> /dev/null; then
113+ error " '. worktrees' is not in .gitignore. Add it before creating worktrees."
85114fi
86115
87116# --- Check if worktree already exists ---
@@ -90,7 +119,7 @@ if git worktree list | grep -q "\[$NAME\]"; then
90119fi
91120
92121# --- Set up worktree path ---
93- WORKTREES_DIR=" $REPO_ROOT /worktrees"
122+ WORKTREES_DIR=" $REPO_ROOT /. worktrees"
94123WORKTREE_PATH=" $WORKTREES_DIR /$NAME "
95124
96125if [[ -d " $WORKTREE_PATH " ]]; then
0 commit comments