1 Copyright © Serena Software 2015 Federal User Group Track 1 Overview and Demonstration of New Features in Dimensions CM 14.2 Felix Dowuona April 6th, 2016
Jan 19, 2017
1Copyright © Serena Software 2015
Federal User Group Track 1
Overview and Demonstration of New Features in
Dimensions CM 14.2
Felix Dowuona
April 6th, 2016
2
Agenda
Developer Usability
Stream Merging
Changesets and Stream Versions
Dimensions CM Bridge
3
15 minute break at 10:30am
Schedule
4
Agenda
Developer Usability
5
• Personal Streams
• DEMO
• Shelving
• DEMO
• Stream organization
• - Hiding streams
• - Favorites
• - Recent streams
• DEMO
Developer Usability
6
• Personal streams
• Sandbox to isolate work from others
• Can be merged into a stream when ready
Developer Usability
7
• Personal streams are private development branches in a repository that are only visible to the originator.
Personal streams enable you to:
• Isolate work from an existing public stream.
• Work in a dedicated personal stream until your changes are ready to be merged back into a public
stream.
• Create a new stream based on a work area.
Personal Streams
8
9
• Shelving
• Enables developer to quickly switch context
• Shelve an in progress change to be picked up at a later date
Developer Usability
10
• Shelving enables you to store local changes in a personal stream and optionally remove the changes
from a work area.
• Shelve changes and reset a work area
• You can remove changes from a work area that you do not want to deliver to the associated stream. For
example, the changes are not complete but you need to interrupt your current work, set aside the
changes, and switch to a different task using the same work area. After the shelving operation is
complete you reset the work area so that it is identical to the latest repository content.
• Backup changes
• When you are sharing a stream with other developers but are not ready to deliver your local changes,
you can backup your work by committing it to a personal stream. This creates a snapshot of the work
area at that point in time. When creating backups you keep the local changes and do not reset the work
area. When you are ready to resume work on the shelved changes you can restore them by merging the
personal stream back into the work area.
Shelving
11
12
• Hiding streams• Hide streams that are no longer in use, reduces clutter
• Favorites & recent streams• Organize the streams into your favorites
• Makes finding/opening/picking streams easier
Developer Usability…
13
• Example
• HIDE /STREAM=QLARIUS:MAINLINE_JAVA
• Hides a stream with the specification QLARIUS:MAINLINE_JAVA.
• HIDE /PROJECT=QLARIUS:MAINLINE_JAVA
• Hides a project with the specification QLARIUS:MAINLINE_JAVA.
HIDE - Hide Unused Streams and Projects
14
Examples
• SF /STREAM=QLARIUS:MAINLINE_JAVA
Adds the stream QLARIUS:MAINLINE_JAVA to your favorites
• SF /STREAM=QLARIUS:MAINLINE_JAVA /OFF
Removes the stream QLARIUS:MAINLINE_JAVA from your favorites
• SF /USER_WORKSETLIST=C:\my_stream_list.txt
Adds all streams or projects in the specified file to your favorites.
• SF /USER_WORKSETLIST=C:\my_stream_list.txt /OFF
Removes all streams or projects in the specified file from your favorites
SF - Set Favorites
15
16
Agenda
Stream Merging
17
Stream Merging
• Cherry pick merge
• 3-way Merge Overview
• Key Benefits
• Behavior changes & dropped functionality
• Limitations, hints & troubleshooting
1
18
• Cherrypicking Requests
• When you merge changes between streams you can select changes that are related to specific requests.
This is commonly known as cherrypicking or backporting. For example, you have delivered multiple sets
of changes to a stream but only want to merge one specific set of changes into a different stream.
Cherrypick Merge
19
20
Stream0
Dim_CM
Why 3-way merge?
2
StreamA
Dim_CM
StreamB
Dimensions
21
SERENA 21
3-way Merge Intro
#0
#0
#1
#1
#2 #3
#2
Changeset #2
changes only
Branch point
Merge point
22
SERENA 22
2-way Merge
23
Key benefits
SEREN2
• 3-way
• Stream versioning and enhanced pedigree
• Changesets
• Branch & merge points
• Folder refactoring
Great reliability and performance
• Dedicated Merge operation
• Consistent across clients new graphical Merge Wizard
• Streamlined tool-driven merge process
• Araxis Merge tool
• Reduced user input required
User experience
• Merge from a Stream or its older version
• Review results interactively or make it as silent as possible
Flexibility
24
25
• 15 min BREAK
26
Agenda
Changesets and Stream Versions
27
Changesets
• Overview
• Benefits
• Stream & Baseline Creation
• Branch from Stream version
• Operations and Commands
• Lock-free Deliver
• Behavior Changes
• Dropped Functionality
• Limitations
• Troubleshooting2
28
Overview – Changesets and Versions
• Grouping the list of Delivered/Uploaded changes in one operation
• Created automatically
• Immutable – can never change
• No lifecycles or other configuration
• Introduce a stream/project version
• Linked (1:1) to the changeset which introduces the version
• Represents the whole stream/project state (content)
after a changeset is applied
• Changeset changes are linked to Request(s)
• 1…N Changeset(s) 0…N Request(s)
2
29
Overview – Changeset Types
• Creation – always #0 and represent a stream or a project created:
• Empty
• Based on another stream or project
• Or even sometimes its earlier version
• Baseline
• Deliver – any generic changes delivered, uploaded or checked in
• Merge – changes merged from other streams
• Not applicable to projects so far
• Promotion – CLI visibility only (LOG command)
2
30
Overview – Change Types
• Addition
• Modification
• Move (also stands for renames)
• Deletion
• Import
• Promotion*
• Demotion*
* CLI visibility only (LOG command)
3
31
Benefits – Changesets & Versions
Changesets
• Great for identifying and merging differences across streams
– Packaging changes together
– Immutable (reliable)
• Traceability
– Grouping
– One owner, comment, timestamp
• Well understood by users migrating from other systems
• May be used instead of Requests
– More operations in the future
Stream Versions
• Cheap replacement of tip baselines
– Performance
– Space
• Reference at any time
– Create new streams or projects
based on stream version
– Get or Update from Version
– Intensive usage in Merge
• Track stream status/health
– Peer review, build, unit tests,…
• More operations in the future
31
32
Stream & Baseline Creation
3
• Copy Reference
• Values IDs
• Minutes Seconds
33
Operations and commands
• Get a stream version or Update from a stream version (N)
• UPDATE /STREAM=ID;N
• Merge from a stream version (N)
• MERGE /STREAM=ID;N
• Create a stream or a project basing on a stream or a project version
• CS /STREAM=ID;N
• DWS /WORKSET=ID;N
• Changesets dialog
• LOG command
• Changes:
• Compare
• History
• Pedigree
• Open/Browse
3
34
35
Lock-free Deliver
• No stream or folder locking for the whole Deliver operation
(Unlike 2009R2 and 12.2)
• Brisk changeset commit lock
• Changesets in flight conflict check
• Both streams (DELIVER) and projects (UPLOAD)
3
36
Behavior changes
• A stream based on another contains all revisions now
• UPLOAD to projects is atomic now (1 changeset)
• Including Deliver/Upload/Synchronize to Project in GUIs• Still many changesets by pre-14 clients
• AIWS with /WS_FILENAME=new_file_name does rename
3
37
Dropped functionality
• Text metadata (.metadata) used by pre-12.2.1 clients
• Automatically converted on the 1st Update/Get
• UPDATE /NOEXECUTE /VERBOSE mode
• /SCRIPTFILE mode for both DELIVER and UPDATE
• Dropped DM.CFG symbols:
• DM_CONCURRENT_DELIVER_LOCK_MODE (lock-free deliver now)
• DM_USE_OLD_CRB
3
38
Limitations
• Project item operations for multiple selection generate a command per each
selected item and as many changesets
• Upgrade changesets – just for history visualization
• Certain operations may differ from client to client, say:
• Desktop: Open item or request in new window
• Explorer: Browse item or request
• Baseline cannot be created from a stream version, but
• You may create a stream or a project and then a baseline
• Not available in DM utility and ISPF client
• Less functionality for Project Changesets (comparing to Streams)
• No Get, Update and Merge operations from project version
3
39
Troubleshooting
• Performance
• Relies on DB more than before
• Hungrier for memory
• Update Oracle statistics (compute)
• Scalability: pagination, navigation & scrolling
• Changeset filters
• LOG command as alternative to GUI
• Seeing hidden in GUI changesets
• Even for baselines (revising changesets)
• Changeset (Changes) Item Request links & relationships
3
40
Agenda
Dimensions CM Bridge
41
• What is CM Bridge
• Allows clients and IDE’s that integrate with SVN to connect directly to Dimensions CM
• Provides easy way to migrate SVN teams to Dimensions while keeping them in familiar development environments.
• TortoiseSVN Repository Browser
• SVN command line
• Xcode
• IntelliJIDEA
• Xamarin
• etc
CM Bridge and Git SVN
42
• Java-based web application
• CMBridge.WAR
• Deployed to Tomcat by default Dimensions CM installation
• Web interface accessible at http://<localhost>:8080/cmbridge/
• Implements Subversion HTTP v1 protocol
• Converts SVN HTTP requests into Dimensions CM
• No svnserveprotocol support (svn://)
• HTTPS support
• Authentication
• HTTP Basic authentication
• Credentials caching depends on the client
How does it work
43
Change management via CM Bridge
[QLARIUS_CR_21]
•In square brackets
•Any place in the comment
44
• Working with top-level folders as streams or projects
• Repository URL with Product and Stream ID may be used
• Merge across branches (streams)
• Create a branch (child stream) using “svncopy”
• No “copy” support inside a stream or project
• SVN tagging
• Specific SVN commands
• merge, mergeinfo
• switch
• Admin’s commands
• Item header substitution
• Directory items
Limitations
45
• git svn is a simple conduit for changesets between Subversion and Git. It provides a bidirectional flow of changes
between a Subversion and a Git repository
• User can work with git and Dimensions CM using git svn through the CMBridge
• To start working with git and Dimensions CM we need to create stream using any Dimensions client or svn:
svn mkdir http://stl-ta-vcw8-03:8080/cmbridge/PROD1/STREAM1 -m "stream creation“
• Then we need to clone Dimensions stream to local git repository:
git svn clone http://stl-ta-vcw8-03:8080/cmbridge/PROD1/STREAM1 F:/wa1
After this your local repository refers HEAD of remote branch origin/master
• Now we can add files to work area and commit them to local git repository:
git status
git add *
git commit -m "init commit“
Push changes from local git repository to Dimensions repository:
git svn dcommit
Git svn create stream and clone
46
• git recommends to create local branch for each code changes:
git branch somefix1
git branch
• Switch to somefix1 branch:
git checkout somefix1
• Merge changes from local git branch to master:
git merge somefix1
Work with local branch
47
Update from Dimensions repository
git recommends to use rebase when work with git svn to make history linear
48
Update from Dimensions repository:
git svn rebase
Update from Dimensions repository
49
To see stream history user log sub commnd:
git svn log -v
Log
50
• Remote branches
• Few remote repositories
• Merge
Limitations
51
Thank you
www.serena.com