Phong V. Cao Stony Brook University CSE-300 Final Presentation
In these slides, we will...
I. Define Version Control Systems (VCSs) 1. What is VCSs? 2. Different types of VCSs II. Compare Open-source VCSs software 1. Mercurial vs Git 2. Subversion (SVN) vs Git III. Compare VCSs Hosting Services 1. Bitbucket 2. GitHub 3. Google Code 4. SourceForge
I. Define Version Control Systems (VCSs)
I.1. What is Version Control Systems (VCSs)? a. At the very basic: - a repository of files, usually program source code - changes are recorded and can be reverted back later b. Additional features: - branching to create new features - push to remotes - collaboration through forking/clients
I.2. Different types of VCSs
1. Local Version Control Systems (LVCSs): - first type of VCSs - contain simple database that keeps all the changes to files - backup files into time-stamped directories => Drawbacks: - requires the server to be on to backup files - error prones during copying - doesn't allow collaboration
I.2. Different types of VCSs
2. Centralized Version Control Systems (CVCSs): - one server, many clients - record only changes made to files, not the files themselves. - allow collaboration => Drawbacks: - requires the server to be on to backup files - difficult to collaborate in subteams (hierarchical model)
I.2. Different types of VCSs
3. Distributed Version Control Systems (DVCSs): - one repositories, many fork repositories - allow collaboration in subteams, (hierarchical model) - independent of server availability (can record changes locally) => Drawbacks: - more complicated to use than LVCSs or CVCSs
II. Compare Open-source VCSs software
II.1. Git vs Mercurial Git
Mercurial
- Every commit is stored as a hashed
document
- Commits are stored as normal text
files containing changes
- New commit object must be created
to record changes
- No need to create new commit
objects
- Allow history modification & rewrite
- Allow modifications only before
commits
- Branches are snapshots
- Branches are new clones
- Staging area through git add
- Staging only exists in Record ext.
- Show commits that last touched each
line of a file
- N/A
II. Compare Open-source VCSs software
II.2. Git vs Subversion (SVN) Git
Subversion (SVN)
- Distributed each repository has
many client repos
- Centralized one server repository
connected with many clients
- master branch: latest stable
release; other branches: new features
- trunk directory: latest stable release;
branches directory: new features; tags: copies of trunk
- Subprojects (Git submodules) don't
update automatically
- Subprojects (SVN externals) update
automatically
- Staging allows users to modify
commits
- N/A
- Allows projects history to be modified
- N/A
- Support for SVN
- Don't support Git
III. Compare VCSs Hosting Services
III.1. Bitbucket - Web-based VCSs hosting service - Backed by Atlassian leading player in DevOps - Supports both Mercurial and Git - Free Plan: + Unlimited public & private repos + 5 people per private repo - Paid Plan: + Unlimited public repos + Prices increase as members of private repos increase
III. Compare VCSs Hosting Services
III.2. GitHub - Web-based VCSs hosting service - Most popular VCSs & DVCSs with 17.9 million repos - Supports both SVN and Git - Free Plan: + Unlimited public repos + No private repos - Paid Plan: + Unlimited public repos + Prices increase as number of private repos increases
III. Compare VCSs Hosting Services
III.3. Google Code - Complete, fully-fledged project hosting service - Only allows open-source projects - Supports Git, Mercurial and SVN - Restriction per member: + At most 25 repos, + At most 200MB upload file size, + At most 5GB total project size. - Free Plan: + Only public repos. No private repos - Paid Plan: None
III. Compare VCSs Hosting Services
III.4. SourceForge - Supports the most amount of major VCSs: + Git, Mercurial, SVN, CVS and Bazaar - Additional features: + Download metrics & analysis, + Unique subdomain URLs, + Documentation wikis, + Access to MySQL database. - Free Plan: + Only public repos. No private repos - Paid Plan: None