Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing...

18
Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

Transcript of Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing...

Page 1: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

Managing Complexity: Version Control Basics

Sven Erik Knop Senior Technical Specialist

Page 2: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · 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

Page 3: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

3

Why version control?

Page 4: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

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

Page 5: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

5

Single Source of Truth

Page 6: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

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

Page 7: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

7

Tracing History

Across time

Across users

Across branches

Page 8: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

8

Tracing history across time

Page 9: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

9

Tracing history across users

Page 10: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

10

Tracing history across branches

Page 11: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

11

Branching and Flow of Change

Page 12: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

12

Variant Management

Page 13: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

13

Managing Complexity

Break projects into components

Manage components independently

Assemble components in configurations

Version configurations

Page 14: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

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

Page 15: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

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

Page 16: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

16

Continuous Integration

Fast feedback on the quality of a check-in

• Essential for agile development

Page 17: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

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

Page 18: Managing Complexity: Version Control Basics for FPGA Projects - … · 2017. 12. 1. · Managing Complexity: Version Control Basics Sven Erik Knop Senior Technical Specialist

Any questions?