Code Management (Version Control)

85
Code Management

description

Talk given about Code Management at Summer of Code 3

Transcript of Code Management (Version Control)

Page 1: Code Management (Version Control)

Code Management

Page 2: Code Management (Version Control)

About me

Thong KuahProjectX Technology

<[email protected]>

Page 3: Code Management (Version Control)

ChangeChange

Page 4: Code Management (Version Control)
Page 5: Code Management (Version Control)
Page 6: Code Management (Version Control)

ChangeChange

Page 7: Code Management (Version Control)

Common code problems

Page 8: Code Management (Version Control)

Where is that file?

Page 9: Code Management (Version Control)

ChangeWhere is everything?

Page 10: Code Management (Version Control)

What just

broke?

Page 11: Code Management (Version Control)

Who dunnit?

Page 12: Code Management (Version Control)

I'm sure nothing's changed

Page 13: Code Management (Version Control)

Code Management

ChangeFix it now

Page 14: Code Management (Version Control)

Messy Messy fixesfixes

Page 15: Code Management (Version Control)

PatchworkPatchworkofof

changeschanges

Page 16: Code Management (Version Control)
Page 17: Code Management (Version Control)

Change

Where is that file? Where is that bug? Who last changed this file?

Who made that change, when and why?

Has the code changed or not? How is it different?

Can you put your fixes into my files? Messy fixes

...

Page 18: Code Management (Version Control)
Page 19: Code Management (Version Control)

Change

How to manage change?

Page 20: Code Management (Version Control)
Page 21: Code Management (Version Control)

How?

Tools&

Practices

Page 22: Code Management (Version Control)

Practices is up to you & team

Page 23: Code Management (Version Control)

Tools

Page 24: Code Management (Version Control)
Page 25: Code Management (Version Control)

Tools

SVNGit

Page 26: Code Management (Version Control)

Basics

You get codeYou change codeYou share your changes

Page 27: Code Management (Version Control)

Basics

You checkoutYou change codeYou commit

Page 28: Code Management (Version Control)

Basics

You checkout

Page 29: Code Management (Version Control)

Checkout

svn co list.txt (get latest version)

Page 30: Code Management (Version Control)

Basics

You checkoutYou change code

Page 31: Code Management (Version Control)

Change code

...change file...

Page 32: Code Management (Version Control)

Basics

You checkoutYou change codeYou commit

Page 33: Code Management (Version Control)

Commit

