Version control for spreadsheets - Bjoern Stiel at Eusprig 2014

Preview:

DESCRIPTION

Version control and continuous integration have become de-facto standards in software engineering. Source control gives developers control over changes to their source code, removes the friction of team collaboration and is vitally important for locating and fixing bugs. For developers, it is unthinkable to work without revision control. Yet when it comes to spreadsheets, the best we seem to have come up with so far is file name timestamping and keeping long lists of file versions. This talk gives an overview of source control and collaboration concepts. We start off with a brief introduction to graph theory, cover basic version design concepts and move on to the question why spreadsheets are stubbornly tricky beasts to version control. We will cover practical examples and discuss how to integrate version control (and continuous integration) into our workflow.

Citation preview

Björn Stiel, Founder/CEO at spreadgit

Version Control for SpreadsheetsA fresh take on an old problem

bjoern@spreadgit.com

Looks familiar?

Versioning, but no control

Search?

Compare?

Track ownership?

A primer on version control

Merge

Compare (aka Diff)

Restore

Collaborate

Centralised vs distributed version control systems

Text

Binaries?

Excel?

CVS, Subversion, Perforce, Mercurial, Git

A primer on version control

Show me the diffs!

<section>

<h2>hello</h2>

</section>

<section>

<h2>hello!</h2>

</section><section>

+

- <h2>hello</h2>

+ <h2>hello!</h2>

</section>

Show me the diffs?

Sheets II: Values

Sheets I: Formulae

Sheets (again): Charts, formatting, forms, ActiveX objects

Code: VBA

Workbook properties

Diffing sheets

A two dimensional problem

What is it actually that we are after?

Up to 1,048,576 rows by 16,384 columns (~17 billion cells)

Kill the noise: cells vs rows vs columns

Models vs views

A change is a change. Or is it not?

[A1]: =TODAY()

[A2]: =A1 + 1

[A1]:

[A2]: =TODAY()

[A3]: =$A$2 + 1

A very brief demo

It‘s show time

Our stack

On-prem VM vs hosted server

Client: Python (.exe)

Server: Python/Flask, JSON API, Webserver, NoSQL database

UI: Browser, HTML/jQuery

Questions? Thank you!

bjoern@spreadgit.com

https://spreadgit.com

Recommended