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

Tips, Tricks & Good Citizenship

Tips, Tricks & Good Citizenship

What has version control got to do with good citizenship? How does this relate to code? How is your company culture and release policy reflected in your version control choices?

Join me in discussing how branching techniques can affect code conflicts and see what can happen when clever tools get too big for their boots!

An updated version of my June 2016 talk, given in July 2016 at @WorcSource; includes a clearer animated progress version of git lab flow style branching strategies.

Tess Barnes

July 05, 2016
Tweet

More Decks by Tess Barnes

Other Decks in Programming

Transcript

  1. @CRATAEGUSTESS TESS BARNES • multi language developer • currently working

    for Fasthosts • tech lead • agile advocate • mental wellness advocate
  2. HOPEFULLY… WHAT WE WILL COVER • how good citizenship fits

    in • fundamentals • conflict resolution • branching • documentation • the right tool for the right reasons
  3. 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
  4. WHAT’S IT GOT TO DO WITH CODE? GOOD (CODE) CITIZENSHIP

    • version control is the hub of a bigger system
  5. 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
  6. 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
  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 • keeping our house clean • doing what we agreed
  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 • doing what we agreed • sharing what we know
  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 • sharing what we know • inviting feedback
  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 • inviting feedback • moving forward together
  11. HIGH LEVEL VIEW THE FUNDAMENTALS • version control is a

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

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

    keystone of good development practices • lots of tools available, some good, some awful • sharing code
  14. 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
  15. 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
  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 • safeguarding code snapshots • integrating code • allowing easy rollback
  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 • safeguarding code snapshots • not just code • integrating code • allowing easy rollback
  18. THE SEQUENCE THE FUNDAMENTALS 1. separate 2. change 3. merge

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

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

    4. snapshot 5. release • refresh (1…n) • test (1…n) • sanity check
  21. <?php namespace RecipeForum; class Cleaver { private $weightInGrams; private $lengthInInch;

    private $percentSharp = 100; private $percentSteel; public function __construct($weightInGrams, $lengthInInch, $percentSteel) { $this->weightInGrams = $weightInGrams; $this->lengthInInch = $lengthInInch; $this->percentSteel = $percentSteel; } public function Sharpen($sharpener) { $this->weightInGrams -= 0.01; $this->percentSharp = 100; } public function Cut($foodItem) { $this->percentSharp -=1; } } <?php namespace RecipeForum; class Cleaver { private $loyaltyScore; private $age; private $favouriteChef; private $dateJoined; public function __construct($age, $loyaltyScore, $dateJoined) { $this->age = $age; $this->loyaltyScore = $loyaltyScore; $this->dateJoined = $dateJoined; } public function setFavouriteChef($chefId) { $this->favouriteChef = $chefId; } }
  22. 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
  23. 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
  24. 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
  25. 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
  26. BRANCHING STRATEGIES CONTINUOUS INTEGRATION master production tag live hot fix

    MR fetch / pull clone1 clone2 tag MR / push clone3
  27. BRANCHING STRATEGIES CONTINUOUS INTEGRATION master production tag live hot fix

    MR fetch / pull MR clone1 clone2 MR / push clone3 tag
  28. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS staging production fetch / pull

    clone1 clone3 master MR clone2 MR / push tag live hot fix MR
  29. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS staging production fetch / pull

    clone1 clone3 master MR clone2 tag MR / push live hot fix MR
  30. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS staging production fetch / pull

    clone1 clone3 master tag MR clone2 MR / push live hot fix MR
  31. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS staging production fetch / pull

    MR clone1 clone3 master tag MR clone2 MR / push live hot fix MR
  32. BRANCHING STRATEGIES MULTIPLE DEPLOYMENT ENVIRONMENTS staging production live hot fix

    fetch / pull MR clone1 clone3 master tag MR MR clone2 MR / push MR
  33. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR MR / push live hot fix clone2
  34. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix clone2
  35. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix CHERRYPICK MR clone2
  36. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix tag CHERRYPICK MR MR clone2
  37. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR MR live hot fix clone2
  38. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix MR clone2
  39. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix CHERRYPICK MR MR clone2
  40. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix CHERRYPICK MR CHERRYPICK MR MR clone2
  41. BRANCHING STRATEGIES LIVE HOT FIXES USING CHERRYPICKING staging production fetch

    / pull clone1 master MR tag MR / push MR live hot fix tag CHERRYPICK MR CHERRYPICK MR MR clone2
  42. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

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

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

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - respect your intended audience
  45. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - respect your intended audience • linked to issue and story trackers - don’t duplicate data
  46. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - respect your intended audience • linked to issue and story trackers - don’t duplicate data • used for code review in merge requests
  47. THE ART OF A GOOD COMMIT MESSAGE (IMO) DOCUMENTATION •

    succinct, informative, meaningful, consistent, agreed • could be scraped for release notes - respect your intended audience • linked to issue and story trackers - don’t duplicate data • used for code review in merge requests • pattern enforced using commit hooks
  48. 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)
  49. 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)
  50. 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)
  51. NOT EVERYONE USES GIT! RIGHT TOOL FOR THE RIGHT JOB

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

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

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

    the first priority may not be to change version control tool • make sure you’re fixing the right problems
  55. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • make sure you’re fixing the right problems • the more you know your tools, the more powerful they become
  56. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • make sure you’re fixing the right problems • the more you know your tools, the more powerful they become • choose a version control system that suits your business
  57. RESPECT YOUR COMMUNITY RIGHT TOOL FOR THE RIGHT JOB •

    the first priority may not be to change version control tool • make sure you’re fixing the right problems • the more you know your tools, the more powerful they become • choose a version control system that suits your business • most importantly… know WHY