2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in...

59
2010

Transcript of 2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in...

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!