Our shop is geographically distributed, and our current source control is centralized, slowing the source control operations (check-in/check-out) for developers far from it. If we migrate to GIT, would it make any of these operations faster?
views:
49answers:
3Git is very network efficient. It should be faster than your current SCM solution.
It depends how centralized it'd need to be in the future. For example, with Git, as an individual developer you can create a branch, do lots of work, keep making (instant) commits for each new thing you do/change, and nothing goes over the wire at all until you do a git push
! Any git pull
s you do would still be going over the wire as much as your svn update
s, of course..
If, however, your workflow is so centralized that you'd pretty much expect a centralized commit (i.e. a push), you'll still be going over the wire. Unless your connection is really bad, the difference in the protocols and what's being sent by each system is probably unimportant even though Git has a slight edge.
One potential advantage, though, could be if you have multiple developers at several sites. You could then set up separate git repositories at each site with all commits/check outs going over the local network only (from the developer POV) and then sync the repositories between shops or with a "central" repository once a day or whatever.
Perhaps I'm misunderstanding the question, but hopefully this at least helps a tiny bit.. :)
Answer this for yourself.
Put your code into git (dup your code base first):
git init
git add *
git commit -m "Initial import"
Clone it across your network, make a commit, and git-push it back.
git clone ssh://machine/path/to/repo.git
// Make some changes
git commit -a -m "Makin some changes"
git push origin
You don't actually have to migrate your repository or your work to do this test. If performance is satisfactory then work out migration or do some more tests to confirm. If it doesn't then toss out the repo and move on.
The immediate advantage to git being designed to be delocalized is that your repository state is hashed up into a SHA1 hash. This makes diffing your commit hierarchy across the wire much more efficient (it only sends the latest commit objects and doesn't have to compare the entire repository to know what needs to be sent: that is all contained in the commit hierarchy).