Basic Images
Version Control Systems
- Developers cannot work in Isolation, The code developed by one developer will be used by other Developers
- Now lets explore some options to implement this
- Network File Share:
- Can two people access the file simultaneously and make changes?
- Versioning for files is not supported directly
- Network File Share:
- To resolve these issue A Version Control System was created. Version Control System should have versions of changes made.
- During the course of 40 years, we have 3 major generations of version control systems
Generation-1 Version Control System
- Examples: RCS, SCCS
- Networking: Not supported
- Operations: One file at time
- Concurrency: Locks
Generation-2 Version Control Systems (Centralized)
- Examples: CVS, Visual Source Safe, Clear Case, Subversion etc..
- Networking: Centralized
- Operations: Multi-file
- Concurrency: yes
- In Generation we have two major models
- Clients should always be connected to servers
- Clients can work offline and connect to server before submitting changes
- All the code gets stored and versioned on the server.
- As the sites increase the administrative efforts increase and admins need to set up Disaster Recovery and Backups. Maintain sync between sites (VCS-Server)
Generation-3: Version Control Systems (Distributed)
- Examples: Git, Mercurial
- Operations: Changesets (Multi files)
- Network: Distributed
- GIT (global information tracker) was built by linus torvalds and he implemented a simple, clean distributed vcs.
Version Control System:
- This is a system that records changes to files, maintains history which we call as versions or revisions and It will help multiple users to connect to it & create, update, retrieve and delete the changes
Git:
- Git is a open-source and free software Refer Here.
- In Git We have two major use cases
- Client Software:
- Git
- GitBash
- Source Tree
- Tortoise Git
- Git has extensions in almost all IDEs.
- Server features on Git (Connectivity to clients, User Management)
- Gitolite (On-premise)
- GitHub
- GitLab
- BitBucket
- CodeCommit
- Azure Source Repo’s
- Client Software: