CSC/ECE 517 Fall 2009/wiki1a 3 ee: Difference between revisions
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
===Repositories=== | ===Repositories=== | ||
Instead of a central project repository, each developer has their own local repository. This local repository is fully independent and behaves just as one would expect any repository to. One can commit changes, view change logs and roll back versions. But since it is fully self-contained on the developers machine, this can be done with no network connection. | Instead of a central project repository, each developer has their own local repository. This local repository is fully independent and behaves just as one would expect any repository to. One can commit changes, view change logs and roll back versions. But since it is fully self-contained on the developers machine, this can be done with no network connection. | ||
===Sharing Changes=== | ===Sharing Changes=== | ||
When a developer commits a change to their repository, that change set is assigned a [http://en.wikipedia.org/wiki/Globally_Unique_Identifier guid]. If another developer on the project wants to incorporate another users changes, they can pull changes associated with a specific guid from another repository. Because each developer controls their own repository, changes can be incorporated continuously as they are needed, instead of submitting changes and waiting on a "merge-master" to integrate new features. | When a developer commits a change to their repository, that change set is assigned a [http://en.wikipedia.org/wiki/Globally_Unique_Identifier guid]. If another developer on the project wants to incorporate another users changes, they can pull changes associated with a specific guid from another repository. Because each developer controls their own repository, changes can be incorporated continuously as they are needed, instead of submitting changes and waiting on a "merge-master" to integrate new features. | ||
Line 16: | Line 17: | ||
==Branching and Merging== | ==Branching and Merging== | ||
Another reason many projects are moving towards distributed systems is that giving each developer their own repository makes branching and merging natural. | Another reason many projects are moving towards distributed systems is that giving each developer their own repository makes branching and merging natural. | ||
===Branching=== | |||
Because every developer has their own separate repository, each of these can be treated like a [http://en.wikipedia.org/wiki/Branch_%28software%29 branch]. | |||
==Distributed Vs Centralized Version Control== | ==Distributed Vs Centralized Version Control== |
Revision as of 04:32, 9 September 2009
Distributed Version Control Systems
Overview of Distributed Version Control
Distributed version control is a type of revision control system where each user has their own content repository, rather than off in a central location. This allows for greater flexibility for individual developers within a project, as they can "do what they want" to their own version of the repository, without interference from other developers. As developers wish to incorporate external changes, they can "pull" a set of changes into their own repository.
Previously, centralized systems have been the only widely used version control systems. But recently, distributed version control systems have started to take hold in a big way.
Infrastructure
One reason distributed version control systems are gaining popularity is that the lack of a central "main" server empowers the individual developer.
Repositories
Instead of a central project repository, each developer has their own local repository. This local repository is fully independent and behaves just as one would expect any repository to. One can commit changes, view change logs and roll back versions. But since it is fully self-contained on the developers machine, this can be done with no network connection.
Sharing Changes
When a developer commits a change to their repository, that change set is assigned a guid. If another developer on the project wants to incorporate another users changes, they can pull changes associated with a specific guid from another repository. Because each developer controls their own repository, changes can be incorporated continuously as they are needed, instead of submitting changes and waiting on a "merge-master" to integrate new features.
Branching and Merging
Another reason many projects are moving towards distributed systems is that giving each developer their own repository makes branching and merging natural.
Branching
Because every developer has their own separate repository, each of these can be treated like a branch.