1 Introduction

1.1 Version Control

  • Keeps track of changes. Example: ‘version 1’ -> ‘version 2’ -> ‘version 3’ git keeps track of all these versions. Helps go back and forth between them.

1.2 History of Version Control Systems

  • SCCS (Source Code Control System), 1972. Free with Unix. SCCS and Unix popularized each other.

    • Stored original version and sets of changes. Example: Version 5 is Version 1 + 4 sets of changes.

  • RCS (Revision Control System), 1982. Cross-platform. Faster.

    • Stored latest version and sets of changes. Latest version is most often used, not the original version.

The above two tracked changes in single files. Later version tracked multiple files (or projects).

  • CVS (Concurrent Versions System), 1986-1990. People could work concurrently (multi-user repositories).

  • Apache Subversion (SVN), 2000. Track text and images.

    • Track file changes collectively. There is no Version 7 of a file, but instead the file in Version 7.

    • Most popular until git.

  • BitKeeper SCM, 2000 (closed source).

    • Distributed Version Control. (A distributed version control system (DVCS) is a type of version control where the complete codebase — including its full version history — is mirrored on every developer’s computer.)

    • When this version was no longer free, Git was born.

  • Git (April 2005)

    • Created by Linus Torvalds (same guy who created Linux).

    • Open-source and free software.

    • Cross-playform (Linux, macOS, Windows).

1.3 Distributed Version Control

  • Different users maintain their own repositories.

  • No central repository

  • Changes are stored as change sets.

    • Track changes not versions.

    • Different from CVS and SVN, which track versions.

    • Change sets can be exchanged between repositories

  • No single master repository, many working copies.

  • Example: consider change sets A, B, C, D, E, F

    • Repo 1: A, B, C, D, E, F

    • Repo 2: A, B, C, D

    • Repo 3: A, B, C, E

    • Repo 4: A, B, E, F None of these are considered master repositories.