CSC/ECE 517 Fall 2010/ch1 1a mh: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
==Introduction== | ==Introduction== | ||
A version control system is used to manage files and directory structures and updates made to them in a software development, web development etc. projects. | A [http://en.wikipedia.org/wiki/Revision_control 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 [http://en.wikipedia.org/wiki/Software_configuration_management software configuration management] (SCM). | ||
Any 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. | 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. | This chapter focuses mainly on the development history of different version control systems. | ||
Line 11: | Line 9: | ||
The major issues in a dynamic development environment can be described as: | 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. | * 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. | * '''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. | ||
Line 18: | Line 18: | ||
* '''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. | * '''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 == | ==Popular version control softwares == | ||
== | ==Advantage/ disadvantage of different version control system== | ||
==Recent trends in version control systems== | ==Recent trends in version control systems== | ||
==references== | ==references== | ||
[http://svnbook.red-bean.com/en/1.5/svn-book.pdf SVN manual "Version Control with Subversion" ] | |||
==External links== | ==External links== | ||
[http://en.wikipedia.org/wiki/Revision_control Wikipedia: Revision control] | |||
[http://en.wikipedia.org/wiki/List_of_revision_control_software Wikipedia: List of revision control software] | |||
******** | ******** |
Revision as of 18:25, 7 September 2010
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