An abstraction for version control systems Version Control Systems (VCS) allow developers to manage changes to software artifacts. Developers interact with VCSs through a variety of client programs such as graphical front ends or command line tools. It is desirable to use the same version control client program against different VCSs. Unfortunately no established abstraction over VCS concepts exists. Instead VCS client programs implement ad hoc solutions to support interaction with multiple VCSs. This thesis presents Pur an abstraction over version control concepts that allows building rich client programs that can interact with multiple VCSs. We provide an implementation of this abstraction and validate it by implementing a client application.