Release Notes

Public

Release 8.0.16.3476

Aug 13 2019
New

All platforms – Plastic, Gluon, command line: Now update always goes to latest.

Suppose you switched your workspace to a particular changeset, then decided to update. You were stuck on that changeset, by design.

We thought (for a few years already) that if you had switched to a given changeset, why would you want to jump to latest during an update?

But then we realized it was a true UX pain. Why wouldn't you want to switch to latest?

So, we just changed the behavior. Now, when you update, you'll always go to latest in the branch, even if you were working on a given changeset or label before.

New

Windows - Plastic: The new Code Review system now displays questions in the comments list.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

New

All platforms - Plastic: Small refactor and cleanup of the merge code to get ready for the "incoming changes" feature that will hopefully simplify working on single branch and will make all Perforce users rush to Plastic.

New

macOS - Plastic, Gluon: With the performance improvements we made some releases ago, we introduced a change in how the autoexpanded items in the Pending Changes (Plastic) and Checkin (Gluon) views were handled. When you refreshed the view, the only category that got expanded was the one you had an item selected in. This didn't like some users, so we reverted it - autoexpansion saving will work for less than 5000 items (whilst it won't for 5000 items or more, for performance reasons).

New

Windows - Plastic: The new CodeReview system supports outlining.

When a comment was placed in a line that was collapsed due to outlining, it was rendered in a wrong line. Now the comment is hidden when the line is collapsed and visible when the line is not collapsed.

We also improved the comments navigation. When navigating to a comment, we always ensure that the line that contains the comment is always expanded. Otherwise, in some scenarios a comment could be not visible.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

Bug

Windows - SemanticMerge tool: Improved declaration matching mechanism to detect properly the conditional inclusion in the following 'merge' scenario:

Source contributor:

ifndef MY_VAR
include "MyInclude1"
include "MyInclude2"
int my_field1;
int my_field2;
endif

Destination contributor:

ifndef MY_VAR
include "MyInclude1"
endif

Wrong Result:

include "MyInclude1" (Moved)

Result from now on:

include "MyInclude2" (Deleted)
int my_field1; (Deleted)
int my_field2; (Deleted)

Bug

Windows - Visual Studio package: After installing .net 4.8, the Plastic SCM views were not visible in Visual Studio 2019. Now it's fixed.

.NET Framework 4.8 comes with several enhancements to support Per-Monitor V2 DPI Awareness (PMv2) and Mixed-Mode DPI hosting in both Windows Forms and Windows Presentation Foundation (WPF). Unfortunately, tool windows created in Windows Forms were not render correctly when its Per-Monitor Awareness (PMA) setting is enabled. We made changes in the code to address this issue.

Bug

Windows - Plastic: we had a bug in the new code review that resulted in some branch reviews showing an empty GUID for the branch, instead of its actual GUID. Now that's solved!

Bug

Linux - Plastic, Gluon (Cloud Edition): The preferences dialog displayed duplicated ok and cancel buttons. Now it's fixed.

Public

Release 8.0.16.3458

Aug 08 2019
New

Windows - Plastic: The new Code Review system now allows to visualize comments that are located in revisions that are not loaded by the diff window. This happens when, for example, you applied revision comments, and created new revisions for a file in the branch. When this happens, we display a panel with three actions:

* Diff revision with comments: This action allows to visualize the revision with the comment on the right diff pane, and the base revision on the left diff pane.

* Last in branch: This action displays the last revision in branch on the right diff pane, and the base revision on the left diff pane (the same as when you select a file in the top tree).

* Diff with head: This action the revision with the comment revision on the left diff pane, and the last revision in branch on the right diff pane.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

New

