SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Git for Excel
Felix Zumstein, 23 September 2019
xlwings Meetup London
Agenda (1/2)
2
1. But why??
2. Git refresher
3. So what’s the issue?
4. Four golden rules
Agenda (2/2)
3
5. Tools
A. Spreadsheet Compare
B. xltrail
C. Git XL
D. Git LFS
E. Git clients
6. Merge conflicts
A. Single branch workflow: File locking
B. Multi branch workflow
About us
Innovative Solutions
for Microsoft Excel
A small team with a big mission
5
xlwings
6
• Python for Excel
• Scripts, UDFs,
Macros, REST API
• Windows & Mac
(except UDFs)
• Free & open-source
• New: Professional
support plans
xltrail
7
• Version control for Excel
• Tracks formulas and VBA code
• Local Git extension that makes git diff
and git merge work with VBA code (only)
• Free & open-source
Git XL
8
xlwings CI
9
Continuous integration for Excel files
• Write unit tests for Excel files with xlwings
• Run them automatically on the server after
pushing changes to your Git repo
Example: Gitlab Pipeline
xlwings-reports (coming soon)
10
Template Report
create_report()
1. But why??
Look familiar?
12
A few more reasons
13
• Excel files are code, so treat them as such
• Git is battle tested
• Collaboration
• Audit trail / Spreadsheet governance
• Peer review / Approval process
• Reduce errors
2. Git refresher
The most important commands
15
• git diff
• git add Book1.xlsm
• git commit –m ”changed some things”
• git push origin master
• git pull
3. So what’s the issue?
1) Git doesn’t understand Excel
17
2) GitHub doesn’t understand Excel
18
and GitLab/BitBucket/Azure DevOps are no better
3) Heavy Excel files
19
• Git transfers the entire commit history of the
repository during the cloning process.
• As an example: Committing a 25 MB workbook
once per day during weekdays will lead to 7 GB
repo at the end of the year
4) Merge conflicts
20
Compared to text files, merge
conflicts with Excel files:
• Happen way more often
• Are harder to resolve
4. Four golden rules
1) No more versioned file names!
22
Financial Model_v1.xlsb
Financial Model.xlsb
2) Make use of commit messages
23
3) Add temp files to .gitignore
24
The .gitignore file prevents certain files to be accidentally
added/pushed to Git. To filter out temporary Excel files,
add this to your .gitignore file:
~$*.xl*
Otherwise you’ll end up
sooner or later like this:
4) Release a version via “git tag”
25
Release
asset/artefact
(not part of
Git repo!!)
It’s OK to include version stamps in released files (this
can be automated via a continuous integration service
like the new GitHub actions).
5. Tools
A. Spreadsheet Compare
Spreadsheet Compare
28
• Compares 2 Excel files
• Standalone desktop app (also integrated into
the Inquire Excel add-in)
• Part of Office Professional Plus and Office 365
ProPlus
• You can integrate it with Git:
https://www.xltrail.com/blog/git-diff-spreadsheetcompare
Sheet comparison
29
VBA comparison
30
B. xltrail
xltrail
32
• Free trial: https://www.xltrail.com
• xltrail syncs with any Git provider
• Alternatively, it works via Drag and Drop
and manages Git behind the scenes
• Allows comparisons across branches,
between any two versions
Summary across sheets and VBA
33
Sheet in context
34
C. Git XL
Git XL
36
• https://www.xltrail.com/git-xl
• Free & open-source local Git extension
• Created & maintained by us
• It is able to diff & merge (!) VBA code
• Windows only at the moment
Git XL: via command line
37
Git XL: via Sourcetree
38
Zero configuration required!
Git XL: VBA merging
39
• Git XL merges VBA directly in the VBA Editor
• Conflicts get highlighted like this:
D. Git LFS (Large File Storage)
Git LFS intro
41
• https://git-lfs.github.com
• Free & open-source local Git extension
• Large files are downloaded during “git checkout”
rather than during “git clone/git fetch”
• On the server side, you need to make sure that it
is supported & enabled
• git lfs track "*.xl*"
• Side note: Since Git 2.18 (June 2018), there’s an
“emerging feature” built into Git directly that is called
“partial clone”: https://git-scm.com/docs/partial-clone
Git LFS in action
42
• All standard Git commands like git pull/push work
automatically with LFS behind the scene
E. Git clients
Git clients
44
Git offers various clients to interact with the remote:
• Command Line
• Desktop clients (e.g. GitHub Desktop, Sourcetree).
For an overview: https://git-scm.com/downloads/guis
• File explorer integration: https://tortoisegit.org
• Integration with IDE/Text Editor (e.g. VSCode)
• Drag and Drop directly on GitHub, GitLab, Azure
DevOps (but not Bitbucket)
6. Merge conflicts
Merge conflicts will bite you!
46
They also happen:
• with a single master branch
• with a single user
For example:
• You commit during the day at work. In the
evening, you continue at home and forget to
pull before you make a new commit.
How do merge conflicts happen
47
True
merges
always
cause a
merge
conflict
(with
Excel
Files)
Fast-forward
merges
never
cause a
merge
conflict
A. Single branch workflow:
File locking
Informal file locking
49
• Similar to shared drives or SharePoint
• This prevents the merge conflict altogether
• Easy solution:
@team I am going to
update Model.xlsm
Let me know when you’re
done, I need it for 5 min.
All yours.
Thanks, let me pull.
Git LFS file locking
50
• Git LFS offers file locking (introduced
with v2.0)
• Meanwhile, all major providers support it
• A caveat of the file locking is that you
need to remember two things:
–Actually lock the file
–Start with a “git pull” before you edit the file
• git lfs track "*.xl*" --lockable
Git LFS file locking: commands
51
User: fzumstein
User: jenny
B. Multi branch workflow
Merge two branches
53
• We want to merge ”mybranch” into
“master”
• We end up in a merge conflict:
git mergetool to the rescue
54
• A simple way to get the files from both
branches next to each other is via “git
mergetool” – then cancel with Ctrl-C.
• This will add 4 files:
master mybranch
Resolve the merge conflict
55
• Now compare “contact_list.xlsm” (master)
with “contact_list_REMOTE.xlsm” (mybranch)
• Spreadsheet Compare or xltrail will be helpful
with that
• Manually apply the changes you want from
mybranch in your master version
• Then resolve the merge conflict via “git add”
and “git commit”.
Thank You
Let’s connect:
https://www.linkedin.com/in/felix-zumstein
More material:
https://www.xltrail.com/blog

