18
> Source Control > What you need to know. Davey McGlade - Kainos

Source control - what you need to know

Embed Size (px)

DESCRIPTION

Intro to source control

Citation preview

Page 1: Source control - what you need to know

> Source Control> What you need to know.

Davey McGlade - Kainos

Page 2: Source control - what you need to know

> Intro• Solution Architect ~15 years experience• In Kainos ~ 4 years• Focus on:

• .NET• Dynamics CRM 2011• SharePoint 2010• Integration technologies

Page 3: Source control - what you need to know

> What is Source Control?

• In essence, a backup repository for your work.

• Two types:• Centralised: All code on a central server• Distributed: Everyone gets a copy locally

• Definitely not:• Google Drive• Drop Box• C:\ • Email.

Page 4: Source control - what you need to know

> Why?

Recoverability Don’t lose work

Communication Easily see team changes

Versioning Compare and contrast

Accountability Who made the change?

Solve Problems Find bugs, try new things

Facilitate Reuse Avoid writing duplicate code

Page 5: Source control - what you need to know

> Just code?

NoAnything and everything that is used to build the solution:– Tools / Installers– Solution Build Scripts– Database Build scripts– Some include Functional Specifications & Design Docs

Aids the transition into support.

Page 6: Source control - what you need to know

> Terms

Trunk • The main ‘code line’. Contains the master code.

Branch • A deviation off the main code line.

Fork • Independent development on a copy from original

Commit • ‘Saving’ your code to the local/central repository

Push • Transfer changesets from the local to central

Pull • Retrieving changes from the central repository

Change set • The set of all delta changes

Merge • Combining your code changes with existing code

Tag • Marking a specific event, i.e. release 1.0 etc.

Page 7: Source control - what you need to know

> Centralised• A single ‘master’ copy of your code, held centrally on a server

• Changes are ‘committed’ to this central library.

• Once ‘committed’, other programmers can see the change.

• You can then ‘pull’ this change to your local machine.

• Examples of centralised source control systems – CVS, Subversion (or SVN) Team Foundation Server, Visual

SourceSafe

Page 8: Source control - what you need to know

> Workflow (Centralised)1. Access the central server and ‘pull’ down the changes others

have made

2. Make your changes, and test them

3. Commit (*) your changes to the central server, so other programmers can see them.

(*) Work out the merge conflicts (windiff, built in tools etc.)

Page 9: Source control - what you need to know

> Example Workflows (Centralised)• Branch by Release

Release 1

Release 2

Branch

V1.0 V1.1 V1.2

V2.0 V2.1 V2.2

Merge

• Branch by Feature / Task

Feature 1

Main Trunk

Branch Merge

BranchFeature 2 Merge

Page 10: Source control - what you need to know

> Distributed• Each developer ‘clones’ a copy of a repository to their own

machine. The full history of the project is on their own hard drive.

• Two phase commits: You commit first to your local staging area, and then push to the repository.

• Central Repository is not mandatory, but you usually have one

• Examples of distributed source control systems – Git, Mercurial, Bazaar

Page 11: Source control - what you need to know

> Workflow (Distributed)• Simple

Add Commit

• Branch by Member/ Features

Init/Clone Push

Development Trunk

V1.0 V1.1

Main Trunk

Developer 1

Developer 2

Page 12: Source control - what you need to know

> Is DVCS ‘better’?• It’s extremely quick. No network traffic, only local file lookups.

• You remove the risk of poor networks. Centralised checkouts typically aren’t atomic. Visual SourceSafe = nightmare.

• You can work locally, without affecting others. You can share work amongst a select few, without pushing to the team.

• You can work offline, and merge your changes when you’re online again.

• You have built in redundancy as the work is distributed amongst team members.

Page 13: Source control - what you need to know

> Git / Github demo

Demo Time

Page 14: Source control - what you need to know

> Branching & Merging Antipatterns

Some examples:• Merge Paranoia—avoiding merging at all cost, usually because of a fear of the

consequences.

• Big Bang Merge—deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.

• Never-Ending Merge—continuous merging activity because there is always more to merge.

• Temporary Branches—branching for changing reasons, so the branch becomes a permanent temporary workspace.

• Development Freeze—stopping all development activities while branching, merging, and building new base lines.

Source - http://branchingguidance.codeplex.com/wikipage?title=Branching%20and%20Merging%20Anti-Patterns

Page 15: Source control - what you need to know

> Taking it further

• Continuous Integration, Continuous Delivery • Unit Testing• Code Styling• Performance Monitoring• Broken Build fun

• Feature toggling – Martin Fowler, http://martinfowler.com/bliki/FeatureToggle.html

Page 16: Source control - what you need to know

> Tools• GitHub & Git

– www.github.com– http://git-scm.com/

• TortoiseSVN– http://tortoisesvn.net/

• TortoiseGIT– http://code.google.com/p/tortoisegit/wiki/Download

• Visual HG– http://visualhg.codeplex.com/

• Git & SVN together– http://infotexture.net/2010/02/git-to-svn-and-back-again/

Page 17: Source control - what you need to know

> Learning Resources• Git online interactive course

– http://try.github.com/levels/1/challenges/1

• Free Git Book– http://git-scm.com/book

• Intro to SVN (Pluralsight Trial)– http://pluralsight.com/training/Courses/TableOfContents/intro-to-svn

• Mercurial Intro– http://hginit.com/

• Git to SVN course– http://git.or.cz/course/svn.html

Page 18: Source control - what you need to know

> Contact Details

• Web – daveymcglade.net

• Twitter – @djmcglade

• Slides – Will be up on slideshare / website