SlideShare a Scribd company logo
Code
Management
About me
      Thong Kuah
  ProjectX Technology
<thong@projectx.co.nz>
Change
  Change
Change
Change
Code Management
Code Management
Code Management
Murphy's Law
What
 just
broke
  ?
Where is that file?

Needle in a Haystack
Joe added this. Change it.
<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-
8"><title>Google</title><script>window.google={kEI:"ODpsStiwMonStgOZ6KTTDw",kEXPI:"17259,17311,20760,21078",kCSIE:"17259,17311,207
                           60,21078",kCSI:{e:"17259,17311,20760,21078",ei:"ODpsStiwMonStgOZ6KTTDw"},kHL:"en"};

                                            window.google.sn="webhp";window.google.timers={load:{t:{start:(new
 Date).getTime()}}};try{window.google.pt=window.gtbExternal&&window.gtbExternal.pageT()||window.external&&window.external.pageT}catch(b){}
                                                                  window.google.jsrt_kill=1;
var _gjwl=location;function _gjuc(){var e=_gjwl.href.indexOf("#");if(e>=0){var a=_gjwl.href.substring(e);if(a.indexOf("&q=")>0||a.indexOf("#q=")>=0)
  {a=a.substring(1);if(a.indexOf("#")==-1){for(var c=0;c<a.length;){var d=c;if(a.charAt(d)=="&")++d;var b=a.indexOf("&",d);if(b==-1)b=a.length;var
                    f=a.substring(d,b);if(f.indexOf("fp=")==0){a=a.substring(0,c)+a.substring(b,a.length);b=c}else if(f=="cad=h")return
                            0;c=b}_gjwl.href="/search?"+a+"&cad=h";return 1}}}return 0}function _gjp(){!(window._gjwl.hash&&
                                                          window._gjuc())&&setTimeout(_gjp,500)};
         window._gjp && _gjp()</script><style>td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font-
 family:arial,sans-serif}.h{color:#36c}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}#gbar{height:22px}.gbh,.gbd{border-top:1px solid
                                                                         #c9d7f1;font-
    size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbi,#gbs{background:#fff;left:0;position:absolute;top:24px;visibility:hidden;z-
        index:1000}#gbi{border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;z-index:1001}#guser{padding-bottom:7px !important;text-
           align:right}#gbar,#guser{font-size:13px;padding-top:1px !important}@media all{.gb1,.gb3{height:22px;margin-right:.5em;vertical-
                align:top}#gbar{float:left}}.gb2{display:block;padding:.2em .5em}a.gb1,a.gb2,a.gb3{color:#00c !important}.gb2,.gb3{text-
 decoration:none}a.gb2:hover{background:#36c;color:#fff !important}</style><script>google.y={};google.x=function(e,g){google.y[e.id]=[e,g];return
   false};window.gbar={qs:function(){},tg:function(e){var o={id:'gbar'};for(i in e)o[i]=e[i];google.x(o,function(){gbar.tg(o)})}};</script></head><body
            bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload="document.f.q.focus();if(document.images)new
      Image().src='/images/nav_logo6.png'" topmargin=3 marginheight=3><textarea id=csi style=display:none></textarea><iframe name=wgjf
         style=display:none></iframe><div id=gbar><nobr><b class=gb1>Web</b> <a href="http://images.google.com/imghp?hl=en&tab=wi"
  onclick=gbar.qs(this) class=gb1>Images</a> <a href="http://video.google.com/?hl=en&tab=wv" onclick=gbar.qs(this) class=gb1>Videos</a> <a
      href="http://maps.google.com/maps?hl=en&tab=wl" onclick=gbar.qs(this) class=gb1>Maps</a> <a href="http://news.google.com/nwshp?
       hl=en&tab=wn" onclick=gbar.qs(this) class=gb1>News</a> <a href="http://www.google.com/prdhp?hl=en&tab=wf" onclick=gbar.qs(this)
                        class=gb1>Shopping</a> <a href="http://mail.google.com/mail/?hl=en&tab=wm" class=gb1>Gmail</a> <a
       href="http://www.google.com/intl/en/options/" onclick="this.blur();gbar.tg(event);return !1" aria-haspopup=true class=gb3><u>more</u>
 <small>&#9660;</small></a><div id=gbi><a href="http://groups.google.com/grphp?hl=en&tab=wg" onclick=gbar.qs(this) class=gb2>Groups</a>
 <a href="http://books.google.com/bkshp?hl=en&tab=wp" onclick=gbar.qs(this) class=gb2>Books</a> <a href="http://scholar.google.com/schhp?
    hl=en&tab=ws" onclick=gbar.qs(this) class=gb2>Scholar</a> <a href="http://www.google.com/finance?hl=en&tab=we" onclick=gbar.qs(this)