Mais conteĂşdo relacionado

Mais procurados

Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみたwata2ki
 
WSL Windows Subsystem for Linux
WSL Windows Subsystem for LinuxWSL Windows Subsystem for Linux
WSL Windows Subsystem for LinuxJorge Arteiro
 
GitLab CI/CD パイプライン
GitLab CI/CD パイプラインGitLab CI/CD パイプライン
GitLab CI/CD パイプラインTetsurou Yano
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.skJuraj Hantak
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようNobuyuki Sasaki
 
Advantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoAdvantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoIanDavidson56
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cdDan MAGIER
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動Kohei Tokunaga
 
Project ACRN Device Passthrough Introduction
Project ACRN Device Passthrough IntroductionProject ACRN Device Passthrough Introduction
Project ACRN Device Passthrough IntroductionProject ACRN
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがないTakuya ASADA
 
本気で使うStack storm
本気で使うStack storm本気で使うStack storm
本気で使うStack stormtyamane
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversBrent Salisbury
 
Trabalho sobre o sistema operativo Haiku
Trabalho sobre o sistema operativo HaikuTrabalho sobre o sistema operativo Haiku
Trabalho sobre o sistema operativo HaikuRodrigovieira99
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub ActionsSwaminathan Vetri
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainAjeet Singh Raina
 
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方wata2ki
 

Mais procurados (20)

Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 
WSL Windows Subsystem for Linux
WSL Windows Subsystem for LinuxWSL Windows Subsystem for Linux
WSL Windows Subsystem for Linux
 