Windows - Plastic: The new Code Review system now allows to visualize change `sts in the comments list.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

New

Windows - Plastic: The new Code Review system now allows to choose the comment type when adding a new comment. You can 'request a change', 'ask a question' or simple write a regular comment.

Also we added the possibility of discarding requested changes.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

New

Server - DevOps: Our built-in mergebot that implements trunk-based-development cycle (a.k.a. trunk-bot) is now able to use embedded Plastic code reviews to drive the CI/CD lifecycle.

Enable the following "Process reviewed branches only" toggle button in trunk-bot configuration to activate this feature:

The feature works as follows:

* When a code review of a tracked branch (those that starts with the configured branch prefix in trunk-bot config) is created, or its status changes, the task branch is queued in trunk-bot.

* Then, trunk-bot will eventually dequeue this task branch. But before continue its processing in the CI cycle, trunk-bot will check whether there is at least an "Approved" code review for this branch. Otherwise, the branch processing is skipped but enqueued.

* If there are more than a code review linked to this task branch, all of them need to be approved before processing the task branch.

* If all the code reviews are approved, the task branch continues its processing by the trunk-bot:

* a)If the merge fails (manual conflicts detected), or the branch build in the configured CI system fails, the status of the linked code reviews of the branch will be set to "Pending".

* b)If the merge succeeds and the branch build succeeds too, the task branch is merged, and the "status" attribute of the branch is set to "merged" (these fields must be filled in the trunk-bot configuration).

You can use this "Process reviewed branches only" alone to drive the CI/CD cycle, or use the legacy "branch status" based lifecycle to drive the process, or combine them: before trying to merge a task branch into trunk, both the status of the branch must be set to "resolved" value, and all the code reviews must be set to "Approved".

Bug

macOS, Linux - Plastic: Merge: corrected the merge behavior for scenarios involving writable xlink conflicts.

The merge is one of the strongest and key features about Plastic SCM so we can't afford failures on it.

Bug

Windows - SemanticMerge tool: A 'Value cannot be null. Parameter name: source' exception was thrown when the destination file of the merge was empty. Fixed.

Bug

All platforms - Plastic: The Merge-to was wrongly showing the merge finished status if a file was individually solved under a writable xlink conflict but there were more conflicts pending to solve. Now it's fixed.

Bug

All platforms - Command line client: we fixed a bug which meant that the help wasn't displayed for some "cm partial" subcommands. For example, "cm partial update --help" now works as expected.

Bug

Linux - Plastic, Gluon: Sometimes, when closing the diff window, an unexpected "Index out of range" error appeared. Now it's fixed.

Bug

Windows, Gluon: "Checkin Changes" view: Sorting files by "Date modified" was not working as expected. Now it's fixed.

We broke this by mistake when we reorganized the columns a few releases ago.

Bug

Windows - SemanticMerge tool: A 'Value cannot be null. Parameter name: source' exception was thrown when the destination file of the merge was empty. Fixed.

Public

Release 8.0.16.3442

Jul 30 2019
New

Windows - Plastic: The new Code Review system now allows to start conversations, using the "Reply" functionality.

Remember, right now, you need to start with plastic --codereview to enjoy the new feature.

You can check how it looks here, dealing with a conversation with several threads.

New

macOS - Plastic: Improved the progress text shown in the workspace window toolbar to correctly use the available space and adapt it when the window is resized. We saw that sometimes the progress text was cropped even when there was plenty of space available to display it.

Here goes the "before and after":

New

All platforms - Server: New Merge Rules system.

We added a Merge Rules system (mergerules.conf). Use it to make branch reviews mandatory prior to merge.

This is a good equivalent to the popular "pull request restrictions" that force to review branches before merge.

The Merge Rules define what branches must be reviewed when merged to certain branches.

If a merge can't happen, you'll receive an error like this:

Cannot perform the merge. Review the branch '/main/QUAK-00' to merge it to '/main'.

Here is an example of a very simple mergerules.conf forcing all branches QUAK-* to be reviewed prior to be merged to main.

>cat mergerules.conf
[{
"enabled": true,
"repositories": "*",

"rule": "only_allow_merges_if_reviewed",
"to":
{
"branchNames": ["main"]
},
"from":
{
"branchNames": ["QUAK-*"],
}
}]

The new mergerules.conf is a JSON file that must be placed in the server directory (where plasticd.exe is located).

You will find a mergerules.conf file with some examples in your server directory, inside config_samples, and alongside the binaries for clean setups (on Windows using the installer, and GNU/Linux using the official packages) so you can directly modify it. You don't need to restart the server for changes to take effect!

Each rule defines source and destination branch matching as well. Branch matching is done using name patterns (with '*' to represent any substring), attribute matching, and you can specify multiple rules of each kind, too.

Finally, when you're about to merge a branch, the server will check whether there are any rules that apply to that source/destination pair.

We plan to support different kinds of mergerules in the future, but right now there is only one: 'only_allow_merges_if_reviewed'. If both source and destination branches match a rule of this kind, the server will only to merge source branches that have an Approved review.

It is also possible to filter branches by attributes, instead of names. Check the example mergerules.conf to find all the filtering options.

New

Server, DevOps: Added notifications of "code review changed" events through the web socket channel the DevOps mergebots use. This means the mergebots will now be able to implement filters to avoid merging branches that don't have an approved code review.

We will enable this filter for our built-in "trunk-bot" really soon. Stay tuned!

To enable this notification on custom mergebots you may have written, your mergebot will have to subscribe to these events by sending a message to the Plastic Server websocket endpoint (e.g. ws://<SERVER_IP_HOSTNAME>:7111/plug).

The subscription message looks like the following json:

{
"action": "register",
"type": "trigger",
"eventlist": [
"codeReviewChanged"
]
}

(The "eventlist" array could also contain "newChangesets" and "branchAttributeChanged" trigger types to subscribe to these events too).

Once the subscription is completed, your mergebot will be able to receive "code review changed" messages when a code review is created, when the code review status is changes, when the code review title is changed, and when a code review is deleted.

The message sent this way through the web socket looks like the following json:

{
"type": "trigger",
"event": "codeReviewChanged",
"properties": {
"branchComment": "HDP-122 - implement stats tool",
"branchFullName": "/main/HDP-122",
"branchId": "682",
"branchOwner": "JesusManuel",
"codeReviewId": "684",
"codeReviewStatus": "Approved",
"codeReviewTitle": "Review HDP-122",
"repository": "tooling"
}
}

REMARK: The code review notifications are sent only if the code review is bound to a branch.

New

All platforms - Command line client: we have added an "--ignored" option to the "cm rm private" command.

By default, ignored files are skipped during the delete. The "--ignored" option allows you to include ignored files.

Note: this is a change from the previous default behaviour. Previously, ignored files were included by default.

Bug

macOS - Plastic: Sometimes, when switching workspaces, users got the following error:

"cannot access a disposed object".

Now it's fixed!

Bug

macOS, Linux - Plastic: Disable the 'Diff changeset' context menu in annotates for lines changed locally.

We were investigating a bug reported by a customer. They occasionally see an evil "cannot process your request" exception. We weren't able to reproduce their case, but the closest was this thing: same error (and similar stack dumped) if you have local changes and "diff changeset" over the changed lines in an annotate.

Bug

All platforms - Plastic, Gluon: We improved the behavior when you have local changes and the changeset loaded in your workspace is deleted by a different user.

Before these improvements, this meant that you got stuck: at that point you were unable to checkin, shelve or undo your local changes.

We modified the client behavior to enable you to undo your local changes, letting you out of that loophole. Shelving or checking them in will still be unavailable, as they wouldn't have a parent changeset.

The 'undo' behavior will be slightly different depending on the client you use:

Gluon will always allow you to undo the local changes. If the original contents aren't available anymore, the head contents of the current branch will be used instead.

Plastic, on the other hand, will notify you about the inconsistency and then ask you for confirmation to undo all your local changes and update the current workspace.

Bug

Server: The sync view was failing with the error 'Error: There has been an unexpected error "Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.". For more information check the server log.' on the following case:

* We have the servers A and the server B

* On both servers we have the repository myrep

* On myrep@B, we create the branch main/task and perform 2 checkins on it (changeset 4 & 5).

* We create a sync view with source myrep@A and destination myrep@B

* We pull all changes -> We pull main/task

* On myrep@B, we delete the changeset 5.

* We try to sync, and the sync view fails with the error ''Error: There has been an unexpected error "Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.". For more information check the server log.'

Now it's fixed.

Bug

macOS - Plastic: Right-clicking in the Workspace Explorer view before the view is loaded triggered an unexpected error.

Now it's fixed!

Bug

Windows - Visual Studio integration package: Include missing JAR files necessary to show the semantic history of java and c++ files.

Public

Release 8.0.16.3417

Jul 19 2019
New

Server: We added on the Jet backend a mechanism to verify that all files are on the right version. This mechanism will be needed by the future upgrade on the Jet backend.

New

Windows - Plastic: More improvements in the prototype of the upcoming Code Review system.

Now you can change the assignee directly in the code review window.

As we already announced, it is not yet functional but you can give it a try if you start your Plastic this way:

plastic --codereview

Let's see it in action:

More improvements really soon :-)

New

All platforms - Command line client: as requested by users, we now append a newline character to the end of xml output, so the output plays more nicely when fed into xml parsers.

Bonus: we fixed the xml output of the "ls" command. It used to incorrectly append the standard output to the xml.

New

Windows - Plastic: When you create a branch with a name that already exists, the error message will be shown in the dialog and the dialog won't be closed. Before, the error was displayed in an additional popup window (more clicks for users) and the dialog was closed.

New

Windows - Plastic: Evolved prototype of the upcoming Code Review system. Now, the prototype manages real data. You can give it a try if you start your Plastic this way:

plastic --codereview

You can create new reviews, and edit existing ones. Feel free to share your feedback.

Bug

Windows - Gluon, Plastic: Under some circumstances, the label that shows the metadata info is cut in the diff and changeset explorer windows.

Bug

All platforms - Command line client: suppose you move a file, and then you move another file to where that first file used to be, and then you "cm undo" those two moves. Of course, the first move can only be undone after the second move, and, of course, Plastic takes that kind of dependency resolution in its stride.

However, the cli, being modest, would only tell you that it successfully undid the second move. We've now fixed the output so it tells you about the first move too.

Bug

All platforms - Plastic, Command line client: improved handling of occupied paths.

You may have noticed that when Plastic needs to write a controlled file to disk, but the path is occupied by another file, it moves the existing file out of the way (to "file.private.0") so that you don't lose any data. The same for directories.

There were a couple of cases we weren't handling so gracefully, and would produce an error message. We have fixed the handling for these cases. Specifically, you can now undo the move or remove of a file when the path is occupied by a directory, and undo the move or remove of a directory when the path is occupied by a file, and your local data is preserved in all cases.

Bug

Windows - Server: Udt wasn't working to do replicas between servers unless you forced Remoting protocol using plasticpipeprotocol.conf. It is now fixed.

Public

Release 8.0.16.3400

Jul 16 2019
New

All platforms - Plastic, Gluon: Pending Changes will now fly when you have files with timestamp but not content changes.

Many Unreal and Unity users face this issue: their IDEs modify timestamps of files "randomly" but not content. Plastic finds them as changed.

Then they check this preference in Plastic: "Check the content to determine files as changed, not only timestamp" and the fake changes disappear but... at a cost. Pending Changes starts getting slower and slower because it has to calculate the hash of each "fake change".

Now this is fixed because Pending Changes (on GUI, CLI, plugins, everywhere) will update the timestamp of its metadata to avoid having to rehash next time.

New

From now on, fresh installs of Plastic SCM Team or Enterprise editions will be packed with a 5 days free trial license for 5 users (before this version, the free trial license only allowed 1 user).

New

Windows, Plastic: More improvements in the prototype of the upcoming Code Review system.

We removed the initial dialog to create the code review. Now it will be created directly and users will be able to edit anything (title for now) in the code review window.

As we already announced, it is not yet functional but you can give it a try if you start your Plastic this way:

plastic --codereview

And then go to create, edit and delete a Code Review.

More improvements really soon :-)

New

All platforms: We improved the error message you get when you try to undo some locally moved files but their original directory cannot be found. This usually happens because you aren't allowing plastic to detect locally deleted directories, so the client can't restore them. The error message now suggests you to enable deleted item detection.

For instance, let's say you transform this workspace tree:

/a
`- /b (1)
|- fileA.txt (2)
`- /c
`- fileC.txt (3)

