SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Source Control 101,[object Object]
What are we doing?,[object Object],Introduction,[object Object],Lab 1,[object Object],[object Object]
ReviewLab 2,[object Object],[object Object]
ReviewLab 3,[object Object],[object Object]
ReviewLab 4,[object Object],[object Object]
ReviewLab 5,[object Object],[object Object]
ReviewLab 6,[object Object],[object Object]
ReviewLab 7,[object Object],[object Object]
ReviewAlternatives to SVN,[object Object],Other TortoiseSVN Tools,[object Object],IDE Integration,[object Object],Proven Practises,[object Object]
Disclaimer,[object Object],The names and scenarios presented here are purely fictional. Any similarity to real people or scenarios is purely a coincidence.,[object Object],No animals were harmed during the making of this bootcamp.,[object Object]
Time to get a little crazy,[object Object],You need to be three people today,[object Object],Jim, the junior software dev.,[object Object],Just out of his local computer school and hired by BB&D. Wrote code at school and home – by himself.,[object Object],Simon, the “seasoned” software dev.,[object Object],Ran his own software company for a few years  - that created iPhone apps. Company size of 1.,[object Object],Joined BB&D when Palm Pre killed the iPhone market.,[object Object],Mike, the grizzly IT Pro. Wears shirts that say things like “There are 10 types of people, those who know binary  and those who don’t.” ,[object Object]
Supporting cast,[object Object],The wizard – fly’s in and does magic!,[object Object],(used for stuff you need, but don’t care about),[object Object],The customer, is all about giving:,[object Object],Gives you requirements.,[object Object],Gives you headaches.,[object Object],Gives you money.,[object Object]
Create a file share and do some changes.,[object Object],Time: 5min,[object Object]
Now...,[object Object],The customer needs a bug fixed in version 1,[object Object]
What’s in a Name?,[object Object]
What is source control?,[object Object],An agreed way to share development resources that gives us:,[object Object]
Terminology,[object Object]
Branching Terminology,[object Object]
Basic Action Terminology,[object Object]
Basic Action Terminology,[object Object]
Mike: Create a repo,[object Object],Simon: Check in a file,[object Object],Jim: Get a file,[object Object],Time: 5min,[object Object]
Lab 2 - Review,[object Object],Repo,[object Object],DAL.txt,[object Object],v1,[object Object],Add,[object Object],Get,[object Object],DAL.txt,[object Object],v1,[object Object]
Lab 2 - Review,[object Object],Is this how you should do your repo?,[object Object],	No, use the TCP/IP or SVN protocol.,[object Object],What is TortoiseSVN?,[object Object],	The SVN client is a command line tool.,[object Object],TortoiseSVN is a wrapper for that.,[object Object]
Jim: Update the file & check it in.,[object Object],Simon: Sync and rollback.,[object Object],Time: 5min,[object Object]
Lab 3 - Review,[object Object],DAL.txt,[object Object],v2,[object Object],DAL.txt,[object Object],v1,[object Object],Update,[object Object],Repo,[object Object],Sync,[object Object],Again,[object Object],DAL.txt,[object Object],v2,[object Object],Issue Rollback,[object Object]
Lab 3 - Review,[object Object],Why did we have to commit again?,[object Object],	Because there was a change,[object Object],What revision are we now on?,[object Object],	Revision 3,[object Object],Can we get back to the code Jim put in, if we needed to?,[object Object],	Yes,[object Object]
Jim: Change the file,[object Object],Simon: Change the file,[object Object],CONFLICT!!,[object Object],Time: 10min,[object Object]
Lab 4 - Review,[object Object],DAL.txt,[object Object],v3,[object Object],DAL.txt,[object Object],v4b,[object Object],DAL.txt,[object Object],v5,[object Object],Repo,[object Object],Sync,[object Object],Sync,[object Object],Update,[object Object],Update,[object Object],Update,[object Object],DAL.txt,[object Object],v3,[object Object],DAL.txt,[object Object],v4,[object Object]
Lab 4 - Review,[object Object],Why did we have a .r3 and .r4 file?,[object Object],	revision 3 & revision 4,[object Object],What would happen if this was the changes and we tried to commit?,[object Object],	It would auto merge,[object Object],Jim,[object Object],Simon,[object Object]
Simon: wants to do a major code change and make sure Jim doesn’t mess with him,[object Object],Time: 5min,[object Object]
Lab 5 - Review,[object Object],DAL.txt,[object Object],v5,[object Object],Sync,[object Object],Repo,[object Object],Lock,[object Object],Sync,[object Object],DAL.txt,[object Object]
Lab 5 - Review,[object Object],Who locked the file?,[object Object],	Developer, the user logged into Windows,[object Object],What happens if the person who locked the file goes on holiday?,[object Object],	You can break the lock if needed.,[object Object]
Simon: As they are releasing version 1 they want to make sure they can fix issues while working on v2.,[object Object],Time: 10min,[object Object]
Lab 6 - Review,[object Object],Trunk,[object Object],Repo,[object Object],Trunk,[object Object],V1 Branch,[object Object],Branch,[object Object]
Lab 6 - Review,[object Object],Do we need to switch?,[object Object],	No, but it helps keep focus and prevent issues across branches.,[object Object]
Lab 6 - Review,[object Object],What is shelving?,[object Object],Shelving is branching to a personal temporary branch.,[object Object],Why shelve?,[object Object],Interruptions: Pending changes that are not ready for check in.,[object Object],Integration/Handoff: Sharing code with someone else, without a check in.,[object Object],Review: Code for review,[object Object],Backup: Personal backup,[object Object]
Lab 6 - Review,[object Object],How to shelve?,[object Object],Create a new root folder named shelve, as we did for branches.,[object Object],In that a folder for each user.,[object Object],Branching as normal.,[object Object]
Lab 6 - Review,[object Object],Which is correct?,[object Object],V1.1 (start),[object Object],V1.2,[object Object],V1.1 (start),[object Object],V1.1 FT3,[object Object],DEV,[object Object],DEV,[object Object],3,[object Object],4,[object Object],5,[object Object],8,[object Object],RI,[object Object],Branch,[object Object],FI,[object Object],V1,0 Hotfix 1,[object Object],RI,[object Object],RI,[object Object],FI,[object Object],FI,[object Object],FI,[object Object],Branch,[object Object],V1.1,[object Object],V1.2,[object Object],V1.0,[object Object],Production,[object Object],V1.1,[object Object],1,[object Object],2,[object Object],6,[object Object],7,[object Object],MAIN,[object Object],Branch,[object Object],FI,[object Object],RI,[object Object],V1.1 (bug fix),[object Object],V1.0,[object Object],Production,[object Object],RELEASE,[object Object],Release 1.01,[object Object]
Scenario #1: Single Team Branching Model,[object Object],Nightly Build,[object Object],(Early Validation),[object Object],All dev done on branch,[object Object],CI / Nightly Builds,[object Object],(Early validation),[object Object],V1.2,[object Object],V1.1 (start),[object Object],V1.1 FT3,[object Object],DEV,[object Object],3,[object Object],4,[object Object],5,[object Object],8,[object Object],RI,[object Object],RI,[object Object],FI,[object Object],FI,[object Object],FI,[object Object],Branch,[object Object],V1.1,[object Object],V1.2,[object Object],1,[object Object],2,[object Object],6,[object Object],7,[object Object],MAIN,[object Object],V1.1 (bug fix),[object Object],V1.0,[object Object],Production,[object Object],Main should be very stable,[object Object]
Scenario #2: Concurrent Hot Fix, Service Pack, and v.Next,[object Object],2,[object Object],DEV …,[object Object],The two DEV branches are created as sequential tasks, but as one unit of work.,[object Object],All dev done on branches,[object Object],2,[object Object],DEV-1,[object Object],Branch,[object Object],MAIN,[object Object],1,[object Object],Branch,[object Object],Branch,[object Object],FI,[object Object],R1 (SP),[object Object],R2 (SP),[object Object],6,[object Object],SERVICE PACK,[object Object],3,[object Object],Branch,[object Object],Branch,[object Object],When MAIN is ready to release, create the SERVICE PACK, HOT FIX, and RELEASE branches at the same time.,[object Object],Branch,[object Object],R1 (SP0),[object Object],R1 (SP1),[object Object],R2 (SP0),[object Object],4,[object Object],7,[object Object],HOT FIX,[object Object],Branch,[object Object],Branch,[object Object],Branch,[object Object],R1 (SP0),[object Object],R1 (SP1),[object Object],R2 (SP0),[object Object],5,[object Object],8,[object Object],RTM,[object Object],The RTM branch is a read-only copy of what was released,[object Object],These should be read only,[object Object]
Scenario #3: Branching and Labeling,[object Object],The two DEV branches are created as sequential tasks, but as one unit of work.,[object Object],TEST …,[object Object],6,[object Object],TEST-1,[object Object],5,[object Object],Branch,[object Object],V1.2,[object Object],Release labels in branch,[object Object],DEV …,[object Object],2,[object Object],4,[object Object],Branch,[object Object],V1.1,[object Object],DEV-1,[object Object],2,[object Object],3,[object Object],Branch,[object Object],1,[object Object],MAIN,[object Object],Main is just the latest,[object Object]
Simon: Needs to make sure v2 gets the same bug fix as v1 had.,[object Object],Time: 5min,[object Object]
Lab 7 - Review,[object Object],Branch v1,[object Object],Conflict,[object Object],Merge,[object Object],Trunk,[object Object],No cartoons, cause this is too hard to show with cartoons.,[object Object]
Other TortoiseSVN tools ,[object Object]

