1. A method, comprising: utilizing at least one processor to execute computer code that performs the steps of: receiving a request to merge at least one code branch with a first code branch, wherein the at least one code branch and the first code branch comprise different versions of software code; and simulating the requested merge via: identifying the differences between the at least one code branch and the first code branch; generating, based upon the identified differences, a differences list comprising a list of (i) added code snippets, (ii) deleted code snippets, and (iii) changed code snippets, wherein code snippets are clustered in the differences list by difference chunks, each of the difference chunks comprising connected code snippets; and building a relationship graph comprising a plurality of nodes and a plurality of edges, wherein each of the plurality of nodes represents at least a portion of a difference chunk and wherein each of the plurality of edges comprises a relationship between two of the plurality of nodes; wherein each of the plurality of edges comprises a cost vector representing both (i) a dependency and (ii) a similarity between the two of the plurality of nodes connected by the corresponding edge; performing the merge with the difference chunks.