i'd say a git aware of the AST for the language it's version controlling with a graph of substantive changes is where these things should head.