class=gb2>Finance</a> <a href="http://blogsearch.google.com/?hl=en&tab=wb" onclick=gbar.qs(this) class=gb2>Blogs</a> <div class=gb2><div
             class=gbd></div></div><a href="http://www.youtube.com/?hl=en&tab=w1" onclick=gbar.qs(this) class=gb2>YouTube</a> <a
        href="http://www.google.com/calendar/render?hl=en&tab=wc" class=gb2>Calendar</a> <a href="http://picasaweb.google.com/home?
   hl=en&tab=wq" onclick=gbar.qs(this) class=gb2>Photos</a> <a href="http://docs.google.com/?hl=en&tab=wo" class=gb2>Documents</a> <a
         href="http://www.google.com/reader/view/?hl=en&tab=wy" class=gb2>Reader</a> <a href="http://sites.google.com/?hl=en&tab=w3"
     class=gb2>Sites</a> <div class=gb2><div class=gbd></div></div><a href="http://www.google.com/intl/en/options/" class=gb2>even more
    &raquo;</a> </div></nobr></div><div id=guser width=100%><nobr><a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.com/ig%3Fhl
 %3Den%26source%3Diglk&usg=AFQjCNFA18XPfgb7dKnXfKz7x7g1GDH1tg">iGoogle</a> | <a href="https://www.google.com/accounts/Login?
              hl=en&continue=http://www.google.com/webhp">Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh
        style=right:0></div><center><br clear=all id=lgpd><img alt="Google" height=110 src="/intl/en_ALL/images/logo.gif" width=276 id=logo
             onload="window.lol&&lol()"><br><br><form action="/search" name=f><table cellpadding=0 cellspacing=0><tr valign=top><td
  width=25%>&nbsp;</td><td align=center nowrap><input name=hl type=hidden value=en><input autocomplete="off" maxlength=2048 name=q
                                                           size=55 title="Google Search" value="">
<br><input name=btnG type=submit value="Google Search"><input name=btnI type=submit value="I'm Feeling Lucky"></td><td nowrap
         width=25% align=left><font size=-2>&nbsp;&nbsp;<a href=/advanced_search?hl=en>Advanced Search</a><br>&nbsp;&nbsp;<a
                      href=/preferences?hl=en>Preferences</a><br>&nbsp;&nbsp;<a href=/language_tools?hl=en>Language
                    Tools</a></font></td></tr></table></form><br><font size=-1><font color=red>New!</font> <a href="/aclk?
sa=L&ai=CY8kE9DVsSuHyOpCyoQSw_pEEr42rhgHhn63XDMHZnNkTEAEgwVRQ76H57Pr_____AWCfAaoECU_QfNGYqctb3w&num=1&sig=A
  GiWqtwagQcpKjIjS3hvb1Muos4ZsmUeUw&q=http://www.google.com/help/ig/comicsthemes/">Get Comics Themes</a> from Superman, The
             Hulk, Peanuts, and more.</font><br><br><br><font size=-1><a href="/intl/en/ads/">Advertising&nbsp;Programs</a> - <a
