@@ -87,17 +87,45 @@ cd "$REPO_ROOT"
8787SPECS_DIR=" $REPO_ROOT /specs"
8888mkdir -p " $SPECS_DIR "
8989
90- HIGHEST=0
90+ # Get highest number from specs directory
91+ HIGHEST_FROM_SPECS=0
9192if [ -d " $SPECS_DIR " ]; then
9293 for dir in " $SPECS_DIR " /* ; do
9394 [ -d " $dir " ] || continue
9495 dirname=$( basename " $dir " )
9596 number=$( echo " $dirname " | grep -o ' ^[0-9]\+' || echo " 0" )
9697 number=$(( 10 #$number ))
97- if [ " $number " -gt " $HIGHEST " ]; then HIGHEST =$number ; fi
98+ if [ " $number " -gt " $HIGHEST_FROM_SPECS " ]; then HIGHEST_FROM_SPECS =$number ; fi
9899 done
99100fi
100101
102+ # Get highest number from branch names (both local and remote)
103+ HIGHEST_FROM_BRANCHES=0
104+ if [ " $HAS_GIT " = true ]; then
105+ # Get all branches (local and remote)
106+ branches=$( git branch -a 2> /dev/null || echo " " )
107+
108+ if [ -n " $branches " ]; then
109+ while IFS= read -r branch; do
110+ # Clean branch name: remove leading markers and remote prefixes
111+ clean_branch=$( echo " $branch " | sed ' s/^[* ]*//; s|^remotes/[^/]*/||' )
112+
113+ # Extract feature number if branch matches pattern ###-*
114+ if echo " $clean_branch " | grep -q ' ^[0-9]\{3\}-' ; then
115+ number=$( echo " $clean_branch " | grep -o ' ^[0-9]\{3\}' || echo " 0" )
116+ number=$(( 10 #$number ))
117+ if [ " $number " -gt " $HIGHEST_FROM_BRANCHES " ]; then HIGHEST_FROM_BRANCHES=$number ; fi
118+ fi
119+ done <<< " $branches"
120+ fi
121+ fi
122+
123+ # Use the highest number from either source
124+ HIGHEST=$HIGHEST_FROM_SPECS
125+ if [ " $HIGHEST_FROM_BRANCHES " -gt " $HIGHEST " ]; then
126+ HIGHEST=$HIGHEST_FROM_BRANCHES
127+ fi
128+
101129NEXT=$(( HIGHEST + 1 ))
102130FEATURE_NUM=$( printf " %03d" " $NEXT " )
103131
0 commit comments