KIXEYE Quality Engineer & Hackbright Graduate
Erica currently works at KIXEYE as a Quality Engineer embedded in the Analytics Engineering Team. Prior to that, she was an Engineering Fellow at Hackbright Academy and studied finance as an undergraduate at the University of California at Riverside. She blogs about her journey into Python programming at Start Up My Mind.
By Erica Chang (Hackbright Academy – fall 2012 class)
This week, I decided to dive into the differences between GIT vs SVN and here’s what I came up with!
1. Git is a distributed version control system – which just means that when you do a git clone (+url of your repository) what you are actually getting is a complete copy of your entire history of that project. This means all your commits! Woot!
In Subversion or SVN, you are checking out a single version of the repository. Having the entire history on your local just means that even when you are not connected to the Internet, you can still do commits, diffs, logs, branches, merges, file annotations…
Git Work Flow
2. SVN has one central repository – which makes it easier for managers to have more of a top down approach to control, security, permissions, mirrors and dumps.
SVN Work Flow
3. SVN allows you to check out sub-trees (or branches) only where as Git requires you to check out the entire repository as a unit. This is because there is a .svn in each one of your folders where as git only has one .git at the top level parent directory.
4. Git has a staging area. This just means that if you made 100 new changes to your code, you can break these 100 changes into 10 or 20 or more commits each with their own comments and their own detailed explanation of what just happened! Not only can you stage your commits out to logically display what changes were made, you can also do patch staging that ask you if you want. You would use patch staging if you and a co-worker are both working on the same file and you only want to commit a particular function that you’ve worked on. You do a Git patch using “git add -p”
I’m sure there are a lot more ways that GIT and SVN differ. If you know of any more, please feel free to leave me some comments below!
Until next time…
ABC – Always be coding!
This blog post was originally posted at Erica Chang’s blog.