svn commit list.txt (check in your version

Page 34: Code Management (Version Control)

Again?

Page 35: Code Management (Version Control)

Checkout

svn co list.txt (get latest version)

Page 36: Code Management (Version Control)

Change code

...change file...

Page 37: Code Management (Version Control)

Commit

svn commit list.txt (check in your version

Page 38: Code Management (Version Control)

Every version is recorded

Page 39: Code Management (Version Control)

Every change is recorded

Page 40: Code Management (Version Control)

Sharing is good

Page 41: Code Management (Version Control)

Basics (II)

Others get your codeOthers change codeYou get new version

Page 42: Code Management (Version Control)

Basics (II)

Others checkoutOthers change codeYou update

Page 43: Code Management (Version Control)

Basics (II)

Others checkoutOthers change codeYou updateAnd around it goes

Page 44: Code Management (Version Control)
Page 45: Code Management (Version Control)

Where?

Page 46: Code Management (Version Control)
Page 47: Code Management (Version Control)

Repository

Central place

Page 48: Code Management (Version Control)
Page 49: Code Management (Version Control)
Page 50: Code Management (Version Control)

Repository

Central place Does versioning for you

Page 51: Code Management (Version Control)
Page 52: Code Management (Version Control)

Repository

Central place Does versioning for you

Handles changes from multiple sources

Page 53: Code Management (Version Control)
Page 54: Code Management (Version Control)
Page 55: Code Management (Version Control)

Summary

Change happensUse best practiceUse toolsSource control basics

Page 56: Code Management (Version Control)

Further Information

Other SCM tools (decentralised) Integration into IDEs Integration with testing, release, tracker SVN Red Book http://betterexplained.com/articles/a-visual-

guide-to-version-control/ http://www.swc.scipy.org/lec/version.html

Page 57: Code Management (Version Control)

Credits, Attribution http://www.flickr.com/photos/vespa_gt/373805114/sizes/m/

http://www.flickr.com/photos/ezu/277341190/sizes/o/

http://www.flickr.com/photos/addedentry/2222911325/

http://www.flickr.com/photos/charlieferrari/49323751/sizes/o/

http://www.flickr.com/photos/aliciayeah/262229883/sizes/l/

http://www.flickr.com/photos/nickwheeleroz/2475011402/sizes/l/

http://www.flickr.com/photos/herzogbr/2123789106/sizes/l/

http://www.flickr.com/photos/sgt_spanky/2470700936/

http://www.flickr.com/photos/striatic/340190783/

http://www.flickr.com/photos/7506006@N07/513417996/in/set-72157600264508078/

http://www.flickr.com/photos/7506006@N07/513453021/

http://www.flickr.com/photos/mattwright/1787856/sizes/l/

http://www.flickr.com/photos/ryanr/142455033/sizes/o/

http://www.flickr.com/photos/tjflex/233574885/sizes/l/

http://www.flickr.com/photos/mrtea/1278546801/sizes/l/

http://www.flickr.com/photos/rachelrusinski/533767098/sizes/o/

http://www.cs.utk.edu/dilab/SDR_robots.jpg

http://www.mat.uc.pt/~emsa/Historia2007/Imagens/Black_Hole_Milkyway.jpg

Page 58: Code Management (Version Control)

Credits, Attribution http://commons.wikimedia.org

http://www.flickr.com/photos/missmirr/529688823/sizes/o/

Page 59: Code Management (Version Control)

Questions?

Page 60: Code Management (Version Control)

SVN exercise

http://www.projectx.co.nz/scm_session.html

Page 61: Code Management (Version Control)

SVN exercise

mkdir versionz

Page 62: Code Management (Version Control)

SVN exercise

cd versionz

Page 63: Code Management (Version Control)

SVN exercise

svnadmin create testrepo

Page 64: Code Management (Version Control)

SVN exercise

mkdir test

Page 65: Code Management (Version Control)

SVN exercise

touch test/test1.txt

touch test/text2.txt

Page 66: Code Management (Version Control)

SVN exercise

pwd

Page 67: Code Management (Version Control)

SVN exercise

svn import test file://{@}/testrepo/test -m

”initial import”

Page 68: Code Management (Version Control)

SVN exercise

svn checkout file://{@}/testrepo/test

working test

Page 69: Code Management (Version Control)

SVN exercise

cd workingtest/

Page 70: Code Management (Version Control)

SVN exercise

ls -al

Page 71: Code Management (Version Control)

SVN exercise

svn status

Page 72: Code Management (Version Control)

SVN exercise

nano test1.txt(edit)

Page 73: Code Management (Version Control)

SVN exercise

svn status

Page 74: Code Management (Version Control)

SVN exercise

svn commit -m ”Modified text1.txt”

Page 75: Code Management (Version Control)

SVN exercise

svn update

svn log

Page 76: Code Management (Version Control)

SVN exercise

nano text2.txt(edit)

Page 77: Code Management (Version Control)

SVN exercise

svn stat

Page 78: Code Management (Version Control)

SVN exercise

svn revert text2.txt

svn stat

Page 79: Code Management (Version Control)

SVN exercise

touch test3.txt

svn add test3.txt

Page 80: Code Management (Version Control)

SVN exercise

svn commit -m ”added a file”

Page 81: Code Management (Version Control)

SVN exercise

svn mv text2.txt test2.txt

svn stat

Page 82: Code Management (Version Control)

SVN exercise

svn ci -m ”renamed to test2.txt”

Page 83: Code Management (Version Control)

SVN exercise

svn log test2.txt

Page 84: Code Management (Version Control)

SVN exercise

svn diff -r1:4 test1.txt

Page 85: Code Management (Version Control)

You learnt

Create a repository Checkout and commit Check status Update and revert Adding a file Renaming and moving Examine differences