version control for notes developers · “classic” way no easy way to get back to previous state...
TRANSCRIPT
Version Control for Notes developers
Martin Jinoch
Agenda
What is version control and why you should use it, ...
Development work-flow with Git and git-flow
How to use Git in Designer
Other tools you can integrate into your development process
“Classic” way ;-)
“Classic” way
no easy way to get back to previous state unless we are keeping
→ backup versions of design elements→ or backup copies of the whole template
we don't know what the last change was
→ we should maintain a separate change-log
There must be a better way
Version control systems
→ client/serverCVS, SVN (Subversion), ...
→ distributedGit, Bazaar, Mercurial, ...
Which one to use? Any. But please, DO use them. (And don't use CVS)
http://gitvsmercurial.com
Basic operationscommit
→ save current state to VCS
diff→ show the differences between commits (versions)
revert→ undo (any) commit.
branch→ make a new “copy” of the whole app
merge→ apply changes from one branch to another branch
Branching modelhttp://nvie.com/posts/a-successful-git-branching-model/
git-flow
by Vincent Driesen (http://nvie.com)
covers not only development process- like creating new features
but also release management and support- promoting new features to production app, fixing bugs in production app and in development version at once
could be used with other VCSas well!
pretty simple, huh!?
let's see a demo
git-flow to Notes mapping
master = NTF file on production server
develop = NTF file on test server
feature/* = NTF file on local machine or local server
team settings: rights to push to master and/or develop should be restricted to role (“gatekeeper”). In general individual developers work on feature branches and send pull requests to “gatekeeper”
Support for Version control in Designer
in 8.5.3 it is built-in to Designer
connects NTF with so called on-disk project
syncs changes to on-disk project and back
→ version control systems need real files to act on not virtual file system
→ and some design elements have to be converted to DXL
Configuring DDE for version control
Designer runs on top of Eclipse 3.4 (2008)
install VCS plugin from OpenNTF.org
→ EGit for Domino Designer (by Nathan T. Freeman)based on current EGit for Eclipse 3.6 and higher
→ Subversion UpdateSite for Domino Designer
Mercurial - http://cbes.javaforge.com/update and choose 1.6.0 version of MercurialEclipse plugin and 1.4.3 version of Mercurial Binaries
Install EGit to DDE
Install EGit to DDE
Install EGit to DDE
and point it to the downloaded zip file
Install EGit to DDE
just check and press Next
Install EGit to DDE
I guess even as non-lawyers we can accept this
Install EGit to DDE
after pressing Finish keep accepting (there is one more dialog asking for permission to install plugin) and then restart Designer
Enable Source Control for NSF
Enable Source Control for NSF
Enable Source Control for NSF
Set up Git for the on-disk project
Set up Git for the on-disk project
Start using Git directly from DDE
or use command line in Git Bash(we're developers, right?)
Redmine
● project management tool, bug tracker, ...● connects to repository to link commits to
issues (commit message “fixes #1” automatically closes issue with id 1) and for time tracking (@1h30m)
● will probably be used for projects on OpenNTF.org as well as Git and Mercurial repositories
Questions?
● more about Githttp://think-like-a-git.netgreat book http://progit.org
Resources● Subversion - http://subversion.apache.org/● Git – http://git-scm.com/, Git for Windows -
http://code.google.com/p/msysgit/ and follow link “Git for Windows”● Mercurial – http://mercurial.selenic.com/● Bazaar – http://bazaar.canonical.com/● EGit for Domino Designer –
http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=EGit%20for%20IBM%20Domino%20Designer
● Subversion UpdateSite for Domino Designer – http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Subversion%20UpdateSite%20for%20Domino%20Designer
● branching model -http://nvie.com/posts/a-successful-git-branching-model/
● git-flow – https://github.com/nvie/gitflow● Redmine – http://www.redmine.org
Thank you!