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:
-
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.
-
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.