GitLab CI/CD パイプライン
GitLab CI/CD パイプラインGitLab CI/CD パイプライン
GitLab CI/CD パイプライン
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
Advantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoAdvantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepo
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
 
Project ACRN Device Passthrough Introduction
Project ACRN Device Passthrough IntroductionProject ACRN Device Passthrough Introduction
Project ACRN Device Passthrough Introduction
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
 
本気で使うStack storm
本気で使うStack storm本気で使うStack storm
本気で使うStack storm
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
 
Trabalho sobre o sistema operativo Haiku
Trabalho sobre o sistema operativo HaikuTrabalho sobre o sistema operativo Haiku
Trabalho sobre o sistema operativo Haiku
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
 
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方
 

Semelhante a Git for Excel

Git for Excel (Webinar)
Git for Excel (Webinar)Git for Excel (Webinar)
Git for Excel (Webinar)xlwings
 
Git for Excel files webinar
Git for Excel files webinarGit for Excel files webinar
Git for Excel files webinarxlwings
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubVenkat Malladi
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with GitIvano Malavolta
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hubNaveen Pandey
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIsTim Osborn
 
Git for developers
Git for developersGit for developers
Git for developersHacen Dadda
 
Introduction to Git for Network Engineers
Introduction to Git for Network EngineersIntroduction to Git for Network Engineers
Introduction to Git for Network EngineersJoel W. King
 
GitWorkFlow
GitWorkFlowGitWorkFlow
GitWorkFlowJacky Lian
 
Git Session 2K23.pptx
Git Session 2K23.pptxGit Session 2K23.pptx
Git Session 2K23.pptxEshaan35
 
Git overview
Git overviewGit overview
Git overviewGowarthini
 
Git hub for designers
Git hub for designersGit hub for designers
Git hub for designersFITC
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptxtnscharishma
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITPouriaQashqai1
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Ahmed El-Arabawy
 

Semelhante a Git for Excel (20)

Git for Excel (Webinar)
Git for Excel (Webinar)Git for Excel (Webinar)
Git for Excel (Webinar)
 
Git for Excel files webinar
Git for Excel files webinarGit for Excel files webinar
Git for Excel files webinar
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
 
Git
GitGit
Git
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
 
Git for developers
Git for developersGit for developers
Git for developers
 
GitHub Workflows for Technical Communication
GitHub Workflows for Technical CommunicationGitHub Workflows for Technical Communication
GitHub Workflows for Technical Communication
 
Introduction to Git for Network Engineers
Introduction to Git for Network EngineersIntroduction to Git for Network Engineers
Introduction to Git for Network Engineers
 
GitWorkFlow
GitWorkFlowGitWorkFlow
GitWorkFlow
 
Git Session 2K23.pptx
Git Session 2K23.pptxGit Session 2K23.pptx
Git Session 2K23.pptx
 
Git overview
Git overviewGit overview
Git overview
 
Git and github
Git and githubGit and github
Git and github
 
Git
GitGit
Git
 
Git hub for designers
Git hub for designersGit hub for designers
Git hub for designers
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptx
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 

Mais de xlwings

xlwings for Google Sheets
xlwings for Google Sheetsxlwings for Google Sheets
xlwings for Google Sheetsxlwings
 
Cross-platform Spreadsheet Automation with Python
Cross-platform Spreadsheet Automation with PythonCross-platform Spreadsheet Automation with Python
Cross-platform Spreadsheet Automation with Pythonxlwings
 
Automate your PDF factsheets with xlwings Reports
Automate your PDF factsheets with xlwings ReportsAutomate your PDF factsheets with xlwings Reports
Automate your PDF factsheets with xlwings Reportsxlwings
 
Tech3camp Meetup: Python for Excel
Tech3camp Meetup: Python for ExcelTech3camp Meetup: Python for Excel
Tech3camp Meetup: Python for Excelxlwings
 
xlwings performance
xlwings performancexlwings performance
xlwings performancexlwings
 
Deployment of xlwings-powered spreadsheets (webinar)
Deployment of xlwings-powered spreadsheets (webinar)Deployment of xlwings-powered spreadsheets (webinar)
Deployment of xlwings-powered spreadsheets (webinar)xlwings
 
