23
Using Source Control for Domino Development Cameron Gregor | Senior Systems Developer Jord International www.jord.com.au Twitter: @gregorbyte Blog: camerongregor.com

Using source control for domino development - AUSLUG 2016

Embed Size (px)

Citation preview

Using Source Control for Domino Development

Cameron Gregor | Senior Systems Developer Jord Internationalwww.jord.com.au

Twitter: @gregorbyteBlog: camerongregor.com

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Thank you!

For letting me plaguerise Connect 2014 Presentation

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Goals of this Session

• Raise awareness that you can use Source Control

• Encourage you to assess whether it might be appropriate for you

• Point out some possible Setbacks you might encounter

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Agenda

● What is a SCM (Source Control Manager)

● Introduction to Git, Sourcetree and github and other related tools

● How does Domino Source Control Enablement work?

● DEMO! Using Git + Sourcetree (and maybe Github if the wifi is working)

● Questions

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

What is Version Control?

“Version control is a system that records changes to a file or set of files over time so that you can recall specific versions

later”

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Distributed vs Centralised

Distributed Version Control

Alice

Bob

Cam

Dave

Centralised Version Control

Authoritive

Central Repository

Alice

Bob

Cam

Dave

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Distributed vs Centralised

Distributed Version Control Centralised Version Control

• Git

• Mercurial

• Bazaar

• Darcs

• BitKeeper

• Teamstudio CIAO

• CVS

• Subversion

• Microsoft TFS

• Microsoft Visual Source Safe

• IBM Rational ClearCase

• IBM Rational Team Concert

• Borland StarTeam

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Git

• git-scm.com

• Written by LinusTorvalds

• Free!

• Very popular

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Hosting Repositories on a Server

• Lots of Options

– Github

– Bitbucket

– Redmine

– Etc.

• Many of these have other integrated services

– Issue tracking

– Wikis

– Notification systems

– Etc.

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Github

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Graphical User interfaces

• Git is Command line program

• Terminology is strange!

• Use a GUIs to make it simpler

– SourceTree

– GitKraken

– Git-GUI

– GitHub has one

– Eclipse has integrations

– Tower

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

SourceTree

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Git Concept

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Staging - Think in ‘Changes’ and not in ‘Files’• The ‘Stage’ is a list of ‘Changes’ to be made to the repository not a list of ‘files’

• When you ‘add’ something to the stage, you are adding the ‘change’

– E.g. you have deleted a file, but you ‘add’ it to the stage?

– But the ‘change’ is actually “a file is been deleted”

– So you are adding that ‘change’ in repository state

– If you were to ‘discard’ the change, it would mean undelete the file

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Working Directory

Clean(Same as Repository,

No Change)

Modified

Deleted

Untracked(New File)

Ignored

“Staged”

Changes

Committed Versions

Stage Git Repository

CommitAdd

Add

Add

Checkout

Ignore

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Git Inner Workings similar Concept to Domino

Notes/Domino Git

Storage ‘Container’ Database Repository

Records ‘Notes’ ‘Objects’

ID’s UNID Hash

Transfer of Records Send / Recieve Push / Fetch

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

DOMINO SOURCE CONTROL ENABLEMENT

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Source Control Sync

NSFOn-Disk Project

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Domino XML Language

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Binary DXL vs Descriptive DXL

Binary DXL

• Pros

– Higher Fidelity, maybe??

• Cons

– Can’t tell what on earth is different

– Can’t fix merges very easily

Descriptive DXL

• Pros

– Human Readable

– Easier to merge

– Easier to fix Merge Conflicts

• Cons

– Some Classic Elements lose data in the round trip!

• “all day agents” lose there scheduling, Workaround must schedule 00:01 to 23:59

• Something to do with navigators

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Metadata Filtering

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

DEMO TIME

March 10th & 11th, Sydney, AustraliaMeet.Share.Learn.Connect @AusLUG #@Inform2016

Thank• Thank you for your time!

• Thank you to the Inform Sponsors for all the nice food and drink!

• Thank you to the AUSLUG Committee!

http://www.auslug.org/survey2016