Version_Identifier_D..

Version Identifier Demo
Te-Hsin Shih
Why Do Customers Need Version Identifier
• The main use case for the version identifier is for auditing purpose.
– Customers would like be able to record and compare different version of files that
is contained with in a configuration.
– Currently, customers were using UUID to identifier individual files.
– UUID is long, hard to read and easy to make mistakes.
– The version identifier must be unique (across all repositories for distributed SCM
customers).
– The new version identifier should be human friendly and should provide some
“meanings” for relationships between two versions.
• To see all version id user stories, please run the query “Version
Identifier User Stories” in jazzdev database under version id team
area or visit the web-site:
https://jazz.net/wiki/bin/view/Main/SCMVersionIdentifierUserRequire
ments
Which version scheme shall we use
• Parallel branch version schemes
Drawbacks
–
–
It is difficult to maintain meaningful parallel branch information with discard and other operations in RTC.
The version ID string can get pretty long.
Which version scheme shall we use
• Sequential version schemes
–
–
–
Source: Design Manager
File versions are assigned the next sequential integer, no matter the provenance
Any change to a branch is shown as an increment, even if it is a rollback
Benefits:
–
Extremely simple, no long version IDs
Drawbacks
–
Branching structure and sequence is not apparent from the version ID.
Challenges for distributed SCM
• How to keep version id unique in distributed SCM?
– If a versioned object is replicated to a remote repository and people are making
change in both repositories, how do we keep the version identifier unique?
• In order to solve this problem, we decide to add repository id to the
version identifier.
– Here is how the version id would look like
• 1/_vQM5gXckEeOZP-FlpfvC5w
• New terminology
– Version Number: the sequential number that represents the sequence of the
objects created in a repository
– Version Identifier: the unique string (version number + repo id) for each version
object across all repositories.
• Future work
– We may provide a user friendly name for each repository in the future to make
the full version identifier string more user frientdly.
Demo
Q&A