3) for the client it was not as easy as there wasn't such tag. I could assume I should use the last tag before that server tag, but I could well be wrong (client work could have started on the next milestone).

Hmm. The orion.map file has the exact tags for all included bundles, which are different from bundle to bundle (thus my method for getting the server code above was broken, as it may get code that was not contributed to that build) - that rang a bell now. I guess there is no single tag that is applied to all of the code? (that would allow one to get the right code with just a couple of git commands).

But as you noted this isn't helpful in Git because you can't checkout multiple tags on a repository at once (well you can but it's painful). It turns out in Orion we produce builds by tagging the contents of master at the start of the build. So in practice every Orion build contains the contents of master at the moment the build started. The timestamps of the tags themselves don't correlate with the time of the build... this just happens to work on the orion.server repository because that is where the map files live so they always change at the start of each build.

What would work is checking out the "greatest" tag from the map file in each repository. This is a bit painful to figure out but it's the best thing I can think of right now. For the server you had the right tag. For the client this is the 0.5 M1 commit: