On more than one occasion I've taken stick because I've built FPC from the published fpcbuild archive that's supposed to represent a specific version.
I use my own script that allows for me to set either the commit hash or branch/tag name. That provides me enough wiggle-room to play with
But indeed there are times when it can be difficult to find a hash that is able to build. I've tried that with a script solution as well (it cycles through tags and reports back on success/failure) but I'm not satisfied with that solution (yet).
Based on my experience with other projects I try to avoid relying in Git because (a) a Git archive consumes a substantial amount of space for no advantage and (b) if relying on Git it's difficult to specify that I'm at a particular checkpoint, from which I can move backwards (or forwards) incrementally.
It might be we have a different use case for trunk. I use 2 myself. One that I carefully inspect and use for development in order to either fix (existing) bugs and let my code-base slightly move towards new features (or test if that can be done) and the second for testing purpose, fixing bugs, craft patches etc.
The former is less updated and only when there is need for me while the second is usually never a 'real' install.
In the former was, I install the compiler itself with make and don't rely on the git sources because indeed it carries around a lot of (in my case unneeded) baggage. in the second form I more or less have to use git in order to be able to craft patches (well could be done alternatively but such patches will usually not be accepted
).