>> I'll suggest to use different branches for every port (including MS
> IMNSHO, this is a bad idea. Its only sure consequence will be
> divergence and bitrot of code, at least for MS Windows, because none
> of the people who care about that port have time to invest on merges.
If platform-specific code is well isolated, almost all merges are
conflict-less, automatic operations.
> The real price to pay will be the bugs we miss on each separate
> platform, which are only revealed on the other, due to a different
> compiler/library/environment/memory arrangement/whatever. How many
> times in the past bugs in the Emacs code were found on Windows (or
> even in the MS-DOS port)? Segregate the ports, and you will lose all
> that. In effect, the project will be split into several ones that
> hardly ever communicate.
I don't see how using a branch instead of #ifdef's with its associated
platform-specific macro definitions makes any difference here. With the
current setup hackers working on GNU/Linux are oblivious of bugs that
manifest only on MS Windows and depend on reports from other hackers or
users. If anything, using branches for ports would help to determine
where the bug was introduced: on platform-specific code or in the shared
code, as discriminating changes among those areas would be easy looking
at the VCS history.