1. A method for performing conditionalized N-way merging of source code, comprising: collecting differential information for each of N versions of an original source code program, the original source code program having lines of text; constructing a merge data structure from the differential information; and merging the N versions into a merged source code program using the merge data structure, the single, semantically correct, unified program using preprocessing conditionals to capture the differences between the N versions.