xlwings reports: Reporting with Excel & Python
xlwings reports: Reporting with Excel & Pythonxlwings reports: Reporting with Excel & Python
xlwings reports: Reporting with Excel & Pythonxlwings
 
Python and Excel in Finance (PyData meetup Zurich)
Python and Excel in Finance (PyData meetup Zurich)Python and Excel in Finance (PyData meetup Zurich)
Python and Excel in Finance (PyData meetup Zurich)xlwings
 
Automated testing of Excel Workbooks
Automated testing of Excel WorkbooksAutomated testing of Excel Workbooks
Automated testing of Excel Workbooksxlwings
 
Automated Testing of Excel Workbooks
Automated Testing of Excel WorkbooksAutomated Testing of Excel Workbooks
Automated Testing of Excel Workbooksxlwings
 
xlwings Presentation (Excel & Python) Swiss FinteCH event
xlwings Presentation (Excel & Python) Swiss FinteCH eventxlwings Presentation (Excel & Python) Swiss FinteCH event
xlwings Presentation (Excel & Python) Swiss FinteCH eventxlwings
 
Python. Finance. Excel. - The Thalesians
Python. Finance. Excel. - The ThalesiansPython. Finance. Excel. - The Thalesians
Python. Finance. Excel. - The Thalesiansxlwings
 
For Python Quants Conference NYC 6th May 2016
For Python Quants Conference NYC 6th May 2016For Python Quants Conference NYC 6th May 2016
For Python Quants Conference NYC 6th May 2016xlwings
 
Open Source in Quant Finance - xlwings
Open Source in Quant Finance - xlwingsOpen Source in Quant Finance - xlwings
Open Source in Quant Finance - xlwingsxlwings
 
Odsc presentation
Odsc presentationOdsc presentation
Odsc presentationxlwings
 
xlwings - For Python Quants Conference (London 2014)
xlwings - For Python Quants Conference (London 2014)xlwings - For Python Quants Conference (London 2014)
xlwings - For Python Quants Conference (London 2014)xlwings
 
xlwings Zurich Python User Group Meetup
xlwings Zurich Python User Group Meetupxlwings Zurich Python User Group Meetup
xlwings Zurich Python User Group Meetupxlwings
 
xlwings - Connecting Python with Excel
xlwings - Connecting Python with Excelxlwings - Connecting Python with Excel
xlwings - Connecting Python with Excelxlwings
 

Mais de xlwings (18)

xlwings for Google Sheets
xlwings for Google Sheetsxlwings for Google Sheets
xlwings for Google Sheets
 
Cross-platform Spreadsheet Automation with Python
Cross-platform Spreadsheet Automation with PythonCross-platform Spreadsheet Automation with Python
Cross-platform Spreadsheet Automation with Python
 
Automate your PDF factsheets with xlwings Reports
Automate your PDF factsheets with xlwings ReportsAutomate your PDF factsheets with xlwings Reports
Automate your PDF factsheets with xlwings Reports
 
Tech3camp Meetup: Python for Excel
Tech3camp Meetup: Python for ExcelTech3camp Meetup: Python for Excel
Tech3camp Meetup: Python for Excel
 
xlwings performance
xlwings performancexlwings performance
xlwings performance
 
Deployment of xlwings-powered spreadsheets (webinar)
Deployment of xlwings-powered spreadsheets (webinar)Deployment of xlwings-powered spreadsheets (webinar)
Deployment of xlwings-powered spreadsheets (webinar)
 
xlwings reports: Reporting with Excel & Python
xlwings reports: Reporting with Excel & Pythonxlwings reports: Reporting with Excel & Python
xlwings reports: Reporting with Excel & Python
 
Python and Excel in Finance (PyData meetup Zurich)
Python and Excel in Finance (PyData meetup Zurich)Python and Excel in Finance (PyData meetup Zurich)
Python and Excel in Finance (PyData meetup Zurich)
 