Contenu connexe

Tendances

The Jenkins Force Awaken Again @ JAM #6 meetup
 The Jenkins Force Awaken Again @ JAM #6 meetup The Jenkins Force Awaken Again @ JAM #6 meetup
The Jenkins Force Awaken Again @ JAM #6 meetupYoram Michaeli
 
Contributing to StrongLoop LoopBack (and other open source projects)
Contributing to StrongLoop LoopBack (and other open source projects)Contributing to StrongLoop LoopBack (and other open source projects)
Contributing to StrongLoop LoopBack (and other open source projects)Supasate Choochaisri
 
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...What Mr. Spock would possibly say about modern unit testing: pragmatic and em...
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...Yaroslav Yermilov
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CIYusuke Ando
 
IronRuby on Teched Japan
IronRuby on Teched JapanIronRuby on Teched Japan
IronRuby on Teched JapanShay Friedman
 
OpenSlava 2015 When DevOps Hurts
OpenSlava 2015 When DevOps HurtsOpenSlava 2015 When DevOps Hurts
OpenSlava 2015 When DevOps HurtsAntons Kranga
 
Swift should I switch?
Swift should I switch?Swift should I switch?
Swift should I switch?wulfgeng
 
Composer Power User Tips
Composer Power User TipsComposer Power User Tips
Composer Power User TipsTom Corrigan
 
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansibletylerturk
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous IntegrationLiyao Chen
 
