Do you actually do this? From what I hear (and this makes sense from what I know about formatting/parsing algorithms) it's a huge pain, and not implemented for many languages.
That's easyish: it's a one-way street. The OP imagined something where everyone checks out code in whatever state it's in, applies their own system, then transforms it back, with no artifacts. That's hard.
Same here, with a twist: the test suite does: global reformat (uncrustify or astyle, depending on the team), build, run the actual tests.
As people almost always run the test suite before checking code in, all the project stays properly formatted.
My experience is: each time a team started doing this, all coding-style related discussions vanished, and it became a non-issue.
It turns out it's a lot easier to accept a coding style you're not the one doing the actual formatting (this is why, BTW, I think stylechecking hooks alone are a bad idea).