Release Notes

Public

Release 7.0.16.2220

May 17 2018
New

Now Plastic can switch a workspace to a shelve using the cm switch command (e.g. 'cm switch sh:2'). The workspace will load the shelve content in read-only mode, the same way a 'switch to label' does. This feature allows you to test and build temporary changes before committing, and it is essential for the devops initiative.

New

CodeBeamer issue tracker extension: Taking advantage of the new External SCM Integration capabilities of CodeBeamer, we added an option to log every checkin using that feature instead of just adding a comment to the affected issues. This increases traceability and provides a tighter integration with your issue tracker. Please make sure you're using a compatible CodeBeamer version before you enable it!

New

Windows GUI: From now on, we will automatically search for code moved between files in the diff window. If there are matches, you'll be notified.

We will only find refactors automatically if there are less than 50 files. Up to that, a button will appear to launch it, just as it did before. Please have in mind that analyzing refactors can be a time/resource consuming operation.

New

Linux GUI: We implemented a context menu for annotate/blame with the following actions:

* Diff branch: Diffs the branch where the selected line was changed.

* Diff changeset: Diffs the changeset where the selected line was last changed.

* Annotate parent revision: Annotates the parent of the current revision.

* Annotate before this changes: Annotates the changeset parent of the one where the selected line was changed. This is good to navigate back changes.

* Add diff selection: Copies a text to the clipboard. Use diff with previous selection to diff with selected text.

* Diff with previous selection: Diffs the previously selected text vs the current selection.

* Annotate options: To configure the fields to show in the left pane (date, author, changeset, branch, etc ...)

Also you can use back and forward buttons to navigate between annotated versions.

Basically we applied to Linux the same changes we released for Mac a few versions ago.

New

Gluon: The error messages when trying to configure an item that is changed in the workspace were improved to give better information to the user.

Examples:

* The file 'voice/player.wav' cannot be loaded/unloaded because it is already changed at 'voice/player.wav'. Please undo the change and retry the operation.

* The directory 'voice' cannot be loaded/unloaded because it contains changes inside 'voice'. Please undo all the changes inside the directory and retry the operation.

* The root item cannot be loaded/unloaded because there are pending changes in the workspace. Please undo all the workspace changes and retry the operation.

New

The client update triggers (before & after) were only executed by the standard update operation. Now, they are also triggered by the 'fast-update' operation and the Gluon update.

New

We enhanced the server-side merge (preview feature) so it can create a shelve with the merge result instead of checking it in. This allows users to review the merge result before it's confirmed. To take advantage of this staged merge you just need to include the '--shelve' argument in the merge command.

Example:

cm merge br:/main/task --to=br:/main --merge --shelve

New

Now the shelve content can be checked using the diff command. Example: cm diff sh:2

New

TeamCity CI Plugin: Improved the format used by the branch filtering based on an external program.

The external program receives a JSON list of branches to filter from the stdin and returns a list with the actual branches that you want TeamCity to process in the stdout, also in JSON format.

The following is an example of a possible input and output if the external program just wants TeamCity to process DTC-14:

[
{
"BranchName":"/main/DTC-15",
"BranchHeadChangeset":"21651",
"BranchComments":"Change comment size",
"BranchCreationDate":"2018-03-19 17:30:00",
"BranchOwner":"John",
"Repository":"devops_tc2",
"Server":"blackmore:7070",
}


{
"BranchName":"/main/DTC-14",
"BranchHeadChangeset":"29726",
"BranchComments":"Fix Jira 14 - null in head",
"BranchCreationDate":"2018-03-20 18:27:28",
"BranchOwner":"Tom",
"Repository":"devops_tc2",
"Server":"blackmore:7070",
}


{
"BranchName":"/main/DTC-16",
"BranchHeadChangeset":"29999",
"BranchComments":"Fix broken unit test boo",
"BranchCreationDate":"2018-03-21 8:19:18",
"BranchOwner":"Bill",
"Repository":"devops_tc2",
"Server":"blackmore:7070",
}

]

And the output:

[
{
"BranchName":"/main/DTC-14",
"BranchHeadChangeset":"29726",
"BranchComments":"Fix Jira 14 - null in head",
"BranchCreationDate":"2018-03-20 18:27:28",
"BranchOwner":"Tom",
"Repository":"devops_tc2",
"Server":"blackmore:7070",
}
]

This way we basically enable users to create the custom filters they need, connect to their issue trackers, project management tools and the like.

We have published Java code implementing a custom filter here.

New

Gluon Mac: Added a "switch to branch" button (next to the switch workspace button) that allows switching the working branch in the current workspace.

Bug

We fixed some item merge-tracking issues in the server-side merge (in-preview), detected in complex merge scenarios. These issues didn't make the server-side merge fail, but the differences of the resulting changeset didn't properly group the merge changes.

Bug

We fixed a corner case merging an edited Xlink that threw a 'merge needed' message incorrectly.

The case happened if you had a common repository, let's say 'engine', xlinked by two repositories, GameA and GameB.

Each repository uses a custom main branch, /main/GameA and /main/GameB.

Then:

* If the "engine" Xlink is edited manually in GameA to include engine changes that were performed in GameB (main/GameB@GameB)

* And then the change is merged to main/GameA@GameA,

* The checkin operation could throw a 'Merge needed' when no merge was needed.

Bug

Jenkins plugin: The parameters of the plastic workspace name were not correctly resolved. It means, it used the exact workspace name string (e.g. 'Jenkins-${JOB_NAME}-${NODE_NAME}') without resolving the parameters JOB_NAME and NODE_NAME (e.g. 'Jenkins-project-MASTER').

Bug

CLI: The 'cm revert' command of an xlinked item can be executed in any path. Before, it failed if executed outside the xlink path with the following error: "Object reference not set to an instance of an object."

Internal and public releases

The Plastic SCM development team works in short iterations delivering frequent releases. Our goal is to have at least one new release every week, with new functionalities, bug fixes and performance tweaks.

Every 'weekly' release is not published to our customers, but we like to detail each of them in the release notes so users can easily follow what we achieved on every short iteration.

The releases marked with the word "public" are the ones we do publish on the website. The ones marked as "internal" are the releases we create in-house to keep the project moving week after week.

Version numbering

Starting in Plastic SCM 4.0 the version numbering schema has been modified:

  • major.minor.compatibility.buildnumber

  • Sample: 8.0.16.3333 means:
    • 8 major release number
    • 0 minor release number
    • 16 compatibility all clients and servers with "16" in the compat number are compatible, even if the build number changes
    • 3333 internal build number