How we git - commit policy and code review
How we git - commit policy and code reviewHow we git - commit policy and code review
How we git - commit policy and code reviewRuben Tan
 
Continuous integration and delivery
Continuous integration and deliveryContinuous integration and delivery
Continuous integration and deliveryDanilo Pianini
 
Vinted life embetterment
Vinted life embettermentVinted life embetterment
Vinted life embettermentAgile Lietuva
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by stepBinh Quan Duc
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talkOlivier Lamy
 
GDG Morgantown, WV: Write code you can depend on!
GDG Morgantown, WV: Write code you can depend on!GDG Morgantown, WV: Write code you can depend on!
GDG Morgantown, WV: Write code you can depend on!Logan Spears
 
Testing distributed systems in production
Testing distributed systems in productionTesting distributed systems in production
Testing distributed systems in productionPaul Bakker
 

Tendances (19)

The Jenkins Force Awaken Again @ JAM #6 meetup
 The Jenkins Force Awaken Again @ JAM #6 meetup The Jenkins Force Awaken Again @ JAM #6 meetup
The Jenkins Force Awaken Again @ JAM #6 meetup
 
Contributing to StrongLoop LoopBack (and other open source projects)
Contributing to StrongLoop LoopBack (and other open source projects)Contributing to StrongLoop LoopBack (and other open source projects)
Contributing to StrongLoop LoopBack (and other open source projects)
 
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...What Mr. Spock would possibly say about modern unit testing: pragmatic and em...
What Mr. Spock would possibly say about modern unit testing: pragmatic and em...
 