Automated testing of Excel Workbooks
Automated testing of Excel WorkbooksAutomated testing of Excel Workbooks
Automated testing of Excel Workbooks
 
Automated Testing of Excel Workbooks
Automated Testing of Excel WorkbooksAutomated Testing of Excel Workbooks
Automated Testing of Excel Workbooks
 
xlwings Presentation (Excel & Python) Swiss FinteCH event
xlwings Presentation (Excel & Python) Swiss FinteCH eventxlwings Presentation (Excel & Python) Swiss FinteCH event
xlwings Presentation (Excel & Python) Swiss FinteCH event
 
Python. Finance. Excel. - The Thalesians
Python. Finance. Excel. - The ThalesiansPython. Finance. Excel. - The Thalesians
Python. Finance. Excel. - The Thalesians
 
For Python Quants Conference NYC 6th May 2016
For Python Quants Conference NYC 6th May 2016For Python Quants Conference NYC 6th May 2016
For Python Quants Conference NYC 6th May 2016
 
Open Source in Quant Finance - xlwings
Open Source in Quant Finance - xlwingsOpen Source in Quant Finance - xlwings
Open Source in Quant Finance - xlwings
 
Odsc presentation
Odsc presentationOdsc presentation
Odsc presentation
 
xlwings - For Python Quants Conference (London 2014)
xlwings - For Python Quants Conference (London 2014)xlwings - For Python Quants Conference (London 2014)
xlwings - For Python Quants Conference (London 2014)
 
xlwings Zurich Python User Group Meetup
xlwings Zurich Python User Group Meetupxlwings Zurich Python User Group Meetup
xlwings Zurich Python User Group Meetup
 
xlwings - Connecting Python with Excel
xlwings - Connecting Python with Excelxlwings - Connecting Python with Excel
xlwings - Connecting Python with Excel
 

Último

Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 

