Contenu connexe Similaire à Source Control For The Domino Developer (20) Source Control For The Domino Developer1. AD102 : Source Control
For The IBM Lotus® Domino®
Developer
Declan Sciolla-Lynch
@qtzar
© 2012 IBM Corporation
2. About Me
■ Involved in the Lotus community for over 15 years
■
■ Contributor to OpenNTF
─ Blogsphere
─ FileSendr
─ Xtalk
─ @qtzar
■ Lotus Awards Finalist for 2010 & 2011
■
■ 2012 IBM Champion for Collaborative Solutions
■
■ Co-Author of the 'XPages Extension Library' book from IBM Press to be released
April 2012
■
■ Blog : www.qtzar.com
| © 2012 IBM Corporation
3. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
6. Source Control Is Good For
■ Tracking changes in your code
■
■ Backing out of code that isn't working
■
■ Experimenting with changes without risking the integrity of working code
■
■ Being able to review past changes to isolate regression bugs
■
■ Working with a team of developers on the same code base
■
■ When integrated with defect/request tracking can become a self documenting list
of change reasons
| © 2012 IBM Corporation
7. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
8. Two Types Of Source Control
■ Client/Server Based
─ Requires an active network connection to the server
─ Everybody works from the same repository
─ Higher chance of conflicting changes when committing
─ Branching and Merging are more complex
─ Central repository always reflects latest version
─ Developers need to serialize their work
─
■ Distributed
─ Everybody has their own repository locally on their machine
─ Committing, Branching and Merging is all done locally
─ Can Push and Pull changes from any other local or remote repository
─ No central repository means no definitive 'latest version'
– You can create a server based repository that each person pulls/pushes with
– Increases the possibility of merging conflicts
─ Developers can work independent of each other and later merge their work
─
| © 2012 IBM Corporation
9. Two Types Of Source Control
■ Client/Server Based
─ Subversion® ( SVN )
─ CVS
─ IBM Rational® ClearCase®
─ IBM Rational® Team ConcertTM
─ Microsoft® Team Foundation Server
─ Borland® StarTeam®
─
■ Distributed
─ GIT
─ Mercurial
─ Bazaar
─ Darcs
─ BitKeeper
| © 2012 IBM Corporation
10. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
11. Installing In Domino Designer
■ Requires Domino Designer 8.5.3
─
■ Domino Designer is based on EclipseTM 3.4
─ Not all SCM software packages support Eclipse
─ Some don't support Eclipse 3.4
─ You may have to use older versions
─
| © 2012 IBM Corporation
12. Installing In Domino Designer
■ Mercurial
─ Site : http://cbes.javaforge.com/update
─ Use version 1.6.0 MercurialEclipse
─ Use version 1.4.3 Mercurial Binaries
─
■ GIT
─ Use the Domino GIT Project from OpenNTF
─ Created by Nathan T Freeman
| © 2012 IBM Corporation
13. Installing In Domino Designer
■ Subversion
─ Two Update Sites Required
– http://download.eclipse.org/technology/subversive/0.7/update-site/
– http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/
─
| © 2012 IBM Corporation
14. Installing In Domino Designer
■ You will need to be able to install from an update site
■
■ Go to the 'File → Application → Install' menu
■
■ If you don't see the menu option you need to enable it in your Domino Designer
preferences
■
| © 2012 IBM Corporation
15. Installing In Domino Designer
■ Select the option to install new features
■
■
■
■ Then add a new update site
■ Complete the details for your selected SCM package
■ Click 'Finish' to start searching for software to install
| © 2012 IBM Corporation
16. Installing In Domino Designer
■ Depending on the SCM selected you may need to show the older versions
─ MercurialEclipse requires an older version
─ De-select the following option
─
─
─
─ The older version can now be selected
■
■
■
■ Once selected click 'next' and follow the prompts to install the update site
■
■ Restart your designer client when prompted to activate the new plugins
| © 2012 IBM Corporation
17. Installing In Domino Designer
■ You can verify that the plugins are installed
File → Application → Application Management
| © 2012 IBM Corporation
18. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
19. Creating A Source Controlled Application
■ Before you can do any source control operations on an application you need to
create an 'On Disk' version
■
■ This is a special flat-file version of the application that the source control plugins
can read
■
■ It is automatically synchronized with the NSF/NTF as you make changes
■
■ Synchronization can happen in both directions
■
■ Then you point the Source Control to the 'On Disk' version
| © 2012 IBM Corporation
27. Creating A Source Controlled Application
■ A couple of additional notes...
■
─ Always use your own COPY of the database to develop in
– Using a replica or shared DB causes issues
– Your design changes are your own till you pull/merge in other changes
– ( pulling and merging is discussed later )
─
─ If possible run a local development server and work from that
– Really speeds up Domino Designer
–
─ Never work directly against your production environment
– A good admin would never allow this to happen in the first place
─
─
–
| © 2012 IBM Corporation
28. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
29. Committing
■ Before making any changes you should do an initial commit
■
■ Then you should commit changes every time you make a change and have
tested it
■
■ A change can consist of one or more design elements
■
■ You should always enter in a good description of the change
| © 2012 IBM Corporation
33. Committing
■ As you commit changes a revision history of the application is built up
■
■
■
■
■
■
■ You can use the 'History' panel to see this by using the 'Team → Show In
History' menu
■
| © 2012 IBM Corporation
34. Committing
■ The revision history also shows what design elements changed for the selected
changeset
| © 2012 IBM Corporation
35. Committing
■ Double clicking on a design element in the history will show you the differences
■
■
■
■
■
■
■
■
■ Handy when you want to remind yourself of exactly what changed at a later date
| © 2012 IBM Corporation
36. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
37. Reverting
■ Think of it as an Undo for multiple changes
■
■ Two types of reverting
─ Reverting changes before they are committed
─ Reverting to an older changeset
■
■ Select 'Team → Revert' to start the process
| © 2012 IBM Corporation
38. Reverting
■ If there are uncommitted changes they will be listed
| © 2012 IBM Corporation
39. Reverting
■ If you have not made changes since last commit then you need to select an
older revision
| © 2012 IBM Corporation
40. Rollback, Backout And Stripping
■ Rollback
─ Undoes the last action you took
─
■ Backout
─ Remove a single changeset from the middle of the repository
─ May result in a conflict that will need to be resolved
─
■ Stripping
─ Removes all changesets back to the selected changeset
─ Destroys the true history of the repository
─ Stripped changesets cannot be recovered
| © 2012 IBM Corporation
41. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
42. Branching
■ Branching allows you to have multiple versions of an application within the same
code base
■
■ A great way to try out new code without affecting other branches
─ A developer may create an 'experimental' branch to try out a new way of doing something
■
■ Or create a new branch for each new version of the application
─ Some developers could be working on maintaining the V1 branch
─ Some developers could be working on new features for the V2 branch
■
■ Branches can also be further branched as required
| © 2012 IBM Corporation
45. Branching
■ As you commit changes to the branch the history graph will show the new
branch
| © 2012 IBM Corporation
46. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
47. Switching
■ Use the 'Switch To' menu to change between branches
| © 2012 IBM Corporation
48. Switching
■ Select where you want to switch to, it doesn't have to be a branch.
| © 2012 IBM Corporation
49. Switching
■ After switching, the repository will be updated to reflect that revision.
■
■ Then the 'NSF ↔ On Disk Project' sync will kick in and the NSF will be updated
to reflect the On Disk version.
■
■ If there are a lot of differences in the revision you have switched to this process
can take a few moments.
| © 2012 IBM Corporation
50. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
51. Merging
■ Taking the changes made in one branch and applying them to a different branch
─ Bug fixes in the V1 Branch can be merged into the V2 branch
─ The experimental branch can be merged into active development branch
■
■ Merging branches is often easy but edge cases can be tricky
─ A design element deleted in one branch but changed in another branch
─ A design element changed in the same place in both branches
■
■ Not 100% automatic, the developer needs to be involved
─ Merge conflicts need to be resolved before the merge can complete
─ Binary files like images can't be merged so a winner needs to be selected
─ Developer should fully test the resulting code before committing the final merged results
─ Developer can reverse the merge by not committing it to the repository
| © 2012 IBM Corporation
52. Merging
| © 2012 IBM Corporation
53. Merging
| © 2012 IBM Corporation
54. Merging
| © 2012 IBM Corporation
55. Merging
| © 2012 IBM Corporation
56. Merging
| © 2012 IBM Corporation
57. Merging
| © 2012 IBM Corporation
58. Merging
| © 2012 IBM Corporation
59. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
60. Tagging
■ As the repository history gets bigger it gets harder to find a specific revision
■
■ Tagging allows you to assign a name to a specific revision
─ When you make a new release to production tag the revision with the version number
─ Tag your alpha, beta and Release Candidate revisions
─
■ Tags don't take up resources so don't hesitate to use them
■
■ Tags can be reassigned but this is a bad practice
─ Some source control systems allow you to move a tag to a different revision
─ Destroys the true history of the repository
─
| © 2012 IBM Corporation
61. Tagging
| © 2012 IBM Corporation
62. Tagging
| © 2012 IBM Corporation
63. Tagging
| © 2012 IBM Corporation
64. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
65. Cloning
■ Cloning a repository creates a copy of a remote repository on your local machine
─ Normally done when a new developer joins a team
─ The clone remembers where it originally came from so you can later pull and push changes
─
■ Cloning just creates the 'On Disk' version of the application
─ The developer can then create a real NSF/NTF to work in
■
■ The initial clone process can be slow for a large project
■
■ Start the process in the Package Explorer by creating a new project
| © 2012 IBM Corporation
66. Cloning
■ Select your Source Control system from the list of wizards
| © 2012 IBM Corporation
67. Cloning
| © 2012 IBM Corporation
68. Cloning
| © 2012 IBM Corporation
69. Cloning
| © 2012 IBM Corporation
70. Cloning
| © 2012 IBM Corporation
71. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
72. Pulling
■ Pulling updates your repository with changesets from a remote repository
■
■ Only changesets you are missing are transferred
■
■ As a general rule you should always commit your own changes before pulling in
additional changesets
■
■ If your pulling changesets into the same branch your currently working in then
you should do a merging pull
| © 2012 IBM Corporation
73. Pulling
| © 2012 IBM Corporation
74. Pulling
| © 2012 IBM Corporation
75. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
76. Pushing
■ Pushing will send your changesets to a remote repository
■
■ If your repository has new branches you may have to select the 'Force' option
| © 2012 IBM Corporation
77. Pushing
■ You can also elect to only push up to a certain revision, later revisions will not be
pushed to the remote repository
| © 2012 IBM Corporation
78. Agenda
■ What is source control
■ Types Of Source Control Systems
■ Installing Source Control in IBM Lotus® Domino® Designer
■ Using Source Control In Domino Designer
─ Committing
─ Reverting
─ Branching
─ Switching
─ Merging
─ Tagging
─ Cloning
─ Pulling
─ Pushing
■ Integrating Source Control With Bug Tracking
| © 2012 IBM Corporation
79. Integrating A Feature/Defect Tracker
■ Both Open Source and Commerical options available
─ Redmine
─ Trac
─ Jira ( commercial license by Atlassian )
─ Buglizza
─ FogBugz ( commercial license by FogCreek)
■
■ Can read the commit text from your repository and perform actions based on
special codes in the text
■
■ Can be used as a central repository for Distributed Source Control systems
─ Just another repository that everybody can pull from and push to
■
■ The setup of these systems is beyond the scope of this presentation
─ Bitnami has a number of pre-installed kits for easy deployment in your organization
─ http://bitnami.org
─ | © 2012 IBM Corporation
82. Integrating A Feature/Defect Tracker
■ Fixes, Closes
─ Followed by tracker #
─ Automatically closes the defect/feature
─
■ Refs, issueID
─ Followed by Tracker #
─ Add link to that revision in the issue
history
■
■ @0h0m
─ Time tracking in hours and minutes
■
■ Different systems may use their
own codes
| © 2012 IBM Corporation
85. Resources
■ Mercurial For Eclipse
─ http://www.javaforge.com/project/HGE
─
■ SVN For Eclipse
─ http://www.eclipse.org/subversive/
─
■ Egit
─ http://eclipse.org/egit/
─
■ Redmine
─ http://redmine.org
─
■ Bitnami
─ http://bitnami.org
| © 2012 IBM Corporation
86. Session Evaluations
■ Please fill in your session evaluations
■
■
■ Speaker
─ Declan Sciolla-Lynch
─
■ Session Number
─ AD102
─
■ Session Title
─ Source Control For The IBM Lotus Domino Developer
@qtzar
| © 2012 IBM Corporation
88. Legal disclaimer
© IBM Corporation 2012. All Rights Reserved.
The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication,
it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice.
IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have
the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced
in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any
way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other
results.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance
characteristics may vary by customer.
IBM, the IBM logo, Lotus, Lotus Notes, Notes, Domino, Quickr, Sametime, WebSphere, UC2, PartnerWorld and Lotusphere are trademarks of International Business Machines Corporation in the United
States, other countries, or both. Unyte is a trademark of WebDialogs, Inc., in the United States, other countries, or both.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
88 | © 2012 IBM Corporation
Notes de l'éditeur Hi and welcome to Adxxx Source Control For the Domino Developer So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. This screen only shows if you have more then one Source Control plugin installed For SVN you need to know the SVN server information For GIT and Mercurial the repository is always on the local machine and no server connection is needed So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer. So this is what I'm going to be covering today in this session. This is a beginners introduction to both source control software and concepts and on how to use it in Domino Designer.