Upload
eusprig
View
169
Download
1
Tags:
Embed Size (px)
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
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