After the Code
After the CodeAfter the Code
After the Code
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
 
IronRuby on Teched Japan
IronRuby on Teched JapanIronRuby on Teched Japan
IronRuby on Teched Japan
 
OpenSlava 2015 When DevOps Hurts
OpenSlava 2015 When DevOps HurtsOpenSlava 2015 When DevOps Hurts
OpenSlava 2015 When DevOps Hurts
 
Swift should I switch?
Swift should I switch?Swift should I switch?
Swift should I switch?
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Composer Power User Tips
Composer Power User TipsComposer Power User Tips
Composer Power User Tips
 
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous Integration
 
How we git - commit policy and code review
How we git - commit policy and code reviewHow we git - commit policy and code review
How we git - commit policy and code review
 
Continuous integration and delivery
Continuous integration and deliveryContinuous integration and delivery
Continuous integration and delivery
 
Vinted life embetterment
Vinted life embettermentVinted life embetterment
Vinted life embetterment
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talk
 
GDG Morgantown, WV: Write code you can depend on!
GDG Morgantown, WV: Write code you can depend on!GDG Morgantown, WV: Write code you can depend on!
GDG Morgantown, WV: Write code you can depend on!
 
Testing distributed systems in production
Testing distributed systems in productionTesting distributed systems in production
Testing distributed systems in production
 

Similaire à Source Control 101

Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Rachel Evans
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsJonathan Hitchcock
 
Dev with github enterprise
Dev with github enterpriseDev with github enterprise
Dev with github enterpriseHiroshi Wada
 
44CON 2014 - Switches Get Stitches, Eireann Leverett & Matt Erasmus
44CON 2014 - Switches Get Stitches,  Eireann Leverett & Matt Erasmus44CON 2014 - Switches Get Stitches,  Eireann Leverett & Matt Erasmus
44CON 2014 - Switches Get Stitches, Eireann Leverett & Matt Erasmus44CON
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneWhen Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneDavid Glick
 
Bp106 Worst Practices Final
Bp106   Worst Practices FinalBp106   Worst Practices Final
Bp106 Worst Practices FinalBill Buchan
 
Building and Testing Zonear Web Apps
Building and Testing Zonear Web AppsBuilding and Testing Zonear Web Apps
Building and Testing Zonear Web AppsFrontend_fi
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersAndrew Bayer
 
Unit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreUnit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreOliver Klee
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoPeter Bittner
 
Writing Rust Command Line Applications
Writing Rust Command Line ApplicationsWriting Rust Command Line Applications
Writing Rust Command Line ApplicationsAll Things Open
 
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Chef
 
10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing
10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing
10x Test Coverage, Less Drama: Shift Left Functional & Performance TestingSauce Labs
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...hamidsamadi
 
Reducing passive interruptions
Reducing passive interruptionsReducing passive interruptions
Reducing passive interruptionsAndrei Tognolo
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan ErckOrtus Solutions, Corp
 

Similaire à Source Control 101 (20)

Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
 
Dev with github enterprise
Dev with github enterpriseDev with github enterprise
Dev with github enterprise
 
44CON 2014 - Switches Get Stitches, Eireann Leverett & Matt Erasmus
44CON 2014 - Switches Get Stitches,  Eireann Leverett & Matt Erasmus44CON 2014 - Switches Get Stitches,  Eireann Leverett & Matt Erasmus
44CON 2014 - Switches Get Stitches, Eireann Leverett & Matt Erasmus
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneWhen Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
 
Bp106 Worst Practices Final
Bp106   Worst Practices FinalBp106   Worst Practices Final
Bp106 Worst Practices Final
 
Building and Testing Zonear Web Apps
Building and Testing Zonear Web AppsBuilding and Testing Zonear Web Apps
Building and Testing Zonear Web Apps
 
