SlideShare uma empresa Scribd logo
1 de 12
Maturing Locately Dev Processes
Branching, merging, reviewing,
releasing
Motivations/Drivers
• A dev team that is
– Growing (7 committers)
– More distributed (Boston/KC)
• A codebase that is
– Growing (not in “maintenance mode”)
– More mission-critical to our business, customers,
users, analysts
– Less familiar overall to the team
• These are good things!
2
Emerging Necessities 1
• More controlled trunk
– A broken trunk affects more devs
– Higher velocity of development means we’re more likely to release
something problematic
• Better revision control in non-trunk
– Enable collaboration with co-workers on features
– Safely tuck away local check-ins without affecting trunk
• Need to capture, discuss, iterate on early dev artifacts
– E.g., specs, plan of attack
• More controlled release/push process
– Better planned and timed
– More deliberate schema migrations, minimizing impacts of downtime
– More robust staging/testing/go-or-no-go checkpoints
3
Emerging Necessities 2
• Improved Code Reviews
– Asynchronous code reviews
• Less disruptive to the reviewer
• Non-blocking for the developer
• But in-person discussion is still best
– Multiple reviewers, optional reviewers
– Desire for “sit-ins”
4
Suggested Processes
• Based on best practices, judgment, personal
preferences, guessing
• Open for debate and evolution
• Basic suggested workflow (for a “sizeable” mod):
– Branching into feature branch
– Merging (refreshing) from trunk into branch
– Creating review request
– Including “release notes”
– Code review
– Merging (re-integrating) from branch into trunk
5
Branching into Feature Branch
• Create a branch
svn copy -rHEAD svn+ssh://matt@dev.locately.com/ebs/repo/siphon/trunk
svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730
• Option 1: New working copy for that branch (more
appealing IMO)
svn checkout svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730
siphon_mybranch
• Option 2: Switch working copy to that branch
svn switch svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730
/Users/mattklein/EclipseWorkspaces/locately/siphon
– Note that “svn switch” is just like “svn update” – it actually
performs the updates into your working copy (doesn’t allow you
to review them)
• For Eclipse: Import > Existing Projects Into Workspace
6
Working in Feature Branch
• Perform check-ins as desired (w/o code review)
• Collaborate with co-workers via this branch if necessary
• Regularly merge changes that have happened in trunk into this
branch:
svn merge svn+ssh://matt@dev.locately.com/ebs/repo/siphon/trunk
– This affects your working copy (not the repo)
– Sanest to do this with a clean working copy
– This copies changes that have happened in trunk since your last merge
(or since branch creation) into your working copy
– Review and commit those changes into your branch in the repo
• Use commit comment something like “merging changes from trunk into
branch”
• Repeat as necessary
• When done with the feature, submit a review request
7
Installing ReviewBoard
• With your virtualenv activated:
easy_install RBTools
• Create ~/.reviewboardrc:
REVIEWBOARD_URL="https://reviewboard.locately.com/"
REPOSITORY="svn+ssh://matt@dev.locately.com/ebs/svn/two"
USERNAME="matt"
PASSWORD="matt"
• (Yes, this actually works now)
8
Creating Review Request
• Create a RB review request for the changeset that
took rev. 8178 to rev. 8186:
rbt post -d --revision-range=8178:8186 --open
• Add one or more reviewers
– Who? TBD; informal for now
• Include release notes:
– Functional summary
– If schema migrations: expected duration, backwards-
compatible?
– What testing/verification should be done in “staging”
during push; what are the risks at go-live?
9
Code Reviews via ReviewBoard
• Reviewer:
– Check out the code from the branch if desired
– Within ReviewBoard: make comments,
suggestions, ask questions
– Always plan for in-person discussion
• De-personalize: keep it about the code, not
the coder
• Other best practices?
10
Merging Feature Branch into Trunk
• Once a changeset is reviewed and approved
• Perform a final merge of trunk into the branch
• Now trunk and the branch are identical, with the
exception of the branch’s changes
• Go into a clean working copy of trunk
• Merge into this working copy using --reintegrate
• Whose responsibility should this be? The
developer? A “CM manager”?
• Afterwards, delete (rather than re-use) the
feature branch
11
Other Thoughts
• Use ReviewBoard to capture design artifacts:
e.g., specs, plan of attack
• And iterate/comment on them, bring in the
appropriate people
12

