SlideShare a Scribd company logo
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

More Related Content

What's hot

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
Splunk
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with Subversion
Guy K. Kloss
 
BlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance ReportingBlazeMeter- Effective Performance Reporting
BlazeMeter- Effective Performance Reporting
BlazeMeter
 
UEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the HoodUEMB260: Provisioning: Under the Hood
UEMB260: Provisioning: Under the Hood
Ivanti
 
Testing Alfresco extensions
Testing Alfresco extensionsTesting Alfresco extensions
Testing Alfresco extensions
ITD 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 know
daveymni
 
FV04_MostoviczT_RAD
FV04_MostoviczT_RADFV04_MostoviczT_RAD
FV04_MostoviczT_RAD
Tsvi Mostovicz
 
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
Swapnil Jadhav
 
Version control
Version controlVersion control
Version control
Shahriar Iqbal Chowdhury
 
Semantic versioning implementation variations
Semantic versioning implementation variationsSemantic versioning implementation variations
Semantic versioning implementation variations
Daniel 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 Streams
Perforce
 
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
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
Virtual JBoss User Group
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
Sascha Möllering
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
Tuenti
 
Jmeter
JmeterJmeter
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - Releases
CFEngine
 
Continuous integration with teamcity
Continuous integration with teamcityContinuous integration with teamcity
Continuous integration with teamcity
Eugene Sheretov
 
PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb PAC 2019 virtual Philip Webb
PAC 2019 virtual Philip Webb
Neotys
 

What's hot (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
 

Similar to Maturing Locately Dev Processes

SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best Practices
Maidul Islam
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
Pavlo Hodysh
 
SVN Information
SVN Information  SVN Information
SVN Information
RAHUL TRIPATHI
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
Michelangelo van Dam
 
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
Nick Josevski
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
Mat Mannion
 
CICD Azure DevOps
CICD Azure DevOpsCICD Azure DevOps
CICD Azure DevOps
Sergey Seletsky
 
Patch Review
Patch ReviewPatch Review
Patch Review
秉儒 吳
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
Ashraf Fouad
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP Developers
Lorna 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 work
Chris 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 Engineering
Pavel 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 - SCaLE17x
Mandi Walls
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
Jesse Houwing
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
ssuser37f369
 
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
Perrin 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 speed
Svitlana Dubyk
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
Aviran Mordo
 

Similar to 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
 

Recently uploaded

"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 

Recently uploaded (20)

"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 

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