An introduction to SVN
An introduction to SVNAn introduction to SVN
An introduction to SVN
 
Review of an open source unit test tool- Cucumber_Presentation
Review of an open source unit test tool- Cucumber_PresentationReview of an open source unit test tool- Cucumber_Presentation
Review of an open source unit test tool- Cucumber_Presentation
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Unit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreUnit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x core
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon Otto
 
Writing Rust Command Line Applications
Writing Rust Command Line ApplicationsWriting Rust Command Line Applications
Writing Rust Command Line Applications
 
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
 
10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing
10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing
10x Test Coverage, Less Drama: Shift Left Functional & Performance Testing
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
 
Reducing passive interruptions
Reducing passive interruptionsReducing passive interruptions
Reducing passive interruptions
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan Erck
 

Plus de Robert MacLean

14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)Robert MacLean
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPRobert MacLean
 
Features of Kotlin I find exciting
Features of Kotlin I find excitingFeatures of Kotlin I find exciting
Features of Kotlin I find excitingRobert MacLean
 
DevConf Survival Guide
DevConf Survival GuideDevConf Survival Guide
DevConf Survival GuideRobert MacLean
 
The state of testing @ Microsoft
The state of testing @ MicrosoftThe state of testing @ Microsoft
The state of testing @ MicrosoftRobert MacLean
 
Visual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptVisual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptRobert MacLean
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestRobert MacLean
 
A Developer Day 2014 - Durban
A Developer Day 2014 - Durban A Developer Day 2014 - Durban
A Developer Day 2014 - Durban Robert MacLean
 
Agile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersAgile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersRobert MacLean
 
Hour of code - Train the trainer
Hour of code - Train the trainerHour of code - Train the trainer
Hour of code - Train the trainerRobert MacLean
 
Building services for apps on a shoestring budget
Building services for apps on a shoestring budgetBuilding services for apps on a shoestring budget
Building services for apps on a shoestring budgetRobert MacLean
 
3 things your app API is doing WRONG
3 things your app API is doing WRONG3 things your app API is doing WRONG
3 things your app API is doing WRONGRobert MacLean
 

Plus de Robert MacLean (20)

14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)
 
Git
GitGit
Git
 
OWASP TOP 10
OWASP TOP 10OWASP TOP 10
OWASP TOP 10
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCP
 
Looking at the Vue
Looking at the VueLooking at the Vue
Looking at the Vue
 
Kotlin 101
Kotlin 101Kotlin 101
Kotlin 101
 
Features of Kotlin I find exciting
Features of Kotlin I find excitingFeatures of Kotlin I find exciting
Features of Kotlin I find exciting
 
JavaScript Gotchas
JavaScript GotchasJavaScript Gotchas
JavaScript Gotchas
 
DevConf Survival Guide
DevConf Survival GuideDevConf Survival Guide
DevConf Survival Guide
 
The state of testing @ Microsoft
The state of testing @ MicrosoftThe state of testing @ Microsoft
The state of testing @ Microsoft
 
Visual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptVisual Studio ❤ JavaScript
Visual Studio ❤ JavaScript
 
What is new in C# 6?
What is new in C# 6?What is new in C# 6?
What is new in C# 6?
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/Test
 
A Developer Day 2014 - Durban
A Developer Day 2014 - Durban A Developer Day 2014 - Durban
A Developer Day 2014 - Durban
 
Agile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersAgile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM Rangers
 
Hour of code - Train the trainer
Hour of code - Train the trainerHour of code - Train the trainer
Hour of code - Train the trainer
 
Building services for apps on a shoestring budget
Building services for apps on a shoestring budgetBuilding services for apps on a shoestring budget
Building services for apps on a shoestring budget
 
3 things your app API is doing WRONG
3 things your app API is doing WRONG3 things your app API is doing WRONG
3 things your app API is doing WRONG
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
LightSwitch
LightSwitchLightSwitch
LightSwitch
 

Dernier

Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 

Dernier (20)

Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 

Source Control 101

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.

