Release Notes

Public

10.0.16.6479: Jan 27 2022

New

Windows - Command line client: netcore-compiled command line client for Windows!

From now on, the command line client (cm) will be a netcore-based application, replacing the netframework-based command line client.

This also unlocks new cm subcommands that were just available for netcore flavor, like cm api subcommand (see release note below).

Enjoy!

New

Windows - Plastic SCM API: The Plastic SCM API is now embedded in the CLI!

We created a new cm api command that starts the Plastic SCM API. It allows the same arguments as the old plasticapi.exe application (we removed this deprecated executable from the installer).

The previous versions (10.0.16.6419, 10.0.16.6443) already had this cm api command, but just for Linux and macOS. From now on, Windows will have also this command available.

Find more info about it via the command help:

cm api --help

And see more usage details at: https://www.plasticscm.com/documentation/restapi/plastic-scm-version-control-rest-api-guide

New

All platforms - Plastic SCM API: The Checkin endpoint now supports partial workspaces

We extended the Checkin endpoint in the Plastic SCM API to support partial workspaces. You will now be able to perform checkin operations in a partial workspace using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/checkin with a JSON body like this:

{
    "paths": ["path-to-my-file", "path-to-another-file"],
    "comment": "my current changes for my task"
}

New

All platforms - Plastic SCM API: New endpoint to retrieve file info is now available

We created a new endpoint in the Plastic SCM REST API to retrieve information from a file. You will now be able to perform [console]fileinfo[/console] operations in your workspace, using this client-side REST API.

Just launch the cm api command and perform a GET request to endpoint /api/v1/wkspaces/{wkName}/fileinfo/path-to-the-file-to-get-info.

New

All platforms - Plastic SCM API: The Update endpoint now supports partial workspaces

We extended the Update endpoint in the Plastic SCM API to support partial workspaces. You will now be able to perform update operations in a partial workspace using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/update.

New

All platforms - Plastic SCM API: The Switch endpoint now supports partial workspaces

We extended the Switch endpoint in the Plastic SCM API to support partial workspaces. You will now be able to perform switch operations to branch or changeset in a partial workspace using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/switch with a JSON body like this:

{
    "objectType": "branch",
    "object": "main"
}

New

All platforms - Plastic SCM API: New revert endpoint for regular and partial workspaces

We created a new Revert endpoint in the Plastic SCM API. You will now be able to perform revert operations in your workspace, partial or otherwise, using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/revert/{my_item_to_revert} with a JSON body like this:

{
    "changeset": 28
}

New

All platforms - Plastic SCM API: New partial configure endpoint for partial workspaces

A new Partial Configure endpoint has been added to the Plastic SCM API. Using this client-side REST API you will now be able to perform partial configure operations in your partial workspace.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/partialconfigure with a JSON body like this:

{
    "instructions": [
        {
            "path": "/",
            "action": "unload"
        },
        {
            "path": "/",
            "action": "load"
        }
    ]
}

New

All platforms - Plastic SCM API: New merge endpoint for regular workspaces

We created a new Merge endpoint in the Plastic SCM REST API. You will now be able to perform merge operations in your workspace, using this client-side REST API. This operation doesn't support conflict resolution at the moment.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/merge with a JSON body like this:

{
    "sourceSpec": "br:/main/mybranch"
}

New

All platforms - Plastic SCM API: New endpoint to undelete removed elements is now available

We created a new undelete endpoint in the Plastic SCM REST API. You will now be able to perform undelete operations in your workspace, using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/undelete with a JSON body like this:

{
    "revSpec": "rev:itemid:4689#cs:23",
    "path": "my_file"
}

New

All platforms - Plastic SCM API: New create shelve endpoint for regular workspaces

We created a new Create Shelve endpoint in the Plastic SCM API. You will now be able to create a new shelve from changes in your workspace, using this client-side REST API.

Just launch the cm api command and perform a POST request to endpoint /api/v1/wkspaces/{wkName}/shelvesets with a JSON body like this:

{
    "comment": "my amazing shelve comment",
    "paths": ["path-to-my-file", "path-to-another-file"]
}

New

All platforms - Plastic SCM API: New endpoint to apply shelvesets is now available

We created a new Apply Shelve endpoint in the Plastic SCM API. You will now be able to apply a shelve in your workspace, using this client-side REST API.

Just launch the cm api command and perform a PATCH request to endpoint /api/v1/wkspaces/{wkName}/shelvesets/31 to apply shelve 31.

New

All platforms - GitSync: main branch support improvements

Now cm sync autodetects if your Git repository uses "main" or "master" as the main branch.

You can explicitly tell it to use any branch as main branch with --mainbranch:

cm sync REPO@SERVER git https://github.com/GITREPO.git --mainbranch=trunk

New

All platforms - Client: cm update now supports a machine readable format

To obtain an easily parseable output, just use the --machinereadable option:

$ cm update --machinereadable --verbose

<C:/workspace/CreatedDir>
<U:/workspace/UpdatedDir>
<D:/workspace/ModifiedDir>
<C:/workspace/createdfile.txt>
<U:/workspace/updatedfile.txt>
<M:/workspace/modifiedfile.txt>
<D:/workspace/deletedfile.txt>
<SAME_REV:/workspace/untouchedfile.txt> # Only in verbose mode.

