CSC/ECE 517 Fall 2010/ch1 1a mh
Introduction
A version control system is used to manage software codes,files and directory structures and corresponding updates made to them in a software development, web development etc. projects. Version control is also known as Revision control, source control or software configuration management (SCM).
Any software coding project is a dynamic and fast paced environment. In a typical setting, code development for a project is performed in parallel by many developers. Thus, incorporating all the changes made, either simultaneously or at different times, poses a new type of challenge.
This chapter focuses mainly on the development history of different version control systems.
Why version control system is needed?
The major issues in a dynamic development environment can be described as:
- Obviously, merging of a lot of files. If we consider somebody to do merging manually, The sheer volume of communication required is overwhelming. This communication can be among the developers themselves in a small team or between the team leader in charge of merging and the rest of the group.
- Sandboxing / Branching: It is possible to make temporary code changes in an isolated area, usually in branch folder, for testing purpose. If the outcome is satisfactory then the code can be merged with the existing code, otherwise it can be discarded without having any impact on the main code.
- Accountability: if one of the developer breaks the code during development, It is tough to detect and naturally nobody steps forward to take the blame. A version control system can precisely indicate who caused the break in the code.
- If a certain code implementation doesn't work as expected, Reverting to last satisfactory state may be required.
- Code loss due to development on stale code. for example, two developers downloaded a certain file at 10AM. One of the developers modified foo_1() method and uploaded modified file at 10:30AM.The other developer modified foo_2() method and uploaded the same file at 10:45AM. Since the functions are in the same file, the second upload will overwrite the file uploaded by first developer at 10:30AM causing loss of his part of work.
- Even a lone coder might need to review why he made a certain change in code. Comments during code check-in can be a useful resource in such situation.
- Version control provides a form of documentation which makes tracking easy. i.e.-tagging is a kind of snapshot of all files and documents at a particular stage of development, usually during a stable release. This allows the developers to work with the exact files that were included in that release for bug-fixing purpose.
Development phases of version control systems
Popular version control softwares
Advantage/ disadvantage of different version control system
Recent trends in version control systems
references
SVN manual "Version Control with Subversion"
External links
Wikipedia: Revision control Wikipedia: List of revision control software