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

Post on 30-Dec-2020

5 views 0 download

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?