Remember you can override the default separators by using formatting options. You might need to double quote them depending on your shell:

$ cm update "--startlineseparator=<" "--endlineseparator=>" "--fieldseparator=:"

New

All platforms - Client: cm partial update now supports a machine readable format

To obtain an easily parseable output, just use the --machinereadable option:

$ cm partial update --machinereadable

STAGE Plastic is updating your workspace. Wait a moment, please...
STAGE Updated 0 bytes of 41.68 MB (0 of 3 files to download / 0 of 3 operations to apply) /file.txt
...

Remember you can override the default separators by using formatting options. You might need to double quote them depending on your shell:

$ cm partial update "--startlineseparator=[" "--endlineseparator=]" "--fieldseparator=:"

[STAGE:Plastic is updating your workspace. Wait a moment, please...]
[STAGE:Updated 0 bytes of 41.68 MB (0 of 3 files to download / 0 of 3 operations to apply):/file.txt]
...

New

All platforms - All clients: The status operation performance has been improved by changing how the stats times are tracked (again :).

This is only noticeable in super-huge workspaces (> 4M of files).

The overall time of the status operation is a 15% faster, but this is only noticeable when the watcher is enabled and after the first status run.

In this case, the 'cm status' went from 7.1s to 6s.

Bug

All platforms - GitSync: The 'cm sync' command (using ssh protocol) returned a wrong exit code (0) when it couldn't connect to the Git server/provider.

The command should return 1 (failed) as exit code when it failed due to any connection issue. This only affected to the ssh protocol.

This could be dangerous when automating stuff because the caller was not aware that something went wrong.

Now it is fixed!

Bug

macOS - Plastic: Fixed onboarding error in Philippines time zone

Previously on Macs if the time zone was set to either Quezon City or Davao City in the Philippines, an error message "Offset must be within plus or minus 14 hours" was shown when creating a workspace during on-boarding.

Bug

All platforms - Server: Fixed how the server accounts for sent traffic.

If you ever open the ChannelCall server log file, you will see complete stats for the methods the clients execute on the server. In these stats, you can find the method name, how many bytes were sent and received, how much time did the writing and reading operations takeā€¦

We were accounting for sent bytes (column 'sentb') wrong when sending chunks over 500KB. This is now fixed.

Bug

All platforms - Cloud Server: Fixed a deadlock condition while querying a branch and renaming another branch in the same repo.

We had a race condition that could lead to a deadlock when the calls 'GetBranchInfoByName' & 'RenameBranch' happened at the same time in the same repo with a very specific race condition. The problem got worse because any requests that needed to access to any branch of that repo got infinitely stuck too.

Bug

Linux - Command line client: update operation failing with very old servers

We fixed an incompatibility when issuing a cm update operation with the current cm command line client with a server older than 6.0.16.1311.

Before this version, the cm update operation coud fail with a "Connection reset by peer" error with such an old server.

Now the issue is fixed.

Alpha new

All platforms - PlasticX: smoother panel closing animation

Improved the close animation for the Branch Explorer Options panel and the query views' Properties panel.

Alpha new

All platforms - PlasticX: Improve diff viewer editing performance.

We heavily improved the diff viewer editing performance. See a demo handling a file of 133.442 lines.

Alpha new

All platforms - PlasticX: Use Cascadia Mono as the default font for the source code viewers in Windows platforms.

If the font Cascadia Mono is installed on the machine, it's used as the default font for the source code viewers (diff, annotate, etc ...). Cascadia is a new, modern, monospaced font family that provides better flexibility for text editor experiences. Cascadia Mono was designed for optimal legibility and accessibility. When the font it's not available, Consolas font is used as a fallback. The following image shows the difference between Consolas and Cascadia fonts.

Alpha bug

All platforms - PlasticX: fixed display of servers with underscores in the name

In the server selector combo box in the Repositories view, underscores in server names were not being displayed. We fixed that.

Alpha bug

All platforms - PlasticX: filter/search views after refresh

Fixed an issue where the filter or search wasn't being taken into account after refreshing the view. Now if you type a filter or search while the view is refreshing, the correct items appear when the refresh finishes.

In addition, we fixed a null reference exception that was thrown when you type a filter in the diff window before it's loaded.

Alpha bug

All platforms - PlasticX: Fixed syntax highlight tokens that were transparent.

Using some syntax highlight languages, such as Razor, Markdown ... displayed transparent tokens, so they were not visible. It only happened in the light theme. Now it's fixed.

Alpha bug

All platforms - PlasticX: Greyed items on pending changes side bar

When adding a file or directory through the context menu 'Add to source control' or 'Add directory tree to source control' it was not possible to edit the selection of files or directories on the 'pending changes' side sheet. A side effect is that if a check-in is performed, then no further changes can be included or excluded from the list of pending changes unless the side sheet is closed and reopened.

This issue is now fixed by allowing files or directories to be included or excluded from the 'pending changes' side sheet.

Alpha bug

All platforms - PlasticX: Fix crash creating directory with same name as existing file

When trying to create a file, if the given name already exists as a directory, plastic closed unexpectedly.

The same happens when trying to create a directory with a name that already exists for a file.

For example, if you have a file named Readme.txt, and you create a directory named Readme.txt, it failed.

We fixed this issue, and now you will see a clear error when trying to perform this operation