href="/services/">Business Solutions</a> - <a href="/intl/en/about.html">About Google</a> - <b><a href=http://www.google.co.nz/>Go to Google
        New Zealand</a></b></font><p><font size=-2>&copy;2009 - <a href="/intl/en/privacy.html">Privacy</a></font></p></center><div
                                                                    id=xjsd></div><div
       id=xjsi><script>if(google.y)google.y.first=[];if(google.y)google.y.first=[];google.dstr=[];google.rein=[];window.setTimeout(function(){var
a=document.createElement("script");a.src="/extern_js/f/CgJlbiswCjgiQAgsKzAOOAUsKzAWOA4sKzAXOAMsKzAYOAQsKzAZOAQsKzAlOMmIA
                SwrMCY4BSwrMCc4Aiw/5J4j8bwbSpw.js";(document.getElementById("xjsd")||document.body).appendChild(a)},0);
                                                               ;google.y.first.push(function()
  {google.ac.m=0;google.ac.i(document.f,document.f.q,'','')});google.xjs&&google.j&&google.j.xi&&google.j.xi()</script></div><script>(function(){
                                                         function a(){google.timers.load.t.ol=(new
Date).getTime();google.report&&google.report(google.timers.load,google.kCSI)}if(window.addEventListener)window.addEventListener("load",a,fals
                   e);else if(window.attachEvent)window.attachEvent("onload",a);google.timers.load.t.prt=(new Date).getTime();
                                                                             })();

                                                                    </script>
Change
What line?
Who dunnit?
I'm sure nothing's changed
I'm sure nothing's changed
Code Management




Change
Fix it now
Change
●   Who last changed this file?
    ●     Who made that change, when and why?
●   Where is that bug?
●   Has the code changed or not?
    ●     How is it different?
●   Can you put your fixes into my files?
    ●     Messy fixes
●   ...
Change



 How to manage
changes to code?
Change



 How to manage
changes to code?
Alice → Bob
VERSION 1
Bob → Alice
VERSION 2
Alice → Bob
VERSION 3
Bob → Alice
VERSION 2.1
   Oops
Alice → Bob
  Please choose:
  VERSION 4a:
 Based on V3 + 2.1
  VERSION 4b:
Based on V3.1 + 2.1
Version 4c: Rewrite
Code Management
Code Management
Change



 How to manage
changes to code?
How?



  Tools
    &
Practices
Practices is up to you & team
Tools
Version Control Tools

●SVN
●Git
Version Control Tools
                   Mercurial
 SVN
               ●

●              ●   Bazaar
                   CVS
●Git
               ●


               ●   Visual SourceSafe
               ●   GNU arch
               ●   Darcs
               ●   Perforce
               ●   ....
Version Control

●   Stores code
Code Management
Code Management
Version Control

● Stores code
● Does versioning for

  you
Code Management
Versioning
Version Control

● Stores code
● Does versioning for

  you
● Records changes from

  multiple sources
Recording change
Version Control

● Stores code
● Does versioning for you

● Handles changes from

  multiple sources
  ● Merges them nicely
Code Management
Merging
Version Control

● Stores code
● Does versioning for you

● Handles changes from

  multiple sources
  ● Merges them nicely
Code Management
Basics
Basics

●You get code
●You change code

●You share your

 changes
Get Code
Change code
Share
Basics (II)

●Others get code
●Others change code

●Others share
Get Code
Change code
Share
Basics (II)

●Others get code
●Others change code

●Others share

●You get more code
Basics (II)

●Others get code
●Others change code

●Others share

●You get more code

●And around it goes
Sharing is good
Summary

●Change happens
●Use best practice

●Use tools

●Source control basics –

 workshop later
Further Information
●   gittutorial(7)
●   SVN Red Book
●   http://betterexplained.com/articles/a-visual-
    guide-to-version-control/
●   http://www.swc.scipy.org/lec/version.html
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
Credits, Attribution
●   http://commons.wikimedia.org

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

●   http://www.flickr.com/photos/jan_isaac/383512885/sizes/o/

●   http://upload.wikimedia.org/wikipedia/commons/c/ce/Mail-envelope.png

●   http://commons.wikimedia.org/wiki/File:Wellington_weta_female.jpg

●   http://commons.wikimedia.org/wiki/File:Darcs-ag-merge-symmetry.png
Questions?

More Related Content

TXT
Html
PDF
Harnessing the Power of the Web via R Clients for Web APIs
KEY
Plone Interactivity
PPTX
Learning Svelte
PDF
Java script programms
PDF
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
TXT
Private slideshow
TXT
Vidéo approche en immobilier
Html
Harnessing the Power of the Web via R Clients for Web APIs
Plone Interactivity
Learning Svelte
Java script programms
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
Private slideshow
Vidéo approche en immobilier

What's hot (15)

PPTX
фабрика Blockly
KEY
5 ways to embrace HTML5 today
KEY
The Devil and HTML5
PDF
Intro to Google Apps Script
PDF
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...
PPTX
Hardboiled Web Design
PDF
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
PDF
T3chFest2016 - Uso del API JavaScript de Photoshop para obtener fotos HDTR
PPT
Migration testing framework
PPTX
Лабораторная работа №1
PDF
Android dev 3
TXT
PPTX
JavaScript Operators
PDF
2009 Java One State Of The Open Web
PDF
Google apps script
фабрика Blockly
5 ways to embrace HTML5 today
The Devil and HTML5
Intro to Google Apps Script
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...
Hardboiled Web Design
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
T3chFest2016 - Uso del API JavaScript de Photoshop para obtener fotos HDTR
Migration testing framework
Лабораторная работа №1
Android dev 3
JavaScript Operators
2009 Java One State Of The Open Web
Google apps script
Ad

Viewers also liked (7)

PPT
PDF
Programacion 26
PDF
Code Management (Version Control)
PPT
Leaders As Teachers Institute
PDF
Rails 3 : Cool New Things
PDF
Unit Testing
PDF
Git Basics Workshop Summer of Tech 2010
Programacion 26
Code Management (Version Control)
Leaders As Teachers Institute
Rails 3 : Cool New Things
Unit Testing
Git Basics Workshop Summer of Tech 2010
Ad

Similar to Code Management (20)

PPTX
Spicy javascript: Create your first Chrome extension for web analytics QA
PDF
PDF
Introduccion a HTML5
PPTX
Html5 Overview
PDF
The Big Picture and How to Get Started
PDF
GDayX - Advanced Angular.JS
PDF
Introduction to AngularJS
KEY
Intro To Django
PDF
Odoo Experience 2018 - The Odoo JS Framework
PPTX
Designing and developing mobile web applications with Mockup, Sencha Touch an...
PDF
Google Cloud Platform 2014Q1 - Starter Guide
PDF
Google Analytics for Developers
PDF
Building Grails Plugins - Tips And Tricks
PDF
Logstash for SEO: come monitorare i Log del Web Server in realtime
PDF
Google Analytics for Developers
PDF
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
PDF
Django - Framework web para perfeccionistas com prazos
PDF
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
PDF
Nicolas Embleton, Advanced Angular JS
PDF
Google: Drive, Documents and Apps Script - How to work efficiently and happily
Spicy javascript: Create your first Chrome extension for web analytics QA
Introduccion a HTML5
Html5 Overview
The Big Picture and How to Get Started
GDayX - Advanced Angular.JS
Introduction to AngularJS
Intro To Django
Odoo Experience 2018 - The Odoo JS Framework
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Google Cloud Platform 2014Q1 - Starter Guide
Google Analytics for Developers
Building Grails Plugins - Tips And Tricks
Logstash for SEO: come monitorare i Log del Web Server in realtime
Google Analytics for Developers
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
Django - Framework web para perfeccionistas com prazos
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
Nicolas Embleton, Advanced Angular JS
Google: Drive, Documents and Apps Script - How to work efficiently and happily

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation theory and applications.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
KodekX | Application Modernization Development
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Review of recent advances in non-invasive hemoglobin estimation
Electronic commerce courselecture one. Pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
20250228 LYD VKU AI Blended-Learning.pptx
Cloud computing and distributed systems.
Encapsulation theory and applications.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
KodekX | Application Modernization Development
“AI and Expert System Decision Support & Business Intelligence Systems”
Programs and apps: productivity, graphics, security and other tools
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The Rise and Fall of 3GPP – Time for a Sabbatical?
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MIND Revenue Release Quarter 2 2025 Press Release
Unlocking AI with Model Context Protocol (MCP)
Review of recent advances in non-invasive hemoglobin estimation

Code Management

  • 2. About me Thong Kuah ProjectX Technology <thong@projectx.co.nz>
  • 10. Where is that file? Needle in a Haystack
  • 11. Joe added this. Change it.
  • 12. <!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF- 8"><title>Google</title><script>window.google={kEI:"ODpsStiwMonStgOZ6KTTDw",kEXPI:"17259,17311,20760,21078",kCSIE:"17259,17311,207 60,21078",kCSI:{e:"17259,17311,20760,21078",ei:"ODpsStiwMonStgOZ6KTTDw"},kHL:"en"}; window.google.sn="webhp";window.google.timers={load:{t:{start:(new Date).getTime()}}};try{window.google.pt=window.gtbExternal&&window.gtbExternal.pageT()||window.external&&window.external.pageT}catch(b){} window.google.jsrt_kill=1; var _gjwl=location;function _gjuc(){var e=_gjwl.href.indexOf("#");if(e>=0){var a=_gjwl.href.substring(e);if(a.indexOf("&q=")>0||a.indexOf("#q=")>=0) {a=a.substring(1);if(a.indexOf("#")==-1){for(var c=0;c<a.length;){var d=c;if(a.charAt(d)=="&")++d;var b=a.indexOf("&",d);if(b==-1)b=a.length;var f=a.substring(d,b);if(f.indexOf("fp=")==0){a=a.substring(0,c)+a.substring(b,a.length);b=c}else if(f=="cad=h")return 0;c=b}_gjwl.href="/search?"+a+"&cad=h";return 1}}}return 0}function _gjp(){!(window._gjwl.hash&& window._gjuc())&&setTimeout(_gjp,500)}; window._gjp && _gjp()</script><style>td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font- family:arial,sans-serif}.h{color:#36c}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}#gbar{height:22px}.gbh,.gbd{border-top:1px solid #c9d7f1;font- size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbi,#gbs{background:#fff;left:0;position:absolute;top:24px;visibility:hidden;z- index:1000}#gbi{border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;z-index:1001}#guser{padding-bottom:7px !important;text- align:right}#gbar,#guser{font-size:13px;padding-top:1px !important}@media all{.gb1,.gb3{height:22px;margin-right:.5em;vertical- align:top}#gbar{float:left}}.gb2{display:block;padding:.2em .5em}a.gb1,a.gb2,a.gb3{color:#00c !important}.gb2,.gb3{text- decoration:none}a.gb2:hover{background:#36c;color:#fff !important}</style><script>google.y={};google.x=function(e,g){google.y[e.id]=[e,g];return false};window.gbar={qs:function(){},tg:function(e){var o={id:'gbar'};for(i in e)o[i]=e[i];google.x(o,function(){gbar.tg(o)})}};</script></head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload="document.f.q.focus();if(document.images)new Image().src='/images/nav_logo6.png'" topmargin=3 marginheight=3><textarea id=csi style=display:none></textarea><iframe name=wgjf style=display:none></iframe><div id=gbar><nobr><b class=gb1>Web</b> <a href="http://images.google.com/imghp?hl=en&tab=wi" onclick=gbar.qs(this) class=gb1>Images</a> <a href="http://video.google.com/?hl=en&tab=wv" onclick=gbar.qs(this) class=gb1>Videos</a> <a href="http://maps.google.com/maps?hl=en&tab=wl" onclick=gbar.qs(this) class=gb1>Maps</a> <a href="http://news.google.com/nwshp? hl=en&tab=wn" onclick=gbar.qs(this) class=gb1>News</a> <a href="http://www.google.com/prdhp?hl=en&tab=wf" onclick=gbar.qs(this) class=gb1>Shopping</a> <a href="http://mail.google.com/mail/?hl=en&tab=wm" class=gb1>Gmail</a> <a href="http://www.google.com/intl/en/options/" onclick="this.blur();gbar.tg(event);return !1" aria-haspopup=true class=gb3><u>more</u> <small>&#9660;</small></a><div id=gbi><a href="http://groups.google.com/grphp?hl=en&tab=wg" onclick=gbar.qs(this) class=gb2>Groups</a> <a href="http://books.google.com/bkshp?hl=en&tab=wp" onclick=gbar.qs(this) class=gb2>Books</a> <a href="http://scholar.google.com/schhp? hl=en&tab=ws" onclick=gbar.qs(this) class=gb2>Scholar</a> <a href="http://www.google.com/finance?hl=en&tab=we" onclick=gbar.qs(this) class=gb2>Finance</a> <a href="http://blogsearch.google.com/?hl=en&tab=wb" onclick=gbar.qs(this) class=gb2>Blogs</a> <div class=gb2><div class=gbd></div></div><a href="http://www.youtube.com/?hl=en&tab=w1" onclick=gbar.qs(this) class=gb2>YouTube</a> <a href="http://www.google.com/calendar/render?hl=en&tab=wc" class=gb2>Calendar</a> <a href="http://picasaweb.google.com/home? hl=en&tab=wq" onclick=gbar.qs(this) class=gb2>Photos</a> <a href="http://docs.google.com/?hl=en&tab=wo" class=gb2>Documents</a> <a href="http://www.google.com/reader/view/?hl=en&tab=wy" class=gb2>Reader</a> <a href="http://sites.google.com/?hl=en&tab=w3" class=gb2>Sites</a> <div class=gb2><div class=gbd></div></div><a href="http://www.google.com/intl/en/options/" class=gb2>even more &raquo;</a> </div></nobr></div><div id=guser width=100%><nobr><a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.com/ig%3Fhl %3Den%26source%3Diglk&usg=AFQjCNFA18XPfgb7dKnXfKz7x7g1GDH1tg">iGoogle</a> | <a href="https://www.google.com/accounts/Login? hl=en&continue=http://www.google.com/webhp">Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div><center><br clear=all id=lgpd><img alt="Google" height=110 src="/intl/en_ALL/images/logo.gif" width=276 id=logo onload="window.lol&&lol()"><br><br><form action="/search" name=f><table cellpadding=0 cellspacing=0><tr valign=top><td width=25%>&nbsp;</td><td align=center nowrap><input name=hl type=hidden value=en><input autocomplete="off" maxlength=2048 name=q size=55 title="Google Search" value="">
  • 13. <br><input name=btnG type=submit value="Google Search"><input name=btnI type=submit value="I'm Feeling Lucky"></td><td nowrap width=25% align=left><font size=-2>&nbsp;&nbsp;<a href=/advanced_search?hl=en>Advanced Search</a><br>&nbsp;&nbsp;<a href=/preferences?hl=en>Preferences</a><br>&nbsp;&nbsp;<a href=/language_tools?hl=en>Language Tools</a></font></td></tr></table></form><br><font size=-1><font color=red>New!</font> <a href="/aclk? sa=L&ai=CY8kE9DVsSuHyOpCyoQSw_pEEr42rhgHhn63XDMHZnNkTEAEgwVRQ76H57Pr_____AWCfAaoECU_QfNGYqctb3w&num=1&sig=A GiWqtwagQcpKjIjS3hvb1Muos4ZsmUeUw&q=http://www.google.com/help/ig/comicsthemes/">Get Comics Themes</a> from Superman, The Hulk, Peanuts, and more.</font><br><br><br><font size=-1><a href="/intl/en/ads/">Advertising&nbsp;Programs</a> - <a href="/services/">Business Solutions</a> - <a href="/intl/en/about.html">About Google</a> - <b><a href=http://www.google.co.nz/>Go to Google New Zealand</a></b></font><p><font size=-2>&copy;2009 - <a href="/intl/en/privacy.html">Privacy</a></font></p></center><div id=xjsd></div><div id=xjsi><script>if(google.y)google.y.first=[];if(google.y)google.y.first=[];google.dstr=[];google.rein=[];window.setTimeout(function(){var a=document.createElement("script");a.src="/extern_js/f/CgJlbiswCjgiQAgsKzAOOAUsKzAWOA4sKzAXOAMsKzAYOAQsKzAZOAQsKzAlOMmIA SwrMCY4BSwrMCc4Aiw/5J4j8bwbSpw.js";(document.getElementById("xjsd")||document.body).appendChild(a)},0); ;google.y.first.push(function() {google.ac.m=0;google.ac.i(document.f,document.f.q,'','')});google.xjs&&google.j&&google.j.xi&&google.j.xi()</script></div><script>(function(){ function a(){google.timers.load.t.ol=(new Date).getTime();google.report&&google.report(google.timers.load,google.kCSI)}if(window.addEventListener)window.addEventListener("load",a,fals e);else if(window.attachEvent)window.attachEvent("onload",a);google.timers.load.t.prt=(new Date).getTime(); })(); </script>
  • 19. Change ● Who last changed this file? ● Who made that change, when and why? ● Where is that bug? ● Has the code changed or not? ● How is it different? ● Can you put your fixes into my files? ● Messy fixes ● ...
  • 20. Change How to manage changes to code?
  • 21. Change How to manage changes to code?
  • 26. Alice → Bob Please choose: VERSION 4a: Based on V3 + 2.1 VERSION 4b: Based on V3.1 + 2.1 Version 4c: Rewrite
  • 29. Change How to manage changes to code?
  • 30. How? Tools & Practices
  • 31. Practices is up to you & team
  • 32. Tools
  • 34. Version Control Tools Mercurial SVN ● ● ● Bazaar CVS ●Git ● ● Visual SourceSafe ● GNU arch ● Darcs ● Perforce ● ....
  • 35. Version Control ● Stores code
  • 38. Version Control ● Stores code ● Does versioning for you
  • 41. Version Control ● Stores code ● Does versioning for you ● Records changes from multiple sources
  • 43. Version Control ● Stores code ● Does versioning for you ● Handles changes from multiple sources ● Merges them nicely
  • 46. Version Control ● Stores code ● Does versioning for you ● Handles changes from multiple sources ● Merges them nicely
  • 49. Basics ●You get code ●You change code ●You share your changes
  • 52. Share
  • 53. Basics (II) ●Others get code ●Others change code ●Others share
  • 56. Share
  • 57. Basics (II) ●Others get code ●Others change code ●Others share ●You get more code
  • 58. Basics (II) ●Others get code ●Others change code ●Others share ●You get more code ●And around it goes
  • 60. Summary ●Change happens ●Use best practice ●Use tools ●Source control basics – workshop later
  • 61. Further Information ● gittutorial(7) ● SVN Red Book ● http://betterexplained.com/articles/a-visual- guide-to-version-control/ ● http://www.swc.scipy.org/lec/version.html
  • 62. 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
  • 63. Credits, Attribution ● http://commons.wikimedia.org ● http://www.flickr.com/photos/missmirr/529688823/sizes/o/ ● http://www.flickr.com/photos/jan_isaac/383512885/sizes/o/ ● http://upload.wikimedia.org/wikipedia/commons/c/ce/Mail-envelope.png ● http://commons.wikimedia.org/wiki/File:Wellington_weta_female.jpg ● http://commons.wikimedia.org/wiki/File:Darcs-ag-merge-symmetry.png