The Semantics of Version Control

As software becomes increasingly complex, software configuration management is becoming ever more important. This paper shows how logics for reasoning about mutable state, such as separation logic, can also be used to give semantics for version control systems. By applying these ideas from the programming language research community, developers may reason formally about the broader software development process.

[1]  Hugo Herbelin,et al.  The Coq proof assistant : reference manual, version 6.1 , 1997 .

[2]  Mike Mason Pragmatic Version Control: Using Subversion (The Pragmatic Starter Kit Series)(2nd Edition) , 2006 .

[3]  Marc J. Rochkind,et al.  The source code control system , 1975, IEEE Transactions on Software Engineering.

[4]  Robert W. Floyd,et al.  Assigning meaning to programs , 1967 .

[5]  Mike Mason Pragmatic Version Control Using Subversion , 2005 .

[6]  Scott Chacon,et al.  Pro Git , 2009, Apress.

[7]  Peter Dybjer,et al.  Intuitionistic Type Theory , 2016 .

[8]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[9]  Jason Dagit,et al.  Type-correct changes — a safe approach to version control implementation , 2009 .

[10]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[11]  P. Cederqvist,et al.  Version Management with CVS , 1993 .

[12]  Jennifer Vesperman Essential CVS , 2003 .

[13]  Bryan O'Sullivan,et al.  Mercurial: The Definitive Guide , 2009 .

[14]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[15]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[16]  Andres Löh,et al.  Exploring generic Haskell , 2004 .

[17]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[18]  Thorsten Altenkirch,et al.  Beauty in the beast , 2007, Haskell '07.

[19]  Bryan O'Sullivan,et al.  Making Sense of Revision-control Systems , 2009, ACM Queue.

[20]  David Roundy Darcs: distributed version management in haskell , 2005, Haskell '05.

[21]  Roland Carl Backhouse,et al.  Generic Programming: An Introduction , 1998, Advanced Functional Programming.

[22]  Wouter Swierstra,et al.  A functional specification of effects , 2009 .

[23]  Robert Harper,et al.  Homotopical patch theory , 2014, ICFP.

[24]  Peter Claussen Theories of programming languages , 2000, SOEN.

[25]  Michael Pilato Version Control with Subversion , 2004 .

[26]  Matt Zandstra,et al.  Version Control with Subversion , 2010 .

[27]  Stephen P. Berczuk,et al.  Streamed Lines: Branching Patterns for Parallel Software Development , 1998 .

[28]  Garrett Rooney Practical Subversion , 2004 .

[29]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[30]  Samuel Mimram,et al.  A Categorical Theory of Patches , 2013, MFPS.

[31]  P. van den Hamer,et al.  Managing design data: the five dimensions of CAD frameworks, configuration management, and product data management , 1996 .

[32]  Nate Foster,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[33]  Clarence A. Ellis,et al.  Concurrency control in groupware systems , 1989, SIGMOD '89.