I'm looking at booking advance tickets from Gloucester to Portsmouth Harbour and every time it seem to want me to change at Romsey and Eastleigh.
I'm pretty sure there are direct trains from Cardiff to PH via Bristol Temple Meads which I'd join at TM, so why am I being told to get off it at Romsey?
Short answer: it's not a permitted route to go via Southampton.
Longer answer:
The only map combinations in the routeing guide for Gloucester to Portsmouth Group are:
BL+XR - Stroud, Reading and Eastleigh
BL+XS - Stroud, Reading and Guildford
LG+XR - Bristol, (optionally Bath Spa), Reading and Eastleigh
LG+XS - Bristol, (optionally Bath Spa), Reading and Guildford
The shortest route is via Bristol, Bath, Westbury, Salisbury, Romsey and Eastleigh hence why that is what booking engines are coming up with. Booking engines will also generally allow travel via Southampton on a "VIA SALISBURY" ticket, since they will split the routeing check at Salisbury, and Salisbury to Portsmouth is permitted via Southampton. But if you want to travel on a through "GREAT WESTN ONLY" advance, your only option is to find a GWR train that goes direct from Romsey to Eastleigh avoiding Southampton.
--- old post above --- --- new post below ---
The cheapest way to do this journey on advance fares seems to be to split tickets at Westbury. You can get cheap "GREAT WESTN ONLY" advances on the through GWR trains from Gloucester to Westbury (e.g. leaving Gloucester at 0841) and again on the through GWR trains from Westbury to Portsmouth (e.g. leaving Westbury at 1101). You should be able to do it for £17 or so.