+ All Categories
Home > Business > Git As A Subversion Replacement

Git As A Subversion Replacement

Date post: 30-Nov-2014
Category:
Upload: josh-nichols
View: 20,476 times
Download: 1 times
Share this document with a friend
Description:
Gives an intro to git, from the perspective of subversion. Then goes on to show other git goodness.
46
Josh Nichols technicalpickles.com it’s kinda like subversion, but more awesome! git as a subversion replacement
Transcript
Page 1: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

it’s kinda like subversion, but more awesome!

git as a subversion replacement

Page 2: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Using how to use git in the same way you've gone accustomed to using subversion

• Advantages of using git even just like subversion

• Open source collaboration

• Building rails apps on git

Outline

Page 3: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Need to setup ~/.gitconfig

• Set things like email address and name

• Can setup command aliases for more svn like commands

Some initial setup

Page 4: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

~/.gitconf[user]email = "[email protected]"name = "Josh Nichols"[alias] st = status co = checkout ci = commit[color] branch = auto diff = auto status = auto

[color "branch"] current = yellow reverse local = yellow remote = green[color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold[color "status"] added = yellow changed = green untracked = cyan

Page 5: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

Let’s review some subversion workflows

Page 6: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

checkout

Initial checkout

Page 7: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

commit update

Commit and update

Page 8: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

cpsw

Branching

Page 9: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

Alright, let’s see the commands

Page 10: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• subversion:

• svn checkout http://somewhere.com/repo

• git:

• git clone http://somewhere.com/repo.git

Initial checkout

Page 11: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

checkout

git repository

developer A developer B

clone

Initial checkout

Page 12: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• subversion:

• keeps a copy of the last revision from repo

• git:

• keeps a copy of the entire repo

Differences between a checked-out repository

Page 13: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• subversion:

• can grab any particular path in the repository

• git:

• can only grab the entire repository

• if you copy a checked out repository somewhere, you can actually use it as a remote repository

Differences between a remote repository

Page 14: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• svn add path/to/file

• git:

• git add path/to/file

Adding a file

Page 15: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• used for adding new files

• git

• used for adding new files AND recording modifications to existing files

Differences for adding

Page 16: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• svn st

• git:

• git st

Status

Page 17: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• tracks: unversioned, new, deleted, modified

• git:

• tracks: unversioned, new, deleted, modified, modified but not ‘add’-ed

Differences for status

Page 18: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• svn commit

• git:

• git commit

• both:

• can specify files to commit

• can give commit message with -m

Committing

Page 19: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

commit

git repository

developer A developer B

commit

Commit

Page 20: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• sends changes to remote repository

• revision number is incrementing integer

• git:

• only commits to local repository

• revision number is hash of the commit

Differences for committing

Page 21: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn:

• svn commit

• git:

• git push

Pushing to a remote repository

Page 22: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

commit

git repository

developer A developer B

push

Push

Page 23: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• svn diff

• git

• git diff

Diff

Page 24: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• must be online

• git

• can be offline

Differences for diff

Page 25: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• svn revert some_file

• git

• git checkout some_file

• yeah, it’s not so obvious

Reverting

Page 26: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• git

• you don’t ‘revert’ as much as you ‘checkout’ a version of the last committed change

Differences for reverting

Page 27: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• svn update

• git

• svn pull

Updating

Page 28: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

update

git repository

developer A developer B

pull

Update

Page 29: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Mostly the same

• <<<<<

• =====

• >>>>>

Conflict resolution

Page 30: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• svn cp . http://somewhere.com/repo/branch/blarg

• svn sw --relocate http://somewhere.com/repo/branch/blarg .

• git

• git branch blarg

• git checkout blarg

Branching

Page 31: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

svn repository

developer A developer B

cpsw

git repository

developer A developer B

checkout -b

Branching

Page 32: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• makes changes immediately to remote repo

• git

• local repository only

• ‘git push origin blarg’ to send to remote

Differences for branching

Page 33: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• There are a lot of similarities between svn/git

• Main differences so far:

• online v. offline

• commits v. push

• changesets

• Questions?

Summary so far

Page 34: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Self-hosted

• by hand

• gitosis

• Hosted

• gitorious

• repo.or.cz

• GitHub

Git hosting solution

Page 35: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

Ok, so what’s better about git?

Page 36: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• svn

• svn diff > changes.diff

• svn revert -R .

• git

• git stash save

My stash

Page 37: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Extremely, extremely useful

• Something appealing about committing from the beach without internet access

Offline committing

Page 38: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• It actually works really well

• Can merge between branches as much as you want

• Don’t need to worry about specific revisions

• Encourages more branching

• fix branches, feature branches

Branching

Page 39: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• git checkout -b amazing_fixes

• make changes

• git commit -m “I fixed the hell out of this bug”

• git checkout master

• git merge amazing_fixes

• git push

Using a fix branch

Page 40: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Can work with multiple remote repositories

• push or pull

Distributed

Page 41: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

One repository to rule them all

Core contributor Core contributor

Random contributor Random contributor Random contributor

Pull

Push

Pull

Push

Pull Email patch

Page 42: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Play with subversion and cvs repositories using git!

• git svn clone http://somewhere.com/repo

• git svn dcommit

• replays all your git commits as svn commits

• git svn rebase

• replays remote commits as git commits locally

Subversiveness

Page 43: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• With subversion, only ‘authorized’ users can ‘commit’

• As a non-committer, can’t make incremental changes towards a big refactorings

• Typically would send patches around... problematic to make sure they are up to date

Open source collaboration

Page 44: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• git and github solve all these concerns

• behold, live demo!

Open source collaboration

Page 45: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

• Rails 2.1 it supports out of the box (script/install)

• Piston 1.9.x supports it

• LIVE DEMO!!!!1one

Rails development

Page 46: Git As A Subversion Replacement

Josh Nichols technicalpickles.com

Fin.


Recommended