Save 37% off PRO during our Black Friday Sale! »

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.

079fb5d4ef22e8fe922d1cbb4ef34a3a?s=128

Tess Barnes

June 11, 2016
Tweet

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