An introduction to version control