Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Version Control - Tips, tricks & good citizenship June 2016

Version Control - Tips, tricks & good citizenship June 2016

Given at php south coast June 2016. High level view of version control and how it fits into a wider picture of processes. Includes discussion on how difficulties with version control can be a reflection of issues in other areas of the business. Due to the lightening talk format and community choices, most focus centred on branching techniques and conflict resolution.

Tess Barnes

June 11, 2016
Tweet

More Decks by Tess Barnes

Other Decks in Programming

Transcript

  1. VERSION CONTROL TIPS, TRICKS & GOOD CITIZENSHIP

  2. @CRATAEGUSTESS HTTPS://JOIND.IN/TALK/FA438 TESS BARNES • multi language developer • currently

    working for Fasthosts • tech lead • agile advocate
  3. HOPEFULLY… WHAT WE WILL COVER • how good citizenship fits

    in • fundamentals • conflict resolution • branching • documentation • the right tool for the right reasons
  4. GOOD (CODE) CITIZENSHIP WHAT’S IT ALL ABOUT?

  5. EDUCATIONAL DEFINITION GOOD CITIZENSHIP Good citizens should always try to

    make a team-minded decision during any situation. Knowing what is right and wrong and understanding the consequences of a decision are important aspects of being a good citizen. Obeying laws and having respect for not only individuals in the community, but for the community itself, are other traits of a good citizen. Being helpful or helping those in need is another aspect of being a good citizen. from http://www.ask.com/world-view/qualities-good-citizen-5a9b527e5fe4adbc
  6. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system
  7. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on
  8. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on • keeping our house clean
  9. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on • keeping our house clean • doing what we agreed
  10. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on • keeping our house clean • doing what we agreed • sharing what we know
  11. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on • keeping our house clean • doing what we agreed • sharing what we know • inviting feedback
  12. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system • creating something great to build on • keeping our house clean • doing what we agreed • sharing what we know • inviting feedback • moving forward together
  13. THE FUNDAMENTALS CREATING SOMETHING GREAT TO BUILD ON

  14. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices
  15. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices • lots of tools available, some good, some awful
  16. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices • lots of tools available, some good, some awful • sharing code
  17. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices • lots of tools available, some good, some awful • sharing code • integrating code
  18. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices • lots of tools available, some good, some awful • sharing code • safeguarding code snapshots • integrating code
  19. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

    keystone of good development practices • lots of tools available, some good, some awful • sharing code • safeguarding code snapshots • integrating code • allowing easy rollback
  20. THE SEQUENCE THE FUNDAMENTALS 1. separate

  21. THE SEQUENCE THE FUNDAMENTALS 1. separate • refresh (1…n)

  22. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change • refresh

    (1…n)
  23. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change • refresh

    (1…n)
  24. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change • refresh

    (1…n) • test (1…n)
  25. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

    • refresh (1…n) • test (1…n)
  26. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

    • refresh (1…n) • test (1…n)
  27. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

    4. snapshot • refresh (1…n) • test (1…n)
  28. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

    4. snapshot 5. release • refresh (1…n) • test (1…n)
  29. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

    4. snapshot 5. release • refresh (1…n) • test (1…n) • sanity check
  30. HANDLING CONFLICTS DOING WHAT WE AGREED

  31. HANDLING CONFLICTS • some version control tools handle this better

    than others
  32. None
  33. HANDLING CONFLICTS • some version control tools handle this better

    than others • some tools hide issues
  34. None
  35. None
  36. HANDLING CONFLICTS • some version control tools handle this better

    than others • some tools hide issues • remember - the conflict is in the code, design or interpretation, not the tool
  37. HANDLING CONFLICTS • some version control tools handle this better

    than others • some tools hide issues • remember - the conflict is in the code, design or interpretation, not the tool • how you branch / merge affects when, not if your conflicts occur
  38. BRANCHING STRATEGIES KEEPING OUR HOUSE CLEAN

  39. BRANCHING STRATEGIES DISTRIBUTED OR SINGLE SERVER origin clone 1 clone

    2 clone pull fetch merge request server / repo check in check out update working copy 1 working copy 2 working copy 3
  40. BRANCHING STRATEGIES IS BRANCHING CHEAP?

  41. BRANCHING STRATEGIES DEVELOPER OVERLAP? HOW DO YOU FEEL ABOUT SHARING?

  42. BRANCHING STRATEGIES RELEASE FOCUS OR FEATURE FOCUS v1.1 v1.2 clone

    / push master merge merge branch 1.1 branch 1.2 v5.1 MR MR MR master F1 F2 F3
  43. BRANCHING STRATEGIES CONTINUOUS INTEGRATION master production tag live hot fix

    MR MR / push fetch/ pull clone1 clone 2 MR
  44. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS Production Staging Master clone1 clone2

    clone3 tag live hot fix MR MR MR MR MR / push fetch / pull
  45. DOCUMENTATION SHARING WHAT WE KNOW & INVITING FEEDBACK

  46. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed
  47. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - not just version control users
  48. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - not just version control users • linked to issue and story trackers - don’t duplicate data
  49. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - not just version control users • linked to issue and story trackers - don’t duplicate data • used for code review in merge requests
  50. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - not just version control users • linked to issue and story trackers - don’t duplicate data • used for code review in merge requests • pattern enforced using commit hooks
  51. ADDITIONAL THOUGHTS DOCUMENTATION • expected practices for open source (e.g.

    git hub templates)
  52. ADDITIONAL THOUGHTS DOCUMENTATION • expected practices for open source (e.g.

    git hub templates) • .gitmessage encouraging why & how over ‘one liners‘
 https://robots.thoughtbot.com/better-commit-messages-with-a-gitmessage- template • what (title)
  53. ADDITIONAL THOUGHTS DOCUMENTATION • expected practices for open source (e.g.

    git hub templates) • .gitmessage encouraging why & how over ‘one liners‘
 https://robots.thoughtbot.com/better-commit-messages-with-a-gitmessage- template • what (title) • why (link to feature)
  54. ADDITIONAL THOUGHTS DOCUMENTATION • expected practices for open source (e.g.

    git hub templates) • .gitmessage encouraging why & how over ‘one liners‘
 https://robots.thoughtbot.com/better-commit-messages-with-a-gitmessage- template • what (title) • why (link to feature) • how (details - pitched for your audience)
  55. RIGHT TOOL FOR THE RIGHT JOB MOVING FORWARD TOGETHER

  56. RIGHT TOOL FOR THE RIGHT JOB •

  57. NOT EVERYONE USES GIT! RIGHT TOOL FOR THE RIGHT JOB

    • git is distributed, prolific, popular and practically required for open source
  58. NOT EVERYONE USES GIT! RIGHT TOOL FOR THE RIGHT JOB

    • git is distributed, prolific, popular and practically required for open source • but there’s still other tools out there… ➡ older companies and legacy projects? Subversion? ➡ proprietary code? Mercurial? ➡ c# houses? TFS?
  59. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool
  60. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • choose a version control system that suits your business
  61. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • choose a version control system that suits your business • most importantly…
  62. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • choose a version control system that suits your business • most importantly… know WHY
  63. None
  64. None
  65. THANK YOU FOR LISTENING TESS BARNES @CRATAEGUSTESS JOIND.IN: HTTPS://JOIND.IN/TALK/FA438