Into this:

/a
`- /x (1) (LM from /a/b/c)
|- fileB.txt (2) (LM from /a/x/fileA.txt)
|- fileA.txt (3) (LM from /a/x/c/fileC.txt)
`- /c (private)

/a/b is detected as locally deleted in this scenario.

At that point, if you run 'cm undo --moved -r' the client can't restore the moved files because directory /a/b can't be found (it's detected as locally deleted). You'd need to include the --deleted argument.

In the GUI you'd normally get a dependencies warning before the undo; however, if you don't check the "Show deleted files and directories" option in the "What to show" tab of the Pending Changes view, the operation can't properly calculate the dependencies and it will fail.

New

All platforms - Plastic, Gluon: When diffing from the history view, when the loaded revision was the right revision, the diff was not editable. Now we detect that case, and make it editable.

New

All platforms - Command line client: We improved the error message generated when 'cm undo' can't undo a change because there is a dependency. It now advises you to include the depended upon item in the set of paths passed to the command.

Bug

All platforms - Plastic, Command line client: merging a change to a binary file (when only the source has changed) used to fail if file in the destination branch was read-only. You used to get an error about "Access to the path" being denied. We fixed this, and the merge now completes successfully.

Bug

macOS, Linux - Plastic: The checkin operation did nothing (and displayed no feedback) if you performed a merge that created no changed files. That can happen e.g. if the only merge conflict is a readonly-xlink modified in both contributors (a directory conflict) and you select "Keep destination" to solve it.

Bug

Linux, macOS - Plastic: The external tools failed to launch for items that were not in the workspace (for example, opening an external tool on a file when browsing the repository in other cset different than the current one). That's now fixed!

Bug

All platforms - Gluon: The update was not able to download new items in a very specific scenario with delete, add and move operation related among them. The error shown in the report was the following "The new item cannot be loaded in the workspace. Probably, the path is already used. Please unload the item (from the configuration view) and retry the operation." The specific scenario was the following:

Having this repository structure:

/src
/src/code
/src/code/foo.c
/bar.c

One user loads in the workspace (wk1) the following content (the whole repo except for /bar.c).

/src
/src/code
/src/code/foo.c

Another user that loads the whole repo, make the following changes and checkin them:

add /src/code/qux.c
add /source
move /src/code /source/code
rm /src

When the user (wk1) run an update, he got the "The new item cannot be loaded..." error. Now, the /src/code/qux.c is correctly download.

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