Version Uncontrolled!
How to Manage Your Version Control
Session	
  217	
  
Tuesday,	
  May	
  6,2015	
  
10:50	
  –	
  11:30	
  am	
  
Track	
  2	
  
Raastech, Inc.
2201 Cooperative Way, Suite 600
Herndon, VA 20171
+1-703-884-2223
info@raastech.com
Slide 2 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
About Me
§  Harold Dost III @hdost
§  6+ years of Oracle Middleware experience
§  OCE (SOA Foundation Practitioner)
§  Oracle ACE Associate
§  From Michigan
§  blog.raastech.com
Slide 3 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
About Raastech
§  Small systems integrator founded in 2009
§  Headquartered in the Washington DC area
§  Specializes in Oracle Fusion Middleware
§  Oracle Platinum Partner & Reseller
§  Oracle SOA Specialized
§  100% of consultants are Oracle certified
§  100% of consultants present at major Oracle conferences
§  100% of consultants have published books, whitepapers, or articles
§  Oracle SOA Specialized – 1 in 1,500 worldwide
§  Oracle Platinum Partner – 1 in 3,000 worldwide
Slide 4 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Outline
1.  Introduction
2.  Version Control Systems
3.  Useful Version Control Commands
4.  Workflows
5.  The Deployment Cycle
6.  Branching
7.  Getting Your Team On Board
8.  Questions & Answers
Slide 5 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 6 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Bias
§  I am biased towards Git
§  I have done my best to be neutral
Git Factoids
§  Git	
  is	
  a	
  distributed	
  revision	
  control	
  system	
  with	
  an	
  emphasis	
  on	
  speed,	
  data	
  integrity,	
  
and	
  support	
  for	
  distributed,	
  non-­‐linear	
  workflows.	
  
§  Git	
   was	
   iniHally	
   designed	
   and	
   developed	
   by	
   Linus	
   Torvalds	
   for	
   Linux	
   kernel	
  
development	
  in	
  2005	
  
§  Git	
  is	
  the	
  most	
  widely	
  adopted	
  version	
  control	
  system	
  for	
  soLware	
  development.	
  
§  Git	
  is	
  freely	
  distributed	
  under	
  the	
  terms	
  of	
  the	
  GNU	
  General	
  Public	
  License	
  v2.	
  
Slide 7 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Typical Large Corp Release Method
§  Developer creates code
§  Developer unit tests code
§  Code may get tested by 3rd party
§  Code may get reviewed by 3rd party
§  Code may get tested in a secondary environment to
ensure setups are correct
§  Code gets deployed to Production
§  Spot checks may be done
Slide 8 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Where is the code?
§  Often developer commits code to trunk repeatedly
Slide 9 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Advantages
§  Easy!
Slide 10 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Pitfalls
§  Not Simple
§  http://www.infoq.com/presentations/Simple-Made-Easy
§  http://www.slideshare.net/evandrix/simple-made-easy
§  Need people to remember or record in a tool which code
version is to be deployed
§  After deployment version may be all but lost
§  Could have tools in place, but those require additional
maintenance
§  Places tracking outside of developer responsibility
Slide 11 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 12 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Types of Version Control
§  Centralized
§  Distributed
Slide 13 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Centralized Version Control
§  Relies on single repository
§  People check-out and
check-in documents
§  Some locking may be used
to prevent conflicts
§  Branches treated like
folders
Repository	
  
Curly	
   Larry	
   Moe	
  
Slide 14 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Corporate Behavior: Centralized
§  Merges are feared
§  Tendency towards committing only when absolutely
necessary
§  Commits to trunk/master for everything
Slide 15 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Centralized Version Control Software
Subversion	
  (SVN)	
  
hRp://subversion.Hgris.org	
  
Team	
  Founda=on	
  Server	
  (TFS)	
  
hRps://msdn.microsoL.com/en-­‐us/vstudio/ff637362.aspx	
  
Concurrent	
  Versioning	
  System	
  (CVS)	
  
hRp://www.nongnu.org/cvs/	
  
Perforce(P4)	
  
hRp://www.perforce.com	
  
ClearCase	
  
hRp://www-­‐03.ibm.com/soLware/products/en/clearcase	
  
