Upload
gregorbyte
View
472
Download
0
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
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
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