Último (20)

Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Git for Excel

  • 1. Git for Excel Felix Zumstein, 23 September 2019 xlwings Meetup London
  • 2. Agenda (1/2) 2 1. But why?? 2. Git refresher 3. So what’s the issue? 4. Four golden rules
  • 3. Agenda (2/2) 3 5. Tools A. Spreadsheet Compare B. xltrail C. Git XL D. Git LFS E. Git clients 6. Merge conflicts A. Single branch workflow: File locking B. Multi branch workflow
  • 5. Innovative Solutions for Microsoft Excel A small team with a big mission 5
  • 6. xlwings 6 • Python for Excel • Scripts, UDFs, Macros, REST API • Windows & Mac (except UDFs) • Free & open-source • New: Professional support plans
  • 7. xltrail 7 • Version control for Excel • Tracks formulas and VBA code
  • 8. • Local Git extension that makes git diff and git merge work with VBA code (only) • Free & open-source Git XL 8
  • 9. xlwings CI 9 Continuous integration for Excel files • Write unit tests for Excel files with xlwings • Run them automatically on the server after pushing changes to your Git repo Example: Gitlab Pipeline
  • 13. A few more reasons 13 • Excel files are code, so treat them as such • Git is battle tested • Collaboration • Audit trail / Spreadsheet governance • Peer review / Approval process • Reduce errors
  • 15. The most important commands 15 • git diff • git add Book1.xlsm • git commit –m ”changed some things” • git push origin master • git pull
  • 16. 3. So what’s the issue?
  • 17. 1) Git doesn’t understand Excel 17
  • 18. 2) GitHub doesn’t understand Excel 18 and GitLab/BitBucket/Azure DevOps are no better
  • 19. 3) Heavy Excel files 19 • Git transfers the entire commit history of the repository during the cloning process. • As an example: Committing a 25 MB workbook once per day during weekdays will lead to 7 GB repo at the end of the year
  • 20. 4) Merge conflicts 20 Compared to text files, merge conflicts with Excel files: • Happen way more often • Are harder to resolve
  • 21. 4. Four golden rules
  • 22. 1) No more versioned file names! 22 Financial Model_v1.xlsb Financial Model.xlsb
  • 23. 2) Make use of commit messages 23
  • 24. 3) Add temp files to .gitignore 24 The .gitignore file prevents certain files to be accidentally added/pushed to Git. To filter out temporary Excel files, add this to your .gitignore file: ~$*.xl* Otherwise you’ll end up sooner or later like this:
  • 25. 4) Release a version via “git tag” 25 Release asset/artefact (not part of Git repo!!) It’s OK to include version stamps in released files (this can be automated via a continuous integration service like the new GitHub actions).
  • 28. Spreadsheet Compare 28 • Compares 2 Excel files • Standalone desktop app (also integrated into the Inquire Excel add-in) • Part of Office Professional Plus and Office 365 ProPlus • You can integrate it with Git: https://www.xltrail.com/blog/git-diff-spreadsheetcompare
  • 32. xltrail 32 • Free trial: https://www.xltrail.com • xltrail syncs with any Git provider • Alternatively, it works via Drag and Drop and manages Git behind the scenes • Allows comparisons across branches, between any two versions
  • 33. Summary across sheets and VBA 33
  • 36. Git XL 36 • https://www.xltrail.com/git-xl • Free & open-source local Git extension • Created & maintained by us • It is able to diff & merge (!) VBA code • Windows only at the moment
  • 37. Git XL: via command line 37
  • 38. Git XL: via Sourcetree 38 Zero configuration required!
  • 39. Git XL: VBA merging 39 • Git XL merges VBA directly in the VBA Editor • Conflicts get highlighted like this:
  • 40. D. Git LFS (Large File Storage)
  • 41. Git LFS intro 41 • https://git-lfs.github.com • Free & open-source local Git extension • Large files are downloaded during “git checkout” rather than during “git clone/git fetch” • On the server side, you need to make sure that it is supported & enabled • git lfs track "*.xl*" • Side note: Since Git 2.18 (June 2018), there’s an “emerging feature” built into Git directly that is called “partial clone”: https://git-scm.com/docs/partial-clone
  • 42. Git LFS in action 42 • All standard Git commands like git pull/push work automatically with LFS behind the scene
  • 44. Git clients 44 Git offers various clients to interact with the remote: • Command Line • Desktop clients (e.g. GitHub Desktop, Sourcetree). For an overview: https://git-scm.com/downloads/guis • File explorer integration: https://tortoisegit.org • Integration with IDE/Text Editor (e.g. VSCode) • Drag and Drop directly on GitHub, GitLab, Azure DevOps (but not Bitbucket)
  • 46. Merge conflicts will bite you! 46 They also happen: • with a single master branch • with a single user For example: • You commit during the day at work. In the evening, you continue at home and forget to pull before you make a new commit.
  • 47. How do merge conflicts happen 47 True merges always cause a merge conflict (with Excel Files) Fast-forward merges never cause a merge conflict
  • 48. A. Single branch workflow: File locking
  • 49. Informal file locking 49 • Similar to shared drives or SharePoint • This prevents the merge conflict altogether • Easy solution: @team I am going to update Model.xlsm Let me know when you’re done, I need it for 5 min. All yours. Thanks, let me pull.
  • 50. Git LFS file locking 50 • Git LFS offers file locking (introduced with v2.0) • Meanwhile, all major providers support it • A caveat of the file locking is that you need to remember two things: –Actually lock the file –Start with a “git pull” before you edit the file • git lfs track "*.xl*" --lockable
  • 51. Git LFS file locking: commands 51 User: fzumstein User: jenny
  • 52. B. Multi branch workflow
  • 53. Merge two branches 53 • We want to merge ”mybranch” into “master” • We end up in a merge conflict:
  • 54. git mergetool to the rescue 54 • A simple way to get the files from both branches next to each other is via “git mergetool” – then cancel with Ctrl-C. • This will add 4 files: master mybranch
  • 55. Resolve the merge conflict 55 • Now compare “contact_list.xlsm” (master) with “contact_list_REMOTE.xlsm” (mybranch) • Spreadsheet Compare or xltrail will be helpful with that • Manually apply the changes you want from mybranch in your master version • Then resolve the merge conflict via “git add” and “git commit”.