1. A method for performing conditionalized N-way merging of source code associated with a program, comprising: collecting differential information for each of N versions of source code, the source code having lines of text; constructing a merge data structure using the differential information, the merge data structure comprising a plurality of common blocks and delta blocks, wherein each common block defines a respective sequence of textual lines of source code, each delta block defines an addition or deletion or change to a corresponding common block, each common block and delta block being associated with a respective set of exclusionary definitions indicative of any source code versions not including the respective block; and merging the N versions into a single, semantically correct, unified version of source code associated with the program using the merge data structure, the single, semantically correct, unified version of source code associated with the program having preprocessing conditionals adapted to identify differences between the N versions.