Mais conteúdo relacionado

Mais procurados

Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with SubversionGuy K. Kloss
 
BlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance ReportingBlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance ReportingBlazeMeter
 
UEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the HoodUEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the HoodIvanti
 
Testing Alfresco extensions
Testing Alfresco extensionsTesting Alfresco extensions
Testing Alfresco extensionsITD Systems
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to knowdaveymni
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingSwapnil Jadhav
 
Semantic versioning implementation variations
Semantic versioning implementation variationsSemantic versioning implementation variations
Semantic versioning implementation variationsDaniel Rogatchevsky
 
Five Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsFive Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsPerforce
 
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...JosephTesta9
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release WorkflowTuenti
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneciberkleid
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCFEngine
 
Continuous integration with teamcity
Continuous integration with teamcityContinuous integration with teamcity
Continuous integration with teamcityEugene Sheretov
 
PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb Neotys
 

Mais procurados (20)

Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with Subversion
 
BlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance ReportingBlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance Reporting
 
UEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the HoodUEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the Hood
 
Testing Alfresco extensions
Testing Alfresco extensionsTesting Alfresco extensions
Testing Alfresco extensions
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
 
FV04_MostoviczT_RAD
FV04_MostoviczT_RADFV04_MostoviczT_RAD
FV04_MostoviczT_RAD
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
Version control
Version controlVersion control
Version control
 
Semantic versioning implementation variations
Semantic versioning implementation variationsSemantic versioning implementation variations
Semantic versioning implementation variations
 
Five Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsFive Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce Streams
 
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Jmeter
JmeterJmeter
Jmeter
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - Releases
 
Continuous integration with teamcity
Continuous integration with teamcityContinuous integration with teamcity
Continuous integration with teamcity
 
PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb
 

Semelhante a Maturing Locately Dev Processes

SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best PracticesMaidul Islam
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching modelPavlo Hodysh
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationNick Josevski
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps JumpstartOri Donner
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the thingsMat Mannion
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP DevelopersLorna Mitchell
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris O'Brien
 
Software Versioining: A Time Travel Problem in Software Engineering
Software Versioining: A Time Travel Problem in Software EngineeringSoftware Versioining: A Time Travel Problem in Software Engineering
Software Versioining: A Time Travel Problem in Software EngineeringPavel Shukhman
 
Adding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17xAdding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17xMandi Walls
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the UnknownJesse Houwing
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknownssuser37f369
 
Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsPerrin Harkins
 
How to organize qa process in agile speed
How to organize qa process in agile speedHow to organize qa process in agile speed
How to organize qa process in agile speedSvitlana Dubyk
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comAviran Mordo
 

Semelhante a Maturing Locately Dev Processes (20)

SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best Practices
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
SVN Information
SVN Information  SVN Information
SVN Information
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable application
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
CICD Azure DevOps
CICD Azure DevOpsCICD Azure DevOps
CICD Azure DevOps
 
Patch Review
Patch ReviewPatch Review
Patch Review
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP Developers
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing work
 
Software Versioining: A Time Travel Problem in Software Engineering
Software Versioining: A Time Travel Problem in Software EngineeringSoftware Versioining: A Time Travel Problem in Software Engineering
Software Versioining: A Time Travel Problem in Software Engineering
 
Adding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17xAdding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17x
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web Applications
 
How to organize qa process in agile speed
How to organize qa process in agile speedHow to organize qa process in agile speed
How to organize qa process in agile speed
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 

