2017 LabVIEW Developer Day Santa Clara
Branching Workflows for Accelerated
Team Development
Ching-Hwa Yu
Software Engineering Manager
CLA, CTA
1
2017 LabVIEW Developer Day Santa Clara
Incorporating branching workflows can significantly
accelerate development
2
Delivery Pipeline
Source Code Management
Branching Workflows
Limitations
2017 LabVIEW Developer Day Santa Clara
Developing software at a fast pace to scale is
challenging
Custom
Steps
Tools
Drivers
Database
LabVIEW
TestStand
SCM
2017 LabVIEW Developer Day Santa Clara
Establishing a repeatable delivery pipeline is essential to
team development
4
Figure 1. Continuous Delivery Process Diagram (Humble, 2010)
2017 LabVIEW Developer Day Santa Clara
A number of modern source code management systems
are available
5
Git Mercurial Perforce Helix
https://en.wikipedia.org/wiki/List_of_version_control_software
VSTS
2017 LabVIEW Developer Day Santa Clara
Modern versioning systems have features specifically
designed for team development
It’s not about distributed vs. centralized…
It’s all about the branching…
– Frictionless Context Switching
– Feature/Issue Based Workflow
– Role-Based Codelines
6
2017 LabVIEW Developer Day Santa Clara
Trunk based development with release branches is the
most widely used workflow
7
Figure 2. Trunk Based Development (paulhammant.com)
2017 LabVIEW Developer Day Santa Clara
Feature branching (Task Driven Development) is an
extremely popular workflow but it has downsides
8
Not “Pure” CI
Smart Build Server
– Bamboo
– Jenkins
Figure 3. Basic Branch-Per-Issue Workflow (atlassian.com)
2017 LabVIEW Developer Day Santa Clara
Git-flow is a popular workflow using feature branching
9
Figure 4. Development using Git-flow Workflow (atlassian.com)
2017 LabVIEW Developer Day Santa Clara
Branching is great but LabVIEW has it’s limitation when
it comes to merging and diffs
LVMerge and LVDiff doesn’t
support all LabVIEW file types
– Projects
– Xctls
– Classes
– Libraries
10
2017 LabVIEW Developer Day Santa Clara
A workaround to the limitations is a method called
Promiscuous Integration (PI) – also known as Cherry
picking
11
Figure 5. Promiscuous Integration (martinfowler.com)
2017 LabVIEW Developer Day Santa Clara
SourceTree is an extremely popular Git client
12
Figure 6. SourceTree (atlassian.com)
2017 LabVIEW Developer Day Santa Clara
TortoiseHg is a very popular Mercurial client
13
Figure 7. TortoiseHg Workbench (bitbucket.org)
2017 LabVIEW Developer Day Santa Clara
P4V is the default client for native Perforce
14
Figure 8. P4V (perforce.com)
2017 LabVIEW Developer Day Santa Clara
In summary, combining branching workflow into a
repeatable delivery pipeline can significantly accelerate
team development
15
2017 LabVIEW Developer Day Santa Clara
Resources for additional reading
• Continuous Delivery by Jez Humble and David Farley
http://www.amazon.com/dp/0321601912
• Continuous Integration by Paul Duvall, Steve Matyas, and Andrew Glover
http://www.amazon.com/dp/0321336380
• Martin Fowler – http://martinfowler.com
• Paul Hammant – http://paulhammant.com
• Git Branching model (Git-flow)
http://nvie.com/posts/a-successful-git-branching-model/
• Atlassian Git tutorials – https://www.atlassian.com/git/
16

2017 LabVIEW Developer Day - Branching Workflows for Accelerated Team Development

  • 1.
    2017 LabVIEW DeveloperDay Santa Clara Branching Workflows for Accelerated Team Development Ching-Hwa Yu Software Engineering Manager CLA, CTA 1
  • 2.
    2017 LabVIEW DeveloperDay Santa Clara Incorporating branching workflows can significantly accelerate development 2 Delivery Pipeline Source Code Management Branching Workflows Limitations
  • 3.
    2017 LabVIEW DeveloperDay Santa Clara Developing software at a fast pace to scale is challenging Custom Steps Tools Drivers Database LabVIEW TestStand SCM
  • 4.
    2017 LabVIEW DeveloperDay Santa Clara Establishing a repeatable delivery pipeline is essential to team development 4 Figure 1. Continuous Delivery Process Diagram (Humble, 2010)
  • 5.
    2017 LabVIEW DeveloperDay Santa Clara A number of modern source code management systems are available 5 Git Mercurial Perforce Helix https://en.wikipedia.org/wiki/List_of_version_control_software VSTS
  • 6.
    2017 LabVIEW DeveloperDay Santa Clara Modern versioning systems have features specifically designed for team development It’s not about distributed vs. centralized… It’s all about the branching… – Frictionless Context Switching – Feature/Issue Based Workflow – Role-Based Codelines 6
  • 7.
    2017 LabVIEW DeveloperDay Santa Clara Trunk based development with release branches is the most widely used workflow 7 Figure 2. Trunk Based Development (paulhammant.com)
  • 8.
    2017 LabVIEW DeveloperDay Santa Clara Feature branching (Task Driven Development) is an extremely popular workflow but it has downsides 8 Not “Pure” CI Smart Build Server – Bamboo – Jenkins Figure 3. Basic Branch-Per-Issue Workflow (atlassian.com)
  • 9.
    2017 LabVIEW DeveloperDay Santa Clara Git-flow is a popular workflow using feature branching 9 Figure 4. Development using Git-flow Workflow (atlassian.com)
  • 10.
    2017 LabVIEW DeveloperDay Santa Clara Branching is great but LabVIEW has it’s limitation when it comes to merging and diffs LVMerge and LVDiff doesn’t support all LabVIEW file types – Projects – Xctls – Classes – Libraries 10
  • 11.
    2017 LabVIEW DeveloperDay Santa Clara A workaround to the limitations is a method called Promiscuous Integration (PI) – also known as Cherry picking 11 Figure 5. Promiscuous Integration (martinfowler.com)
  • 12.
    2017 LabVIEW DeveloperDay Santa Clara SourceTree is an extremely popular Git client 12 Figure 6. SourceTree (atlassian.com)
  • 13.
    2017 LabVIEW DeveloperDay Santa Clara TortoiseHg is a very popular Mercurial client 13 Figure 7. TortoiseHg Workbench (bitbucket.org)
  • 14.
    2017 LabVIEW DeveloperDay Santa Clara P4V is the default client for native Perforce 14 Figure 8. P4V (perforce.com)
  • 15.
    2017 LabVIEW DeveloperDay Santa Clara In summary, combining branching workflow into a repeatable delivery pipeline can significantly accelerate team development 15
  • 16.
    2017 LabVIEW DeveloperDay Santa Clara Resources for additional reading • Continuous Delivery by Jez Humble and David Farley http://www.amazon.com/dp/0321601912 • Continuous Integration by Paul Duvall, Steve Matyas, and Andrew Glover http://www.amazon.com/dp/0321336380 • Martin Fowler – http://martinfowler.com • Paul Hammant – http://paulhammant.com • Git Branching model (Git-flow) http://nvie.com/posts/a-successful-git-branching-model/ • Atlassian Git tutorials – https://www.atlassian.com/git/ 16