2010. the subversion dilemma check in buggy code and drive everyone else crazy avoid checking it in...

59
2010

Upload: ashlee-harper

Post on 29-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

2010

Page 2: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

The Subversion Dilemma

Check in buggy code and drive everyone else crazy

Avoid checking it in until it’s fully debugged

or

Page 3: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

The Subversion Dilemma

Weeks without Version Control

Page 4: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Jens Schumacher – AtlassianWhat is DVCS and why it will

change the way we work

2010

Page 5: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Overview

1. Mercurial vs. Subversion 2. Basic concepts

3. Use cases

Page 6: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or
Page 7: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Page 8: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Merging

Page 9: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Branching

Page 10: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Repository Access

Page 11: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Performance

Page 12: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Sharing

Page 13: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Tool Support

Page 14: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Authentication

Page 15: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Check Out

Page 16: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion vs Mercurial

Page 17: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Overview

1. Mercurial vs. Subversion 2. Basic concepts

3. Use cases

Page 18: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Repository Architecture

Page 19: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion

Page 20: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Mercurial

Page 21: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Subversion

Revisions

Subversion is always linear

Page 22: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Mercurial

Changesets

head

Each Changeset can have multiple children

Page 23: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Mercurial

head

head

Page 24: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Mercurial

Pull

Merge

Page 25: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Mercurial

"hg commit" adds a new node

"hg push" and "hg pull" transfer nodes in the graph between two repositories

"hg merge" merge changes in a repository

Page 26: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Branching in Mercurial

• Forks

• Named Branches

• Bookmarks

• Anonymous Branches

Page 27: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Forks

Page 28: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Forks

• Complete Isolation

• Very easy to discard

• Forking is slower

DisadvantagesAdvantages

1 2

Page 29: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Forks

When to use Forks

• When you don’t have commit access

• To experiment

• For a build repository

Page 30: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Named Branches

Page 31: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Named Branches

• Branch Metadata

• Faster than Forking

• Branch Metadata

• Closing a Branch (fixed in 1.2)

DisadvantagesAdvantages

Page 32: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Named Branches

When to use Named Branches

• Working in a team on a feature

Page 33: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Bookmarks

Page 34: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Bookmarks

• Lightweight

• Can be deleted

• Similar to git

• Local (fixed in 1.6)

• Possible loss of context

DisadvantagesAdvantages

Page 35: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Bookmarks

When to use Bookmarks

• Working in a team on a feature

• If you like to way git does branching

• If you use Mercurial 1.6

Page 36: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Anonymous Branches

Page 37: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Anonymous Branches

• Fast

• No name required

• No closing required

• No description

• Changeset # required (lookup with hg log)

DisadvantagesAdvantages

Page 38: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Anonymous Branches

When to use Anonymous Branches

• For quick & small fixes

Page 39: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Overview

1. Mercurial vs. Subversion 2. Basic concepts

3. Use cases

Page 40: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

BitBucket

Mercurial code hosting

• Free for 5 users

• Unlimited public collaborators

• Unlimited disk space

Page 41: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Getting Started

Page 42: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

The Basics

hg init create a new repositoryhg commit save your changes in the current repositoryhg log see all changes in your repositoryhg pull pull all changes from another repository into yourshg push push your changes into another repositoryhg merge join different lines of history

hg update update the repository's working directoryhg help <command>

Page 43: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

Use CaseWork on several features in parallel

Page 44: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

$ hg clone project feature$ cd feature$ (do some changes and commits)

Clone

Page 45: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

$ cd ../project$ hg incoming ../feature

Incoming

Use hg incoming --patch to view the diffs

Page 46: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

$ hg pull ../feature

Pull

The history of feature one is now in your project. However, changes are not yet visible and only stored in the .hg directory

Page 47: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

$ hg merge

Merge

$ hg commit(enter commit message)

Commit

Page 48: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Separate Features

Changesets

Page 49: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Collaborative Feature Development

Use CaseUsing Mercurial to help coordinate the coding

Page 50: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Collaborative Feature Development

$ hg branch feature(do some changes)$ hg commit(write commit message)

Create a branch

$ hg update feature(do some changes)$ hg commit(write commit message)

Page 51: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Collaborative Feature Development

$ hg update default$ hg merge feature$ hg commit(write commit message)

Merge the named branch

Named branches stay in history as permanent records after you finished your work.

Page 52: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Collaborative Feature Development

Changesets

Page 53: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Tagging Revisions

Use CaseRelease a plugin

Page 54: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Tagging Revisions

$ hg tag -r 8 v0.1

Add a tag

$ hg tags

See all tags

$ hg update v0.1

Update to a tagged revision

Page 55: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Tagging Revisions

Tags

Page 56: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Overview

1. Mercurial vs. Subversion 2. Basic concepts

3. Use cases

Page 57: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Try BitBucket

bitbucket.org

Page 58: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Links

• http://mercurial.selenic.com

• http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial

• http://hgbook.red-bean.com/

Page 59: 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or

Thank you!