img Version Control (Source Control): A system for tracking and managing changes to files over time. This allows for:

  • Tracking project history: Reviewing changes made throughout a project’s lifespan.
  • Backup and Restore: Revert to any previous state of the project.
  • Collaboration: Multiple developers can work concurrently, share code, review changes, and track individual contributions.

Types of Version Control Architectures:

  1. Centralized Version Control:

    • All files and their history are stored on a central server.
    • Developers check out files from the server, make changes, and check them back in.
    • Example: Apache Subversion (SVN)
    • Advantages: Simple to set up and manage.
    • Disadvantages: Single point of failure (if the server goes down, everyone loses access). Limited offline access.
  2. Distributed Version Control:

    • Developers maintain local copies (clones) of the entire project repository on their workstations.
    • Changes are committed locally and then pushed to a central repository (or other remote repositories).
    • Developers can pull changes from the central repository or other developer’s repositories to their local copy.
    • Example: Git
    • Advantages: Increased collaboration, offline access, multiple points of backup, better for larger teams and distributed development.
    • Disadvantages: Can be more complex to set up and manage than centralized systems.

Key Terms:

  • Working Copy: The local copy of the project on a developer’s workstation.
  • Commit: Saving changes to the local repository.
  • Push: Uploading changes from the local repository to a remote repository.
  • Pull: Downloading changes from a remote repository to the local repository.
  • Clone: Creating a local copy of a remote repository.

Note: Git is a popular example of a distributed version control system. The GitHub Foundations certification focuses on using Git through the GitHub platform.