Slide 16 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
SVN
§  Initial Release in 2000
§  An Apache Foundation Project
§  Mostly compatible successor to CVS
Slide 17 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Distributed Version Control
§  Repositories are local
§  Peer-to-Peer
§  Exchange Patches
§  Branches are separate
entities
Joe	
  
Curly	
  
Moe	
  
“Blessed”	
  
Repo	
  
Slide 18 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Distributed Version Control Software
Bazaar	
  
hRp://git-­‐scm.com/	
  
Slide 19 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Git
§  Started in 2005 by Linus Torvalds to support Linux
Kernel Development
§  Inspired by BitKeeper and Monotone
Slide 20 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Using Git
Slide 21 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 22 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Initialize a Repository
§  In SVN:
§  HOWTO: Hosting a Subversion Repository
§  http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/
§  In Git:
§  https://kovshenin.com/2011/howto-remote-shared-git-repository/
git init
-OR-
git init –bare test-repo.git
Slide 23 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to retrieve a repository
§  In SVN:
§  In Git:
svn co https://host.com/path/repo
git clone https://host.com/path/repo.git
-OR-
git clone user@server:path/repo.git
Slide 24 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to add files
§  In SVN:
§  In Git:
svn add test-file.txt
git add test-file.txt
Slide 25 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to commit changes
§  In SVN:
§  In Git:
svn commit –m "Some Message"
git commit –m "Some Message"
Slide 26 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to push changes
§  In SVN:
§  Doesn’t make sense as it’s not distributed
§  In Git:
git push
Slide 27 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to branch
§  In SVN:
§  In Git:
svn copy http://svn.example.com/repos/calc/trunk 
http://svn.example.com/repos/calc/branches/my-calc-branch 
-m "Creating a private branch of /calc/trunk."
git branch my-calc-branch
-OR-
git checkout –b my-calc-branch # Takes you to the new branch
Slide 28 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to change branches
§  In SVN:
§  In Git:
cd path/to/branch
git checkout my-calc-branch
Slide 29 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
How to merge
§  In SVN:
§  In Git:
cd /path/to/repo/trunk
svn merge ../branches/my_branch/ # Merges changes in working copy
svn commit -m "Merge my_branch"
cd /path/to/repo
git merge my-branch # Merges Local Branches
git push # Pushes merge out to remote
Slide 30 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 31 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Release Method: Environment Based
Development	
   Test	
  
ProducHon	
  
(trunk)	
  
F2	
   F3	
  F1	
  
Slide 32 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Centralized Workflow
§  Commits are sequential
§  All users commit to the same branch
§  No guarantee of what is “production-
ready”
§  Tagging not very useful
Slide 33 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Centralized Workflow (Cont.)
§  Developer Checks out
§  Makes Changes
§  Commits
§  Some point in the future code ends up in development
Slide 34 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Feature Workflow
§  Developers create branches for each
feature
§  Features don’t get merged until it’s
time for production
 
Slide 35 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Feature Workflow (Cont.)
§  Developer branches from master/trunk
§  Makes changes
Slide 36 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Release-based “Driessen” Workflow
§  Two primary branches
§  Production
§  Development
§  Transient Personal Branches
§  Tagging Used Heavily
§  Manages for Hot Fixes
§  Release Branches
Credit:	
  Vincent	
  Driessen	
  
