Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BLUG 2012 Version control for Notes developers

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

BLUG 2012 Version control for Notes developers

Support for version control systems that came with version 8.5.3 of Domino/Notes is great tool to make development more efficient. This session will show how developers can use it, how it can help in areas such as hotfixing bugs in released products and releasing new versions while developing new or experimental features.

Avatar for Martin Jinoch

Martin Jinoch

March 22, 2012

Other Decks in Programming

Transcript

  1. 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
  2. “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
  3. There must be a better way Version control systems →

    client/server CVS, SVN (Subversion), ... → distributed Git, Bazaar, Mercurial, ... Which one to use? Any. But please, DO use them. (And don't use CVS) http://gitvsmercurial.com
  4. Basic operations commit → 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
  5. Branching model http://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 VCS as well!
  6. 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”
  7. 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
  8. 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
  9. Install EGit to DDE after pressing Finish keep accepting (there

    is one more dialog asking for permission to install plugin) and then restart Designer
  10. Start using Git directly from DDE or use command line

    in Git Bash (we're developers, right?)
  11. 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
  12. 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