Notes de l'éditeur

  1. So for the demo’s today you need to imagine three people getting involved
  2. Revision control is the more generic term, used for source-control tools but also for other tools (Word, OpenOffice, ...). It references a version.Source Control offers revision control with branching and merging which are not always available in all revision tools (Word is not a Source Control, but offer revision control features)Version Control is a more general term than Source Control in that it manages version of anything (sources or binaries, or any kind of documents)
  3. Backup and Restore. Files are saved as they are edited, and you can jump to any moment in time. Need that file as it was on Feb 23, 2007? No problem.Synchronization. Lets people share files and stay up-to-date with the latest version.Short-term undo.Monkeying with a file and messed it up? (That’s just like you, isn’t it?). Throw away your changes and go back to the “last known good” version in the database.Long-term undo. Sometimes we mess up bad. Suppose you made a change a year ago, and it had a bug. Jump back to the old version, and see what change was made that day.Track Changes. As files are updated, you can leave messages explaining why the change happened (stored in the VCS, not the file). This makes it easy to see how a file is evolving over time, and why.Track Ownership. A VCS tags every change with the name of the person who made it. Helpful for blamestorming giving credit.Sandboxing, or insurance against yourself. Making a big change? You can make temporary changes in an isolated area, test and work out the kinks before “checking in” your changes.Branching and merging. A larger sandbox. You can branch a copy of your code into a separate area and modify it in isolation (tracking changes separately). Later, you can merge your work back into the common are
  4. Add: Put a file into the repo for the first time, i.e. begin tracking it with Version Control.Revision: What version a file is on (v1, v2, v3, etc.).Head: The latest revision in the repo.Check out: Download a file from the repo.Check in: Upload a file to the repository (if it has changed). The file gets a new revision number, and people can “check out” the latest one.
  5. Checkin Message: A short message describing what was changed.Changelog/History: A list of changes made to a file since it was created.Update/Sync: Synchronize your files with the latest from the repository. This lets you grab the latest revisions of all files.Revert: Throw away your local changes and reload the latest version from the repository.
  6. A1) No, you should use the TCP/IP connection to share repositories, but this is great for our labs today.A2) TortoiseSVN is a front end for the SVN client. The SVN client is a command line based tool.
  7. A1) .r3 for revision 3 & .r4 for revision 4A2) Who ever checks in first will be fine. The second will get a commit, they will update but NOT get the conflict resolution files at it can auto merge. The second will need to then need to commit.
  8. A1) Developer – the windows account
  9. Branching Guidance– Scenario 1
  10. Branching Guidance– Scenario 1
  11. Same as scenario 1, but the advantage is that maintenance can occur very easily for a release
  12. Use source control: Use it, duhDon’t break the build: Build or tree – when you check in you should not break the ability to build the code.Keep up to date: Try to keep your working set as close to repo version. The more you get out of date the greater the chance of a conflictAutomerge is a for Get ONLY: Some shit (sourcesafe) allow automerge on commitDon’t check in binaries: just cause you can store everything in the system, doesn’t mean you should. Binaries are especially badSeparate repo for separate things: Don;t try to have one super repo, try to seprate them.
  13. Don’t delete: Why delete if you don’t need toWorking folders should be disposable: Your working folder should not become so valuable that you can’t afford to kill itUse non-working folders when needed: Most systems support a way to export WITHOUT repo information, use this for sharing code outside.Useful & meaningful messages: check in messages are important, use them wellDon’t use the audit trail to assign blame: using audit logs to assign blame is guarenteed to kill usageUse undo/revert sparingly Use undo/revert sparingly: You can trash your work easily, be careful
  14. Use labels: Labels are easier to remember than changeset id’sBe light and quick with checkouts: Check out as little as possible and the check it in as quickly as possible.Try concurrent: Concurrent locking scares a lot of people but can give great productivity benefits, especially with thinking developers.Use Shelving: If you don’t have time to finish, remember to shelve
  15. Don’t be afraid of branching: Like concurrent access it may seem to cause issues, but if you adopt it and use it responsibility then it will make your life great.Plan your branching strategy: Branching is tough – spend some time to plan aheadDon’t branch UNLESS you will look after it: Branches are like puppy’s you need to look after themTake responsibility for the merge: You need to devote time and plan your merge, then follow through with it.