Slide 37 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Release-based Workflow (Cont.)
§  Starts similar to feature workflow
§  Features branches from develop
§  Hotfixes from master
§  Upon feature completion, merged back into develop
§  Once ready to do a release create a branch
§  Only perform bug fixes
§  Release to production/master
Slide 38 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 39 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Where?
§  Where should deployments come from?
Slide 40 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
When?
§  Disclaimer: Established processes may prevent
changing the timing of releases.
§  How often should I release?
§  When during the day should I release?
Slide 41 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 42 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Purpose Driven Separation
§  Branch Types
§  Feature – “feature/HAD/00001-some-new-feature”
§  Bug – “bug/HAD/010000-blue-screen-of-death-is-red”
§  Spike / Experimental
§  “spike/HAD/radical-new-things”
§  “exp/HAD/something-really-awesome”
§  Release – “release/1.5” or “release/20150507.1”
§  Tagging – “1.4” or “20150808.1”
Slide 43 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 44 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Finding Time
§  Transition Slowly
§  Implement portions where possible
§  Start with keeping all new development into separate
Slide 45 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Get Familiar With Tools and Process
§  SVN Tutorials
§  http://www.tutorialspoint.com/svn/
§  GIT Book
§  http://git-scm.com/book/en/v2/
Slide 46 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Perform an Exercise
§  Go through a practice bug fix and feature release.
§  Create Branches
§  Make gimmick changes
§  Go through the steps of a release
§  Code Change
§  Code Review
§  Release and merge
Slide 47 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Introduce it at a team meeting
§  This can be useful whether or not the release process is
decided at a team level.
Slide 48 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Try process with a real change
§  Be diligent about the process
§  Follow it to production
§  Review the hiccups and try to iron them out.
§  Slowly add it to more changes.
Slide 49 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Do a team exercise
§  If this exercise can show improved efficiency and code
quality
Slide 50 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Slide 51 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Contact Information
§  Harold Dost III
§  Senior Consultant
§  @hdost
§  harold.dost@raastech.com
Slide 52 of 52© Raastech, Inc. 2015 | All rights reserved.@Raastech
Resources
§  Atlassian. (2015). Comparing Workflows. Retrieved 2015, from Atlassian:
https://www.atlassian.com/git/tutorials/comparing-workflows/
§  Bansal, N. (2011). HOWTO: Hosting a Subversion Repository. Retrieved
2015, from University Of Toronto:
http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/
§  Driessen, V. (2010). A successful Git branching model. Retrieved 2015, from
Nvie: http://nvie.com/posts/a-successful-git-branching-model/
§  Git SCM. (2014). Git Book. Retrieved 2015, from Git SCM:
http://git-scm.com/book/en/v2/
§  Kovshenin, K. (2011). How To Create a Remote Shared Git Repository.
Retrieved 2015, from Kovshenin:
https://kovshenin.com/2011/howto-remote-shared-git-repository/
§  Tutorials Point. (2014). SVN Tutorial. Retrieved 2015, from Tutorials Point:
http://www.tutorialspoint.com/svn/

