Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing...
Transcript of Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing...
Managing Complexity: Version Control Basics
Sven Erik Knop Senior Technical Specialist
2
Quick overview of the speaker
Sven Erik Knop, Perforce Software
• Senior Technical Specialist
Joined Perforce 2007 as a Consultant
Twitter: @p4sven
Blog: https://www.perforce.com/blog/author/sknop
3
Why version control?
4
Best practice for Version Control
Single Source of Truth
Change sets
Branching and Flow of Change
Variant Management
Configuration Management and CBD
Continuous Integration
5
Single Source of Truth
6
Change sets
Task-oriented, can involve many files
Single intent
Narrow scope
Description for your future self and your colleagues
Consistent (read buildable)
Complete (tests, documentation)
Traceable
Reversible
7
Tracing History
Across time
Across users
Across branches
8
Tracing history across time
9
Tracing history across users
10
Tracing history across branches
11
Branching and Flow of Change
12
Variant Management
13
Managing Complexity
Break projects into components
Manage components independently
Assemble components in configurations
Version configurations
14
Component-Based Development (CBD)
Component
• Single unit of functionality
• Limited scope, clear purpose
• Easily aggregated and reused
• Developed independently
• Separate “life cycle”
CBD
• Managing component production
• Enabling component reuse
• Assembling components
15
Managing Configurations
Projects are assembled from components
Each release has its own configuration
Configurations need to be versioned:
• Influences build and test
• Trace changes across whole project
• Recreate exact version delivered to a customer
• Essential for Continuous Integration
16
Continuous Integration
Fast feedback on the quality of a check-in
• Essential for agile development
17
In summary
Version control is the foundation of any development
• Single Source of Truth
• Essential for continuous integration
Manage complexity through component-based development
• Version configurations
Any questions?