1. A computer implemented method for semantic version control of source code, the computer implemented method comprising: scanning a source code file for relationships between source code sections within the source code file; constructing a semantic graph with dependencies and metadata describing the source code sections, wherein the dependencies indicate the relationships between the source code sections; and responsive to receiving changes for the semantic graph, modifying the semantic graph with the changes to form a modified semantic graph.