Version Uncontrolled! How to Manage Your Version Control

  • 1.
    Version Uncontrolled! How toManage Your Version Control Session  217   Tuesday,  May  6,2015   10:50  –  11:30  am   Track  2   Raastech, Inc. 2201 Cooperative Way, Suite 600 Herndon, VA 20171 +1-703-884-2223 info@raastech.com
  • 2.
    Slide 2 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech About Me §  Harold Dost III @hdost §  6+ years of Oracle Middleware experience §  OCE (SOA Foundation Practitioner) §  Oracle ACE Associate §  From Michigan §  blog.raastech.com
  • 3.
    Slide 3 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech About Raastech §  Small systems integrator founded in 2009 §  Headquartered in the Washington DC area §  Specializes in Oracle Fusion Middleware §  Oracle Platinum Partner & Reseller §  Oracle SOA Specialized §  100% of consultants are Oracle certified §  100% of consultants present at major Oracle conferences §  100% of consultants have published books, whitepapers, or articles §  Oracle SOA Specialized – 1 in 1,500 worldwide §  Oracle Platinum Partner – 1 in 3,000 worldwide
  • 4.
    Slide 4 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Outline 1.  Introduction 2.  Version Control Systems 3.  Useful Version Control Commands 4.  Workflows 5.  The Deployment Cycle 6.  Branching 7.  Getting Your Team On Board 8.  Questions & Answers
  • 5.
    Slide 5 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 6.
    Slide 6 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Bias §  I am biased towards Git §  I have done my best to be neutral Git Factoids §  Git  is  a  distributed  revision  control  system  with  an  emphasis  on  speed,  data  integrity,   and  support  for  distributed,  non-­‐linear  workflows.   §  Git   was   iniHally   designed   and   developed   by   Linus   Torvalds   for   Linux   kernel   development  in  2005   §  Git  is  the  most  widely  adopted  version  control  system  for  soLware  development.   §  Git  is  freely  distributed  under  the  terms  of  the  GNU  General  Public  License  v2.  
  • 7.
    Slide 7 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Typical Large Corp Release Method §  Developer creates code §  Developer unit tests code §  Code may get tested by 3rd party §  Code may get reviewed by 3rd party §  Code may get tested in a secondary environment to ensure setups are correct §  Code gets deployed to Production §  Spot checks may be done
  • 8.
    Slide 8 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Where is the code? §  Often developer commits code to trunk repeatedly
  • 9.
    Slide 9 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Advantages §  Easy!
  • 10.
    Slide 10 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Pitfalls §  Not Simple §  http://www.infoq.com/presentations/Simple-Made-Easy §  http://www.slideshare.net/evandrix/simple-made-easy §  Need people to remember or record in a tool which code version is to be deployed §  After deployment version may be all but lost §  Could have tools in place, but those require additional maintenance §  Places tracking outside of developer responsibility
  • 11.
    Slide 11 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 12.
    Slide 12 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Types of Version Control §  Centralized §  Distributed
  • 13.
    Slide 13 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Centralized Version Control §  Relies on single repository §  People check-out and check-in documents §  Some locking may be used to prevent conflicts §  Branches treated like folders Repository   Curly   Larry   Moe  
  • 14.
    Slide 14 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Corporate Behavior: Centralized §  Merges are feared §  Tendency towards committing only when absolutely necessary §  Commits to trunk/master for everything
  • 15.
    Slide 15 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Centralized Version Control Software Subversion  (SVN)   hRp://subversion.Hgris.org   Team  Founda=on  Server  (TFS)   hRps://msdn.microsoL.com/en-­‐us/vstudio/ff637362.aspx   Concurrent  Versioning  System  (CVS)   hRp://www.nongnu.org/cvs/   Perforce(P4)   hRp://www.perforce.com   ClearCase   hRp://www-­‐03.ibm.com/soLware/products/en/clearcase  
  • 16.
    Slide 16 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech SVN §  Initial Release in 2000 §  An Apache Foundation Project §  Mostly compatible successor to CVS
  • 17.
    Slide 17 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Distributed Version Control §  Repositories are local §  Peer-to-Peer §  Exchange Patches §  Branches are separate entities Joe   Curly   Moe   “Blessed”   Repo  
  • 18.
    Slide 18 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Distributed Version Control Software Bazaar   hRp://git-­‐scm.com/  
  • 19.
    Slide 19 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Git §  Started in 2005 by Linus Torvalds to support Linux Kernel Development §  Inspired by BitKeeper and Monotone
  • 20.
    Slide 20 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Using Git
  • 21.
    Slide 21 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 22.
    Slide 22 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Initialize a Repository §  In SVN: §  HOWTO: Hosting a Subversion Repository §  http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ §  In Git: §  https://kovshenin.com/2011/howto-remote-shared-git-repository/ git init -OR- git init –bare test-repo.git
  • 23.
    Slide 23 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to retrieve a repository §  In SVN: §  In Git: svn co https://host.com/path/repo git clone https://host.com/path/repo.git -OR- git clone user@server:path/repo.git
  • 24.
    Slide 24 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to add files §  In SVN: §  In Git: svn add test-file.txt git add test-file.txt
  • 25.
    Slide 25 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to commit changes §  In SVN: §  In Git: svn commit –m "Some Message" git commit –m "Some Message"
  • 26.
    Slide 26 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to push changes §  In SVN: §  Doesn’t make sense as it’s not distributed §  In Git: git push
  • 27.
    Slide 27 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to branch §  In SVN: §  In Git: svn copy http://svn.example.com/repos/calc/trunk http://svn.example.com/repos/calc/branches/my-calc-branch -m "Creating a private branch of /calc/trunk." git branch my-calc-branch -OR- git checkout –b my-calc-branch # Takes you to the new branch
  • 28.
    Slide 28 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to change branches §  In SVN: §  In Git: cd path/to/branch git checkout my-calc-branch
  • 29.
    Slide 29 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech How to merge §  In SVN: §  In Git: cd /path/to/repo/trunk svn merge ../branches/my_branch/ # Merges changes in working copy svn commit -m "Merge my_branch" cd /path/to/repo git merge my-branch # Merges Local Branches git push # Pushes merge out to remote
  • 30.
    Slide 30 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 31.
    Slide 31 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Release Method: Environment Based Development   Test   ProducHon   (trunk)   F2   F3  F1  
  • 32.
    Slide 32 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Centralized Workflow §  Commits are sequential §  All users commit to the same branch §  No guarantee of what is “production- ready” §  Tagging not very useful
  • 33.
    Slide 33 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Centralized Workflow (Cont.) §  Developer Checks out §  Makes Changes §  Commits §  Some point in the future code ends up in development
  • 34.
    Slide 34 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Feature Workflow §  Developers create branches for each feature §  Features don’t get merged until it’s time for production  
  • 35.
    Slide 35 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Feature Workflow (Cont.) §  Developer branches from master/trunk §  Makes changes
  • 36.
    Slide 36 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Release-based “Driessen” Workflow §  Two primary branches §  Production §  Development §  Transient Personal Branches §  Tagging Used Heavily §  Manages for Hot Fixes §  Release Branches Credit:  Vincent  Driessen  
  • 37.
    Slide 37 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Release-based Workflow (Cont.) §  Starts similar to feature workflow §  Features branches from develop §  Hotfixes from master §  Upon feature completion, merged back into develop §  Once ready to do a release create a branch §  Only perform bug fixes §  Release to production/master
  • 38.
    Slide 38 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 39.
    Slide 39 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Where? §  Where should deployments come from?
  • 40.
    Slide 40 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech When? §  Disclaimer: Established processes may prevent changing the timing of releases. §  How often should I release? §  When during the day should I release?
  • 41.
    Slide 41 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 42.
    Slide 42 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Purpose Driven Separation §  Branch Types §  Feature – “feature/HAD/00001-some-new-feature” §  Bug – “bug/HAD/010000-blue-screen-of-death-is-red” §  Spike / Experimental §  “spike/HAD/radical-new-things” §  “exp/HAD/something-really-awesome” §  Release – “release/1.5” or “release/20150507.1” §  Tagging – “1.4” or “20150808.1”
  • 43.
    Slide 43 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 44.
    Slide 44 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Finding Time §  Transition Slowly §  Implement portions where possible §  Start with keeping all new development into separate
  • 45.
    Slide 45 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Get Familiar With Tools and Process §  SVN Tutorials §  http://www.tutorialspoint.com/svn/ §  GIT Book §  http://git-scm.com/book/en/v2/
  • 46.
    Slide 46 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Perform an Exercise §  Go through a practice bug fix and feature release. §  Create Branches §  Make gimmick changes §  Go through the steps of a release §  Code Change §  Code Review §  Release and merge
  • 47.
    Slide 47 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Introduce it at a team meeting §  This can be useful whether or not the release process is decided at a team level.
  • 48.
    Slide 48 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Try process with a real change §  Be diligent about the process §  Follow it to production §  Review the hiccups and try to iron them out. §  Slowly add it to more changes.
  • 49.
    Slide 49 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Do a team exercise §  If this exercise can show improved efficiency and code quality
  • 50.
    Slide 50 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech
  • 51.
    Slide 51 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Contact Information §  Harold Dost III §  Senior Consultant §  @hdost §  harold.dost@raastech.com
  • 52.
    Slide 52 of52© Raastech, Inc. 2015 | All rights reserved.@Raastech Resources §  Atlassian. (2015). Comparing Workflows. Retrieved 2015, from Atlassian: https://www.atlassian.com/git/tutorials/comparing-workflows/ §  Bansal, N. (2011). HOWTO: Hosting a Subversion Repository. Retrieved 2015, from University Of Toronto: http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ §  Driessen, V. (2010). A successful Git branching model. Retrieved 2015, from Nvie: http://nvie.com/posts/a-successful-git-branching-model/ §  Git SCM. (2014). Git Book. Retrieved 2015, from Git SCM: http://git-scm.com/book/en/v2/ §  Kovshenin, K. (2011). How To Create a Remote Shared Git Repository. Retrieved 2015, from Kovshenin: https://kovshenin.com/2011/howto-remote-shared-git-repository/ §  Tutorials Point. (2014). SVN Tutorial. Retrieved 2015, from Tutorials Point: http://www.tutorialspoint.com/svn/