Último

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Último (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Maturing Locately Dev Processes

  • 1. Maturing Locately Dev Processes Branching, merging, reviewing, releasing
  • 2. Motivations/Drivers • A dev team that is – Growing (7 committers) – More distributed (Boston/KC) • A codebase that is – Growing (not in “maintenance mode”) – More mission-critical to our business, customers, users, analysts – Less familiar overall to the team • These are good things! 2
  • 3. Emerging Necessities 1 • More controlled trunk – A broken trunk affects more devs – Higher velocity of development means we’re more likely to release something problematic • Better revision control in non-trunk – Enable collaboration with co-workers on features – Safely tuck away local check-ins without affecting trunk • Need to capture, discuss, iterate on early dev artifacts – E.g., specs, plan of attack • More controlled release/push process – Better planned and timed – More deliberate schema migrations, minimizing impacts of downtime – More robust staging/testing/go-or-no-go checkpoints 3
  • 4. Emerging Necessities 2 • Improved Code Reviews – Asynchronous code reviews • Less disruptive to the reviewer • Non-blocking for the developer • But in-person discussion is still best – Multiple reviewers, optional reviewers – Desire for “sit-ins” 4
  • 5. Suggested Processes • Based on best practices, judgment, personal preferences, guessing • Open for debate and evolution • Basic suggested workflow (for a “sizeable” mod): – Branching into feature branch – Merging (refreshing) from trunk into branch – Creating review request – Including “release notes” – Code review – Merging (re-integrating) from branch into trunk 5
  • 6. Branching into Feature Branch • Create a branch svn copy -rHEAD svn+ssh://matt@dev.locately.com/ebs/repo/siphon/trunk svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730 • Option 1: New working copy for that branch (more appealing IMO) svn checkout svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730 siphon_mybranch • Option 2: Switch working copy to that branch svn switch svn+ssh://matt@dev.locately.com/ebs/repo/siphon/branches/matt_20130730 /Users/mattklein/EclipseWorkspaces/locately/siphon – Note that “svn switch” is just like “svn update” – it actually performs the updates into your working copy (doesn’t allow you to review them) • For Eclipse: Import > Existing Projects Into Workspace 6
  • 7. Working in Feature Branch • Perform check-ins as desired (w/o code review) • Collaborate with co-workers via this branch if necessary • Regularly merge changes that have happened in trunk into this branch: svn merge svn+ssh://matt@dev.locately.com/ebs/repo/siphon/trunk – This affects your working copy (not the repo) – Sanest to do this with a clean working copy – This copies changes that have happened in trunk since your last merge (or since branch creation) into your working copy – Review and commit those changes into your branch in the repo • Use commit comment something like “merging changes from trunk into branch” • Repeat as necessary • When done with the feature, submit a review request 7
  • 8. Installing ReviewBoard • With your virtualenv activated: easy_install RBTools • Create ~/.reviewboardrc: REVIEWBOARD_URL="https://reviewboard.locately.com/" REPOSITORY="svn+ssh://matt@dev.locately.com/ebs/svn/two" USERNAME="matt" PASSWORD="matt" • (Yes, this actually works now) 8
  • 9. Creating Review Request • Create a RB review request for the changeset that took rev. 8178 to rev. 8186: rbt post -d --revision-range=8178:8186 --open • Add one or more reviewers – Who? TBD; informal for now • Include release notes: – Functional summary – If schema migrations: expected duration, backwards- compatible? – What testing/verification should be done in “staging” during push; what are the risks at go-live? 9
  • 10. Code Reviews via ReviewBoard • Reviewer: – Check out the code from the branch if desired – Within ReviewBoard: make comments, suggestions, ask questions – Always plan for in-person discussion • De-personalize: keep it about the code, not the coder • Other best practices? 10
  • 11. Merging Feature Branch into Trunk • Once a changeset is reviewed and approved • Perform a final merge of trunk into the branch • Now trunk and the branch are identical, with the exception of the branch’s changes • Go into a clean working copy of trunk • Merge into this working copy using --reintegrate • Whose responsibility should this be? The developer? A “CM manager”? • Afterwards, delete (rather than re-use) the feature branch 11
  • 12. Other Thoughts • Use ReviewBoard to capture design artifacts: e.g., specs, plan of attack • And iterate/comment on them, bring in the appropriate people 12