
On 10/09/2015 09:42 AM, Sven Panne wrote:
For toy stuff you might be right, but in any larger project I've seen in the last decades, keeping branches well maintained *is* non-trivial. Normally you already have branches for different releases of your SW you still have to maintain, and with the proposed approach you would effectively multiply the number of those branches by the number of supported platforms/compilers. Much fun proposing that to your manager... This might work if you have only linear development and few platforms, but otherwise it won't scale.
Furthermore, having #ifdef-free code is a non-goal in itself: The goal we talk about is ease of maintenance, and as it's proposed, it makes a maintainer's life harder, not easier (you need much more steps + bookkeeping). And the merges e.g. only work automatically when the change in the #ifdef'd code would be trivial, too (adding/removing lines, etc.), so git doesn't offer any advantage.
It works, everyone else already does it, the complexity is there whether you branch or not, you'll never have merge conflicts, etc. I'm not sure how much effort you want me to expend convincing you to improve your life. I don't have this problem. Go try it instead of arguing that it can't possibly work.