11.0.16.7806: Mar 06 2023
All platforms: Plastic SCM is now Unity Version Control
Plastic SCM is now rebranded as Unity Version Control.
We have also updated our end-user license agreement (EULA). You will find it in the installer.
All platforms - SemanticMerge: UI improvements.
Added a UI refresh for the semantic merge tool. These are the main points:
- Use camel case for buttons and labels.
- Moved the "Process al merges" button to the conflicts header.
- Improve each conflict resolution text readability.
- Use buttons instead links for match/unmatch actions.
- Fixed the encoding string in the contributor headers.
- Unify some margins and paddings.
All platforms - Plastic: Undo checkouts options
Added a new option in the pending changes view that lets you undo the checked-out files while keeping the local changes. This is the same as using the --keepchanges option when executing the cm undo command.
We also reorganized the buttons in the pending changes view.
All platforms - Plastic: Removed the license expires soon reminder for non-trial licenses.
We removed the license expires soon reminder for all non-trial license users to avoid disturbing users who have monthly subscriptions.
The license notification will still appear for those users when their license fully expires.
This notification panel doesn’t appear anymore in the app:
All Platforms - SemanticMerge: Fixed wrong content for resolved conflicts.
When resolving a manual conflict, if the merge resolution text was exactly the same as the base contributor text, it caused the semantic merge tool to wrongly choose the destination text for the result. Now it's fixed.
All platforms - Plastic: Fixed null exception using Find in files in Plastic Link.
When you use Find in files in a Diff or Code Review Plastic Link, a null exception is thrown.
We fixed this issue.
11.0.16.7792: Feb 23 2023
All platforms - Plastic: Semantic diff viewer.
Launching semantic merge as a standalone tool displayed the text-based differences. Now the semantic-based differences are displayed.
You can try executing the semantic merge standalone tool:
plastic semanticmerge -s="<path-to-src-file>.cs" -d="<path-to-dst-file>.cs"
All Platforms - Plastic: Add codepage encodings to the encoding menu.
- We've added all the available codepage encodings to the Encoding dialog.
- The encoding list now shows EncodingName, WebName, and CodePage for easy identification.
See it in action!
All platforms - Plastic, Gluon: Find in files feature added to diff window
You can now do a text search in all files in a diff or code review.
Just press the "Find in files" button to open the Find in files dialog.
You can choose if the search is case sensitive. You can also choose to search only the source, or destination contributor. You can choose to search all files in the diff, just currently filtered files, or just the currently selected file. Also, you can filter the results by file extension.
Search results will appear at the bottom of the window.
Selecting a result will open the relevant file and show the matching line.
All Platforms - Plastic: Fixed an encoding issue in merge.
For a file that was encoded as UTF8 but contained invalid bytes, the merge process could raise the following error:
Unable to translate bytes [XX] at index YYY from specified code page to Unicode.
Now it's fixed.
All platforms - Plastic: Fixed 'Label all writable xlinked repositories' option
There was an issue with 'Label all writable xlinked repositories' option for the 'label this changeset' dialog, the app always created the label in the xlinked repositories too. We fixed this issue.
11.0.16.7778: Feb 16 2023
All platforms - Plastic: Added Visual Diff button to Semantic Merge
The "visual diff" button has been added to allow viewing the differences in a "visual" way, it's accessible via the outline panels on semantic merge.
All platforms - Plastic: SemanticMerge parsing error dialog
Added a new functionality to display any parsing error that semantic merge has detected.
P4/Git importers: From now on, running import operations is restricted to users with the change owner permission
The Plastic import operation sets the original P4/Git objects author to keep the repository history intact.
Creating branches, labels, revisions... as a different user is something the importer, under an account with change owner permission, should do to reduce the risk of impersonating objects.
If you have a periodic sync operation ongoing, please make sure that the user running the "cm" command has the change owner permission enabled for the repository
All platforms - Plastic: Added Restart Merge and Run Text Merge buttons to Semantic Merge
A new set to buttons is now available on semantic merge, "Restart Merge", and "Run Text Merge".
Server: More resilient check-in to out-of-date workspace due to cloaked
Now the check-in operation returns a meaningful error when you try to check in an out-of-date item that is no longer loaded on the server:
The item '/l_memory.h' is not loaded on the changeset you are working on (cs:5). Most likely, you updated the workspace with the item cloaked, so it wasn't unloaded. Please retry the check-in operation excluding this item, then update the entire workspace to fix any inconsistency.
This problem can happen when you remove the cloaked rules for an item, this item remains out of date, and you modify it. See an example:
* James - Cloak '/code' directory
* Mary - Delete '/code' & check in the change
* James - Update his workspace
* James - Uncloak the '/code' directory
* James - Move '/code/botlib/l_memory.h' to '/l_memory.h'
* James - Delete '/code'
* James - The check-in will fail with the error above because '/l_memory.h' no longer exists on the repository.
All platforms - Plastic, Gluon: Added conflict resolution text label in Semantic Merge
We have added a new text label in Semantic Merge. This label will inform the users of resolved conflict status
All platforms - Plastic: New "Show pending to integrate" option for branch diffs
We added a new option in the diff window for branches, that lets you see the branch changes pending to integrate into its parent branch. This is the same as using the recently added --integration option in the cm diff command.
All Platforms - Plastic: Fixed wrong color of Semantic Merge on dark themes
When launching Semantic Merge via command line and using a dark theme, the color combination of a highlighted section that contains a code comment would make the section unreadable, this has now been fixed.
All Platforms - GitServer: Failure running 'git pull' using HTTP protocol.
After certain repository size, the 'git pull' operations could fail with the 'fatal: protocol error: bad pack header' error. This happened only when using the http:// protocol.
The Plastic GitServer was implemented long time ago and it doesn't support the multi_ack_detailed & no-done capabilities that most Git clients do. So, we rely in the original protocol without these extra capabilities leading to some weird behavior in some cases. This will be improved in the future.
With the fix done, the 'git pull' operation will download the Git package (and it will not fail anymore like it did), but, sometimes, it will not update the local references. Thus, an extra 'git pull' command execution could be needed to upload the repository references (that will download nothing).
git pull remote: Exporting changeset cs: ... (1/118) Receiving objects: 100% (354/354), 79.23 KiB | 3.30 MiB/s, done.
git pull From http://server/repo 47a2ee4..ffe577f master -> origin/master 0cce4d8..3184425 task -> origin/task Updating 47a2ee4..ffe577f Fast-forward foo.c | 2 ++ 1 file changed, 2 insertions(+)
All Platforms - GitServer: HTTP server thread crashed with unexpected error.
The thread used to serve the GitServer HTTP requests could crash if there was any unexpected exception when closing the client HTTP connections. Now this error is fixed.
11.0.16.7762: Feb 09 2023
Server: Make check-in more robust to client errors
Added protection to the check-in operation to prevent a not uploaded file ends stored on the repository with a wrong revision.
All platforms - PlasticX: Cloud Repositories view removed
We removed Cloud Repositories view from Plastic because this functionality is now available through the Home view.
Also, we added the "Create new sync view (push/pull)" context menu option, which was missing, in the Home view.
All platforms - PlasticX, GluonX: Protect the delete repo operation when a workspace is in use
We protected the delete repository operation to take into account if there is a workspace in use that points to it. In this way, we prevent error messages due to the missing repository for the current workspace.
The app now shows a message to notify you about this scenario:
11.0.16.7754: Feb 02 2023
macOS, Linux - Plastic: New binary merge tool configured by default
Now the binary merge tool is set as the default tool to fix binary conflicts on macOS and Linux. So when you try to diff or merge a binary file, like an image, the new tool will be used
Windows - Gluon: Removed legacy Gluon GUI from the installer
The "legacygluon.exe" won't be available anymore. Use "gluon.exe" instead if you aren't already!
This release marks the end of support for the legacy Gluon GUI for Windows.
All platforms - Plastic: Shelveset merge summary updates when toggling items
When applying a shelveset to your workspace you can use the checkboxes to choose which changes to take from the shelveset. We now update the summary at the top of the view according to the selected changes.
Here is an example:
macOS, Linux - Plastic: New semantic merge tool configured by default
Now the semantic merge tool is set as the default tool to fix semantic conflicts on macOS and Linux. So when you try to diff or merge a semantic file (C#, VisualBasic or Java), the new tool will be used.
Command-line client: ACL commands warn about objects without ACL
Updated the help of the ACL command to remove those objects without an ACL. Also, the ACL command warns about those objects that are invalid.
Windows - PlasticX, GluonX: Updated Avalonia version
In this release we've updated Avalonia, our cross-platform UI framework
This update addresses an issue that affects dialogs for Windows users (showing a message dialog after a dialog could throw a null exception).
PlasticFS: The executable is signed from now on
Previous versions of Plastic contained an unsigned version of PlasticFS. In some places, restrictions apply over unsigned executables rendering PlasticFS unusable.
Now they are signed to overcome this limitation and make it easier to use.
All platforms - Plastic: Binary merge, can't close error message
An issue has been fixed which prevented an error message, due to invalid arguments, from being closed.
Windows - Plastic: Fixed null exception in Merge Options Dialog
In Merge View, a null reference exception appeared when you saved the merge options in Merge Options Dialog with at least one solved directory conflict, not allowing the user to cancel or recalculate the merge. We fixed this issue and now it works correctly.
All platforms - Plastic: Optimized refresh operation after saving Merge Options
In Merge View, after saving Merge Options, merge view was always refreshed.
In this release, we only refresh the view when a merge recalculation is needed.
macOS - Plastic: Fixed tool config for server-side merge operation
In the previous release we had an issue with the server-side merge operation, where the merge tool that appeared in the default configuration couldn't be launched for text conflicts on macOS.
We fixed this issue, and now you don't need to apply any workaround to fix text conflicts in server side merges.
11.0.16.7739: Jan 26 2023
~ WARNING ~
In a clean macOS machine, the server-side merge operation won't find the merge tool if there are text file conflicts. This happens due to a configuration issue.
As a workaround, you need to edit the text-based merge tool through the 'Preferences view' > 'Merge tools' tab in order to use '/usr/local/bin/plasticgui xmerge' (instead of 'plasticgui merge').
All Platforms - Gluon/GluonX: Incoming Changes only checks-out local changes involved in conflicts.
Before, the Incoming Changes applied all the local changes in the workspace before running the operation. It didn't matter whether these local changes were in conflict with the changes to update/merge or not.
This could end up locking exclusively some files that were only locally modified (unrelated to update operation) and preventing other users to modify those files due to an undesired lock.
Now, only the local changes that are in conflict with the server changes to update/merge are applied in the workspace.
Command-line client: Partial update command improved for automation
Several adjustments have been made to the partial update command:
* There was no --xml option in the partial update command. Now it is available.
* --xml option can be used in a pipeline.
* Using the --xml option implies --silent. Informative output gets trimmed.
* Using the --silent option removes informative output only. Warning and error messages are still written through standard error output. You can silence those messages by using output redirection.
All platforms - Plastic: Diff images available for binmerge tool
Now you can specify two arguments to the "plasticgui binmerge" command, the source and the destination contributors, to diff them instead of performing a merge. Both files must be images:
plasticgui binmerge -s=source.png -d=destination.png
All Platforms - Plastic: SemanticMerge match/unmatch
Ported match/unmatch functionality to new GUI for SemanticMerge.
All platforms - Plastic: Fixed issue applying directory conflict resolutions from shelveset
When applying the changes in a shelveset you can choose which of the changes you wish to apply. There was a bug which meant that if you chose to apply only resolved directory conflicts you would be told that no changes were selected and you would not be able to apply those changes. We fixed this, so now you can apply your directory conflict resolutions without issue.
All platforms - Plastic: App hang on closing if Pending Changes View is refresing
Plastic didn't respond if the user closed the GUI or switched to another Workspace when Pending Changes View was running a "finding changes in the workspace" operation.
This issue is now fixed.
11.0.16.7726: Jan 19 2023
All platforms - Command-line client: Flag to print just the root spec
Now the shelve creation is able to print just the shelveset spec of the root repository, skipping other "xlinked" shelvesets created this way. This is useful for automation purposes.
Example:
$>cm shelve --all --summaryformat sh:64@tools_repo@plastic_server:8087
All platforms - DevOps: Trunkbot now also sends trunk branch in a property
The trunkbot now also sends the configured trunk branch (usually the /main branch) to the underlying Continuous Integration system in a property named "PLASTICSCM_MERGEBOT_TRUNK_NAME".
Windows - Gluon: Removed "Switch to Legacy GUI" menu option
This release marks the end of support for the legacy Gluon GUI for Windows.
We removed the "Switch to Legacy GUI" menu option in Gluon, and soon the executable won't be included in the install package.
All platforms - Plastic: Unified the style of the color pickers
We unified the style of all color pickers that are shown in the application. This is how they look now:
Linux - Plastic: Allow changing the editor font.
For Windows and macOS you could change the font of the diff/merge:
Now you can also do it on Linux
All platforms - Plastic: Unified the look of the overlapped views
Sometimes when opening a view that requires all the space in the window, we open it on top of the current view. Overlapped views show a header at the top, that you can also use to close the view go back to the previous one.
We unified the style of these headers, and now all overlapped views in the application have the same look.
MacOS - Plastic: Update default merge tool
We updated the merge tool that is used by default to solve file merge conflicts. Now, unless you change it manually, the name of the new cross-platform merge tool will be used, instead of the legacy platform-specific one
Command-line client: Merge command improved for automation
Several options have been added, mirroring the update command: --xml and --encoding:
$ cm merge /main/task1001229 --xml --encoding=utf-8 2>nul
<?xml version="1.0" encoding="ibm850"?>
<Merge>
<Added>
<MergeItem>
<ItemType>Xlink</ItemType>
<Path>/Assets</Path>
<Spec>
<Server>localhost:8084</Server>
<Name>ArtAssets</Name>
</Spec>
</MergeItem>
<MergeItem>
<ItemType>Dir</ItemType>
<Path>/Source</Path>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MergeItem>
<MergeItem>
<ItemType>File</ItemType>
<Path>/README.md</Path>
<Size>6</Size>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MergeItem>
<MergeItem>
<ItemType>File</ItemType>
<Path>/Assets/guy.brush</Path>
<Size>17</Size>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MergeItem>
</Added>
<Deleted>
<MergeItem>
<ItemType>File</ItemType>
<Path>/README.txt</Path>
<Size>9</Size>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MergeItem>
</Deleted>
<Changed>
<MergeItem>
<ItemType>File</ItemType>
<Path>/LICENSE.txt</Path>
<Size>39</Size>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MergeItem>
</Changed>
<Moved>
<MovedMergeItem>
<ItemType>File</ItemType>
<SrcPath>/LICENSE.txt</SrcPath>
<DstPath>/LICENSE</DstPath>
<Size>39</Size>
<User>tim</User>
<Date>2022-12-15T11:46:46+01:00</Date>
</MovedMergeItem>
<PermissionsChanged>
<MergeItem>
<ItemType>File</ItemType>
<Path>/Assets/guy.brush</Path>
<Size>20</Size>
<User>tim</User>
<Date>2022-12-15T10:46:46+01:00</Date>
</MergeItem>
</PermissionsChanged>
</Moved>
<Warnings />
<DirConflicts>
<ConflictedItem>
<ConflictItemType>DIV_MV</ConflictItemType>
<SourceDiff>
<ChangeType>Moved</ChangeType>
<ItemType>File</ItemType>
<SrcPath>/PLAN</SrcPath>
<DstPath>/JC_PLAN</DstPath>
</Source>
<DestinationDiff>
<ChangeType>Moved</ChangeType>
<ItemType>File</ItemType>
<SrcPath>/PLAN</SrcPath>
<DstPath>/RJ_PLAN</DstPath>
</Destination>
</ConflictedItem>
</Conflicts>
</Merge>
See --usage for details:
> cm merge --usage
All Platforms - Plastic: Merge files from command line with Binary Merge
A quick way to get started is to run Plastic with a single argument:
* For Windows:
plastic binmerge
* For MacOS:
plasticgui binmerge
* For Linux:
plasticgui binmerge
For example, To merge two files with a common base file:
[plasticgui|plastic] binmerge -s=fileA.txt -d=fileB.txt -b=base.txt
In order to determine if a merge was successful, Plastic will return 0 or 1 as the application exit code. 0 means a merge was successfully performed and the result file has been save, 1 means that a merge has been aborted or not saved.
All platforms - Plastic: Corrected Merge View title when applying shelveset
When applying a shelveset the view title is now "Apply shelveset sh:<shelveset id>".
Windows - Gluon: Legacy merge tool opening for shelveset conflicts
On Windows Gluon, when trying to apply a shelveset that is in conflict with the local changes, we were opening the legacy merge tool (native to Windows). We fixed this issue, and now the new cross-platform merge tool is used instead
11.0.16.7709: Jan 12 2023
Windows - PlasticFS: Upgrade to WinFSP 2023 Beta1
Among other changes, the next version of WinFSP does not require to reboot for upgrading.
You can find the WinFSP release notes in https://github.com/winfsp/winfsp/releases.
Windows - PlasticFS: Junction support for dynamic workspaces
We added support for junctions to PlasticFS! Tools that create temporary junctions on disk can now run on dynamic workspaces.
Before:
> mklink /J assets ..\..\game_tree\assets Local NTFS volumes are required to complete the operation
After:
> mklink /J assets ..\..\game_tree\assets >
In PlasticFS, junctions have the same limitations and capabilities that symlinks have, with the following exceptions:
* Junctions, they can only be used with directories. The flip side is that, unlike symlinks, junctions always have the right type.
* Junctions only support absolute paths.
* Plastic itself does not distinguish between "junctions" and "symlinks". Adding a junction to source control will eventually replace it with a symlink.
== REQUIREMENTS ==
Besides PlasticFS, you might want to enable symlinks in the GUI and the command-line interface.
To do so, add the following to your client.conf:
<EnableSymlinkSupportOnWindows>yes</EnableSymlinkSupportOnWindows>
== LIMITATIONS ==
1) This feature is in an early stage of development, so you can expect minor bugs to happen.
2) Currently, junctions are not allowed to point to the dynamic workspace directory nor anything outside it.
All clients: Incoming Changes only checks-out local changes involved in conflicts.
Before, the Incoming Changes & merge operations applied all the local changes in the workspace before running the operation. It didn't matter whether these local changes were in conflict with the changes to update/merge or not.
This could end up locking exclusively some files that were only locally modified (unrelated to the merge/update) and preventing other users to modify those files due to an undesired lock.
Now, only the local changes that are in conflict with the server changes to update/merge are applied in the workspace.
This new behavior applies to PlasticX, Plastic and the command line client (it's not available or partial/Gluon workspaces yet).
All platforms - PlasticX, Command-Line Client: Triggers are not accepting URIs on Windows servers
Due to the possibility of working cross-platform, sometimes Plastic is performing paths correction to fit the different OS's syntax. Therefore, anything that might be considered as a path can be altered by replacing slashes with backslashes on Windows. That was affecting the trigger commands, which can receive arguments. Usually, these arguments are expected to be paths, many times the executable itself, but it is also possible to use Internet addresses and endpoints. These addresses were being altered when parsing the command arguments (replacing the slash). That was leading to unexecutable triggers on Windows servers.
Now it is fixed and it will be possible to create triggers receiving valid URIs as arguments.
For instance:
cm tr mk before-update TryToLoginTrigger "curl -X POST http://localhost:8080/login ./secret.key" --server=localhost:8084
When creating the command on a Windows machine, it will fix the "./secret.key" path to convert it to ".\\secret.key" but the localhost endpoint will remain the same.
This allows new possibilities of interaction through triggers on Windows machines.
NOTE: to be able to distinguish between local paths and external URI, it is advisable to use absolute URIs.
A known limitation for this would be the following syntax:
cm tr mk before-update UnityTrigger "curl -X POST unity.com/amazing" --server=localhost:8084
Under the hood, Plastic will modify the "unity.com/amazing" and use the "unity.com\\amazing" endpoint instead, because the literal complies with the local path formation rules.
The way to avoid the issue would be to use the absolute URI referring to the same endpoint: "https://unity.com/amazing", which will remain unaltered.
Command-line client: status command now gives changed/unchanged info for checkouts
Unlike in the GUIs, the command line was only able to show an item as either checked-out or changed, but not both at once. This made hard to tell if a file was actually modified or not:
> cm status --noheader
Changed
Status Size Last Modified Path
Checked-out 10 bytes 12 minutes ago checked-out-CHANGED.txt
Checked-out 11 bytes 13 minutes ago checked-out-unchanged.txt
> cm status --noheader --compact
Modified items (CH = changed, CO = checked-out, CP = copied (new), RP = replaced)
CO checked-out-CHANGED.txt
CO checked-out-unchanged.txt
Now, additional detail is given when changes are found:
> cm status --noheader
Changed
Status Size Last Modified Path
Checked-out (changed) 12 bytes 1 minute ago checked-out-CHANGED.txt
Checked-out (unchanged) 11 bytes 21 seconds ago checked-out-unchanged.txt
The "--compact", "--xml" and "--machinereadable" options don't display these details by default. It is so to not break existing integrations/automations. You need to combine them with the "--iscochanged" option to see the additional information.
> cm status --noheaders --noheader --compact Modified items (CH = changed, CO = checked-out, CP = copied (new), RP = replaced) CO checked-out-CHANGED.txt CO checked-out-unchanged.txt > cm status --noheaders --noheader --compact --iscochanged CO+CH checked-out-CHANGED.txt CO checked-out-unchanged.txt
Note that this information is only provided when the status command is searching for changed items (see the --changed option in --help for details). For instance, in case you only need to find whether items are or not checked-out, you can filter the search by using the --checkout option. That way, those details will be omitted as before.
Server: Incoming Changes failed with path permissions and a cloaked rules.
From 11.0.16.7656, the Incoming Changes failed and didn't appear when certain conditions were met: 1) there were set path permissions, 2) no cloaked.conf in the client and 3) a cloaked.conf loaded on the head tree of the branch (it contains a /cloaked.conf file). Now, it's fixed.
All platforms - GluonX: Null exception on clicking the Get Plastic link button in Checkin view
We fixed it to don't show this button in the details panel for the Checkin View because it is only available for the Explore workspace view.
11.0.16.7696: Dec 22 2022
All platforms - Command-line client: the diff command allows now to see the branch changes pending to integrate
You can use the new diff option --integration (e.g.: 'cm diff br:/main/task --integration') to see the branch changes pending to be integrated into its parent branch.
See some scenarios when it's useful:
* You are working on a child branch, and you make a rebase, a merge from /main. The regular 'cm diff br:/main/task' command will show the child branch changes combined with the rebased changes. Now, with the 'cm diff br:/main/task --integration', the command will skip the rebased changes. You will see a cleaner, more focused view of the actual branch changes.
* You are working on br:/main/task and you merge it into br:/main. Then you realize that you need additional changes in the branch and make them. The 'cm diff br:/main/task --integration' command will show those additional changes that you didn't merge yet.
All platforms - All clients: Pending changes: "Copied" items are now listed in "added" category
A "copied" is an existing item that is copied from a source changeset into the current one where it doesn't exist. It could happen due to a merge or revert operation.
Previously the copied changes were inside the modified category:
$cm status --noheader
Pending merge links
Cherry pick from cs:3 at /main/added_file@change_delete_tests@localhost:7777
Changed
Status Size Last Modified Path
Copied (new) (Cherrypick from 3) 7.95 KB 7 minutes ago FindMerge.cs
Now they are inside the added category, as the item is a new one on the current changeset even if it already exists on the repository:
$cm status --noheader
Pending merge links
Cherry pick from cs:3 at /main/added_file@change_delete_tests@localhost:7777
Added
Status Size Last Modified Path
Copied (new) (Cherrypick from 3) 7.95 KB 4 minutes ago FindMerge.cs
All platforms - All clients: New "change - not loaded" conflicts for cherry-picking merge & apply shelve
The old "change - delete" conflicts were replaced by the new "change - not loaded" conflicts for the cherry-picking merge, and apply shelve, where the changed item is not deleted on the destination, it's simply not loaded.
These new conflicts give a more accurate description and actions for these types of conflicts:
* Changed file on the source that doesn't exist on the destination:
* Changed file on the source whose parent doesn't exist on the destination:
* Added file on the source whose parent doesn't exist on the destination:
All platforms - PlasticX, Command-Line Client: Basic Auth now working with webtriggers
Webtriggers requiring basic authentication were not supported. There was a workaround to create a script with the call (using curl for instance inside a *.bat or *.sh file) including the authentication and then wrapping that script call within a regular trigger. Now it is possible to directly use webtriggers with basic authentication instead.
For example, imagine you have a configured Jenkins with a job named "MyProject" and you would like to call Jenkins to build the project after a check-in has been successfully completed. You could create a trigger like the following:
cm trigger mk after-checkin buildJenkins "webtrigger http://user:pass@localhost:8080/job/MyProject/build" --server=localhost:8084
All platforms - Plastic, Gluon: Added new arguments
The following arguments were available in legacy Windows GUI. Now we added them to the new cross-platform GUI:
* --clientconf: Lets you use a custom client.conf file, instead of the one at the default location
* --branchexplorer: Opens the branch explorer view of the specified workspace
* --preferences: Opens the preferences view when Plastic starts
* --createworkspace: Opens the dialog to create a new workspace when Plastic starts
In addition, arguments used to open the legacy GUI are now passed to the new GUI when clicking the "Try new GUI" button
All platforms - Plastic, Gluon: Provided better description in User Profile Tab
We renamed Preferences "User Profile" tab to "DevOps User Profile" to avoid confusion with "Connection Profiles"
Also, a explanation text and additional help hyperlinks were added, improving the documentation of this tab and giving better descriptions to the users
macOS, Linux - Plastic: Cross-platform semantic merge tool enabled by default
From now on, in macOS and Linux, when there is a non-automatic merge conflict on a code file, the cross-platform semantic merge tool will be launched to solve the conflict. Until now, you had to manually enable it by adding a flag in the client.conf file.
On Windows the native tool is still the default one, so you need to add the flag in client.conf if you want to use the new cross-platform tool:
<EnableSemanticMergeCrossPlatform>true</EnableSemanticMergeCrossPlatform>
All platforms - Plastic: shelvesets can now be filtered
We've improved the shelving workflow in Plastic by adding flexibility when applying a shelveset to your workspace. Now you can pick and choose individual files from a shelveset and apply only those that you want.
Shelvesets are chosen from the Shelves view, accessed using the "Show Shelves" button on the Pending Changes view, in the usual way:
Check the files in the shelveset that you want to apply to your workspace. Unchecked files will be ignored:
All platforms - Plastic, Gluon: Page Up/Down keys navigation fixed
We've fixed in this release Page Up/Down keys navigation for all Tables and Trees
All platforms - Plastic: Fixed exception when using the semantic icons bar
When clicking on "Diff changed code..." from the semantic icons bar in a changed portion of a file, an exception was thrown. We fixed this issue and now the diff window is opened correctly
All platforms - Command-line client: Failing to create an Xlink leaves a private directory
So far, trying to create an Xlink to a non-existent item still created a a private directory in the workspace.
Now, the item is solved before the xlink command can tinker with the workspace.
All platforms - IntelliJ: IntelliJ plugin diff does not display properly
Previously to this change, diff was not displayed properly if the revision was pointing to a shelve as the internal find command was lacking shelve option. We added shelve option and parse revId correctly so the content can be downloaded and displayed.
11.0.16.7679: Dec 15 2022
DevOps: TrunkBot now deletes shelvesets for Xlinks
When merging a task, the TrunkBot creates a shelveset that gets deleted when done. If the repository contains Xlinks, shelves are potentially created for each "xlinked" repository.
Before, the TrunkBot only removed the shelveset of the root repository, so the shelves of the "xlinked" repositories were left behind.
Now server and TrunkBot were improved so all shelvesets are properly cleaned.
Command-line client: Automatic shelve before switch (with pending changes).
The 'cm switch' and 'cm partial switch' commands now ask about shelving the workspace changes before continuing with the switch operation when there are pending changes in the workspace.
If the answer to the question is yes, it automatically shelves and undo your local changes before continuing with the switch operation.
This new behavior only happens if the following option is set in the client.conf configuration file.
<PendingChangesOnSwitchAction>Shelve</PendingChangesOnSwitchAction>
The shelve question can be skipped if the switch commands are executed with the '--noinput' option. In this case, the shelve + undo are run by default before the switch operation.
MacOS - Plastic: Automated update workflow
The update workflow has been improved on MacOS! It automatically downloads the latest release and executes it, whenever an update is available, and the user wishes to update.
All Platforms - Plastic/PlasticX/GluonX: Semantic supports C# 9, and 10 versions!
We modified Semantic Diff/Merge to support the new features introduced in the C# (9, and 10), and VB (16.9) languages for all platforms.
Here is a sample for C# 9 files with target-typed new expressions, and top-level statements (program without Main method):
Here is a sample for C# 10 files with global using, file-scoped namespace, and constant interpolated strings:
All platforms - PlasticX, GluonX: Removed the repositories view from the switcher window
When you clicked on the workspaces drop down at the top and selected "View repositories..." you would see the switcher window with a list of all the repositories you can access. This information was redundant, because you can also see the repositories from the home view. We removed the repositories view from the switcher window, and now it only displays the list of your workspaces
All Platforms - Plastic: Check for update option
You can now to check for a new update at any time, by selecting it from the application context menu.
All platforms - Plastic, Gluon: Home shows error message selecting repo with read permission denied
Plastic app could show a "An unexpected error has occurred" message in Home View if a repository with no read permission was selected, we fixed this issue
All platforms - Plastic, Gluon: Home will show public directories in repos with root path permission denied
We fixed the following scenario:
If an admin account denied all root permissions to another user accounts, but some subdirectories are public, HomeView would show empty repository to these users
This is the full repo an admin user could have:
And this will be the Home View normal users will now see in this scenario:
Windows - Visual Studio 2022 plugin: Prevent private files from showing CodeLens information
Previously to this change, private files were showing "Private" for every method and class and an empty tooltip. Now we are hiding useless information.
Command-line client: status --short option not providing a list of files
Before, the status command didn't provide a list of files as the help said. It couldn't be used in a pipeline without some workarounds.
Now it is possible to use it as expected:
> cm status --short | cm unco - --keepchanges
All platforms - Plastic, Gluon: Home View Path permissions created with \ instead of /
In the Home View, if we browse a file o directory to add a Path Permission, backslashes were used instead of forward slashes, we fixed this issue
11.0.16.7665: Dec 01 2022
Command-line client: Update command improved for automation
Several adjustments have been made to the update command:
Before:
* Using the --xml option was not meant to be used in a pipeline.
* Using the --silent option was meant to trim all output.
Now:
* Using the --xml option with no file implies --silent. Informative output gets trimmed.
* Using the --silent option removes informative output only. Warning and error messages are still written through standard error output. You can silence those messages by using output redirection.
All clients: Incoming Changes respects the cloaked rules.
Before, the Incoming Changes operation downloaded the files/directories although they were under cloaked paths. This was inconsistent with the update operation behavior and with the cloaked semantics themselves.
Now, the changes under cloaked paths are skipped like the update operation does.
The Gluon Incoming changes is not affected by this behavior (cloaked rules don't make sense in Gluon) since the operation works in a different way.
All Platforms - DevOps: Jenkins plug now shows the link to the build job
The Jenkins plug now notifies the URL to the build job. This way users are able to get the details about what failed while building the task in Jenkins.
Find below a sample of this notification using a local Jenkins plug with a TrunkBot mergebot on Slack:
Command-line client: Switch command improved for automation
Several options have been added to the switch command, mirroring the update command: --silent, --verbose, --xml and --encoding.
See --usage for details:
> cm switch --usage
Command-line client: Undo controlled changes and preserve local content
Added the option -k | --keepchanges to the cm unco & cm partial unco to allow undo checkout and preserve all local changes.
It could be very useful when you have a checked-out file with some changes for testing that you don't want to check in. So, now, you can undo the checkout (that releases the lock), and preserve local changes just to continue with your local tests.
$cm status --noheader
Changed
Status Size Last Modified Path
Checked-out 319.30 KB 1 minute ago body.png
$cm unco -k
c:\tmp\quake\body.png unchecked out correctly
$cm status --noheader
Changed
Status Size Last Modified Path
Changed 319.30 KB 1 minute ago body.png
The unco -k command can be applied to all kinds of controlled changes, turning them into local changes. This is complementary to using the checkout command to promote local changes into controlled ones.
*Added are left as private
*Checked-out are left as changed
*Deleted are left as locally-deleted
*Moved are left as locally-moved
Note this option is incompatible with dynamic workspaces.
All platforms - Plastic, Gluon: Improved app stability
We've improved app stability in some scenarios, preventing the app from crash when an exception is thrown
Command-line client: Update --xml now includes deleted items
Before, the --xml output of the update command was meant to only report items with added or updated revisions.
Deleted items are now included:
<UpdatedItems>
<List>
<UpdatedItem>
<Path>/wkspaces/SuperRacing/Assets/wheels.png</Path>
<User>Kit</User>
<Changeset>122</Changeset>
<Date>2022-11-27T20:30:44+01:00</Date>
</UpdatedItem>
</List>
</UpdatedItems>
All platforms - Plastic: Disabled Semantic History option for unsupported text files
We've disabled Semantic History menu option in Annotate View for all unsupported text files in semantic history (for example, .txt files)
macOS - Plastic: Removed mono-based GUI's
We finally removed the mono-based GUI's that were deprecated months ago, in favor of net(core) based counterparts: plasticgui
and gluon
.
This way we ease the setup of the Plastic SCM GUI applications, since no more "mono/xamarin" and related dependencies will be a requirement anymore.
All platforms - Plastic: Fixed exception in diff when selecting files outside of refactor group
We fixed an error that was causing an exception to be thrown when selecting an item in the diff window that is not inside a refactor group.
Command-line client: Unrelated conflicts when applying a shelve.
The 'shelveset apply' command could show some directory conflicts that were not related to the changes/paths specified in the command.
This happened when 1) only some changes were specified to be applied from the shelveset and 2) there were more than one directory conflicts involved in the shelveset application.
The problem came because the filter used to apply only the specified changes was not applied again after resolving a directory conflict. Fixed.
Command-line client: Update command --xml and --silent options are incompatible
Before, using the --silent option allowed the XML output to be printed but affected to the contents themselves.
Now, those options are compatible. Moreover, the --xml option now implies --silent.
11.0.16.7649: Nov 24 2022
All platforms - PlasticX, GluonX: Updated Avalonia version
In this release we've updated Avalonia, our cross-platform UI framework, to the latest public release
This update brings many stability improvements under the hood, and also addresses the following macOS issues:
- Sometimes a dialog could hang the app, this issue is fixed
- Merge links are now clickable again in Branch Explorer
- Fixed strange issue where buttons could disappear
- Fixed flickering in the Home View
All Platforms - PlasticX: Jira task details on branch explorer
You can now see and navigate to a Jira task when using the Jira extension to create a branch.
All platforms - PlasticX: Launch Semantic Merge as standalone
The Semantic Merge tool could be launched from the command line using:
plasticx semanticmerge -s=source -d=destination -b=base
For unsupported file formats the merge tool will be launched instead of semantic merge. If the base argument is missing in the command line, the diff tool will be launched instead.
All platforms - PlasticX: Clarification message for deleted repositories
Improved description of how long repositories are kept in storage after being deleted.
All platforms - PlasticX: Branch options not working in Merge diagram
When the merge diagram was opened from the Merge view, some of the available actions from the branch context menu were not working as expected.
Command-line client: Misleading diff result message
When requesting a diff of a private file or non-existent file, the message tries to indicate that there is nothing to compare it with.
However, this feature includes a misleading message:
> cm diff private_file.txt Item has only one revision.
Now this is corrected:
> cm diff private_file.txt There is no previous revision for this item.
All Platforms - Command-Line Client, PlasticX: Codereview creation with triggers fails.
Having an "editreview" trigger enabled, the creation of a code review through PlasticX fails.
This happens becase, when creating a code review with the CLI or with the PlasticX application, the reviewer might not be specified in the command and it is not set by default in PlasticX when the creator of the code review is the same user who created the branch.
Now it is fixed.
All platforms - PlasticX: Corrected semantic outline for multi-file moves
We corrected the information displayed in the semantic outline when we detect that code has been moved from one file to another.
Here is an example:
All platforms - PlasticX: Check-in button disabled during the check-in operation
We've disabled the Pending Changes view Check-in button until the check-in operation is complete
Windows 10: We disabled the possibility of negotiating TLS 1.3 connections on Windows 10
This TLS version is experimental on Windows 10 and, although it can be enabled and forced through registry hacks, it is not officially supported (as per Microsoft documentation) and won't work when trying to connect to Plastic SCM Cloud nodes.
By doing this, we re-enabled TLS 1.3 support on Windows 11, Windows Server 2022, and all other platforms that support it.
All platforms - GluonX: Error sorting columns in the Workspace Explorer view
If a user tries to sort by the Changeset column in the Workspace Explorer view and one item has no revisions (for example, a newly created file), the operation throws an exception.
We've fixed this issue.
All platforms - GluonX: Shelve and undo changes, fixed null exception error message
We've fixed the following scenario in GluonX:
If a user undo changes right after a shelve operation, and the Pending Changes view was completely cleared, a null exception could appear
11.0.16.7626: Nov 17 2022
All platforms - DevOps: TrunkBot adds tasks' title to the check-in comment when merging
Now TrunkBot mergebot will add the task' title from the configured issue tracker to the check-in comment when a merge is successfully performed. If there is no configured issue tracker, it will add the branch comments instead.
All platforms - Server: Deleting an object now deletes the associated code review data.
Now, when deleting a changeset, a shelve, or a branch, all the associated code review data gets deleted as well. This means that all code reviews targetting a changeset or a shelve, as well as all the code review comments made on a changeset or a shelve, will be deleted along with the changeset or shelve. When deleting a branch, all the code reviews targetting the branch will be deleted too.
Until now, the only thing that happened (regarding code reviews) when deleting a changeset was that all the change requests applied on said changeset were marked as not addressed. Now, the cleanup is complete.
All platforms - Command line client: Now you can create code reviews for shelves!
If you want your colleagues' feedback on some code, but don't want to actually check in the changes, now you can create a shelve and ask them to review the changes with the integrated code review functionality! Bear in mind that creating the code review only works (from now) from the cm
command line client, but once created, you can open the code review from the GUIs.
To do so, you will need the shelve ID of your shelve. You can obtain that from the "ID" column in the "Show shelves" view in the GUIs, or by running a cm find
command:
cm find "shelves where owner = 'me' on repository 'secretproject@coolorg@cloud"
Then, create the code review specifying the shelve:
cm codereview sh:1354@secretproject@coolorg@cloud "Please review this change with care!"
The code review can then be opened and edited from the GUIs.
Server: Deny temporary access for some specific users
Now you can deny access to certain users. To do so, create a deniedusers.conf file inside the server directory and add a user per line.
You don't need to restart the server, but note it might take some seconds until the server reloads the list of users with access denied.
Examples:
alice bob
Note users might look different, as it depends on the configured authentication:
alice@mail.com bob@mail.com
Windows - PlasticX: PlasticX is now the official GUI on Windows
We are happy to announce that our new, cross-platform, GUI is now the official GUI on Windows.
To launch the new GUI simply run plastic.exe as before. The old windows gui has been renamed to LegacyPlastic.exe.
Windows - PlasticFS: Symlink support for dynamic workspaces
We added support for symlinks to PlasticFS!
Now symlinks are supported everywhere in the Plastic ecosystem: Windows, Linux, macOS and PlasticFS.
== REQUIREMENTS ==
1) While PlasticFS does not need anything to support it, you might want to enable the Windows client support. This will allow the command line and PlasticX/GluonX to work with symlinks on Windows.
To do that, add the following configuration setting to your client.conf:
<EnableSymlinkSupportOnWindows>yes</EnableSymlinkSupportOnWindows>
2) If you update an existing dynamic workspace, you will find placeholder files where symlinks should be. To get the actual symlinks, you can delete the placeholder files, then tell Plastic to undo changes so they are recreated.
Be sure to read the LIMITATIONS section before using.
== HOW TO USE THEM ==
You can use mklink as usual to create some symlinks:
mklink filelink file.txt mklink /D dirlink dir
Note that, unlike with static workspaces, you don't need to enable Developer Mode to make it work!
== LIMITATIONS ==
1) This feature is in an early stage of development, so you can expect minor bugs to happen.
2) PlasticFS always creates symlinks as files. By trying to access them, they will be automatically solved and converted to directories. However, this step might confuse external programs that do not expect it.
* This happens anytime you create a new workspace or after undoing a placeholder file (see REQUIREMENTS section).
* Windows Explorer will force this conversion, but you will have to refresh the window the first time it shows a symlink.
3) Currently, relative symlinks are not allowed to link the mount point directory or anything above it.
All platforms - PlasticX: View deleted repositories on home view
You can now see the recently deleted repositories on the home view!
It is accessible by clicking on the cog icon near the search bar.
To restore a deleted repository, simply right click on the deleted repository and select the "undelete" option
Windows - Visual Studio 2022 plugin: Fixed issue when opening Pending Changes
After uploading Visual Studio 2022 to version 17.2.0 or higher, if the solution contained a solution's folder, Visual Studio plugin was prompting the error:
"GetSccFiles must be called on the UI thread"
It was preventing the Pending Changes view from working properly.
The issue has been fixed and now Pending Changes is fully usable in any situation.
All platforms - PlasticX: Flicker issue in the pending changes refresh
The refresh operation for the pending changes view launched different operations to calculate the review comments to apply and the pending changes which caused a flicker issue. We unified those operations to avoid this issue.
All platforms - PlasticX: Missing success message after creating a shelveset
After creating a shelveset the success message was shown in the status bar but it was immediately hidden due to an issue in the pending changes refresh operation that overwrote the message with the progress. Now it's fixed.
All platforms - PlasticX: Fixed slow pending changes category checkbox
We improved the performance of toggling a pending changes category checkbox when the category contains a very large number of items.
For example, toggling a category containing 30,000 items used to take about 20 seconds, and now takes less than half a second.
Cloud Server: Fixed deadlock with concurrent checkins in the same repo.
The cloud server uses locks to handle concurrent access to the Jet files and to the internal caches. There was a race condition where concurrent checkins (in the same repo) that added new files to the repo could get stuck forever due to a deadlock between the previous mentioned locks. Fixed.
This was a corner scenario since the race condition was not easy to reproduce without the right debugging.
All platforms - GluonX: Details Panel could not be resized.
We found a rare scenario in the Details Panel where this subview couldn't be resized anymore. We fixed this issue
Also, we have also set minimum width to the Workspace Explorer and Checkin Views when Details Panel is shown to the users
All platforms - PlasticX, GluonX: Skip format changes not working properly
There's an option in the pending changes view and diff view that allows you to skip format changes when diffing two versions of a file, such as line endings or spaces. This option was not being initialized correctly, and even when it was enabled, it appeared as disabled in the GUI. This issue is now fixed
All platforms - PlasticX: Diff/Merge Window crash after Cut empty text
PlasticX crashed cutting an empty line from the editable text editor in diff/merge view.
11.0.16.7608: Nov 07 2022
All platforms - Plastic: Semantic Visual Differences are here!
We ported the Visual Diff feature from the Windows Legacy GUI to the new (multiplatform) GUI, which means that now, the Visual Diff feature is available on three platforms, Windows, macOS, and Linux!
The Visual Diff is a diagram that helps to understand the changes made to a file, in a semantic way. Visual Differences are available for those file formats that support semantic differences (.NET, Java, PHP, C, C++). When the semantic differences are calculated, the Visual Diff displays a graphical representation of them. The diagram displays, classes, usings, methods, members, fields, etc, and some decorations indicating if an entity was added, changed, moved, or deleted. It also helps to display the differences between them.
The Visual Diff is available in three places:
1- The Diff Control (note that we also implemented a couple of options for the semantic diff):
* Skip format changes: This option ignores the indentation and EOL changes when the semantic diffs are calculated.
* Reformat: This option automatically reformats the source code:
2- The Diff Window, when clicking a Refactor Group when using our "analyze refactors" feature:
3- The Semantic Merge tool:
All platforms - PlasticX: Visual diff window new design
Some colors and layout design has been changed for the Visual diff window in order to improve legibility and visibility for both themes.
Linux - Plastic: removed mono-based GUI's
We finally removed the mono-based GUI's that were deprecated months ago, in favor of netcore-based counterparts: plasticgui
and gluon
.
This way we ease the setup of the Plastic SCM GUI applications, since no more "mono" and related packages will be a requirement anymore.
The final goal is to support newer distros, and for that goal, this removal of mono-based applications is a must.
REMARK: The package name was renamed from plasticscm-client-gtk
to plasticscm-client-gui
, but your package manager should care automatically of this renaming.
Linux - Client and Server: Added support for Ubuntu 22
Now you can install Plastic SCM on Ubuntu 22 using the package manager! Instructions here , "Ubuntu" tab.
Easy to say, long road until we made it! This Ubuntu 22 support pulls some relevant changes in the Plastic SCM software stack:
1. Mono removal: We don't require installing mono
runtime anymore. We now rely on .NET specific OS-targeted self-contained executables for all Plastic SCM applications, even client-GUI applications (server was already compiled this way since early 2021).
2. Legacy GUI's removal (gtkplastic, gtkgluon, gtkmergetool). Since they were based in mono, they need to be removed and replaced by .NET counterparts: plasticgui
and gluonx
(mergetool is now part of plasticgui
application and can be launched using plasticgui xmerge
).
3. Move server from .NET 5 to .NET 6
All these changes were required in order to meet dependencies needs for Ubuntu 22, specially on ssl libraries and graphical toolkit libraries.
All platforms - PlasticX, GluonX: Damaged image file won't show error pop up in Pending/Checkin Changes Views.
Selecting a damaged image file won't show error pop up message in Pending Changes/Checkin Changes Views.
The error message will still be visible to the user as a label notification, and also in the Details Panel (GluonX only)
All platforms - GluonX: Visual feedback when cutting items
When cutting items from the workspace explorer view, now there is a transparency effect in the icon of the elements that have been cut.
This feature was already available on Plastic, and now it's on Gluon too.
All platforms - Plastic: Allow changing the editor font.
Now, the diff/merge font can be changed.
NOTE for windows users. The default monospaced font in Windows OS (if available) is Cascadia Code , which enables font ligatures , so if you want to disable them, you can change the font to use Cascadia Mono, or other available font in your system.
All platforms - Plastic: Full Unicode support and IME.
Previous versions of Plastic didn't fully support double-byte languages (Chinese, Korean, Japanese, etc ...). This Plastic version supports, not only double-byte languages and emojis, but also supports IME (Input Method Editor) for these languages, and right-to-left input support for Arabic and other languages.
NOTE for Open Suse Linux users: After this changes, Open Suse 15.2 is no longer supported. An upgrade to Open Suse 15.3 is required in order to run Plastic.
Server - Merge and Incoming Changes are much faster tons of ChangeDelete conflicts.
The calculation of the merge or the incoming changes was very slow when there were tons of ChangeDelete conflicts involved in the operation.
In the studied case, 2 million of items were added in the source of the merge but all of them were added under a deleted directory in destination. It initially took more than 2 hours to calculate the merge. Now, the same scenario takes less than 15 seconds to complete it. So, it's 500 times faster.
All platforms - PlasticX: added tooltip to Branch Explorer
Branches, changesets and labels on the Branch Explorer now have a tooltip which looks something like this:
Clicking the links on the tooltip will open a diff of the specified branch or changeset.
All Platforms - Command-Line Client: New information to display on revision history command
A new option has been added: --limit. It displays the N last revisions regarding the specified items. If N is bigger than the number of available revisions, it will display the existing ones (limit will take no effect); if N = 0, it will display every revision; if N < 0 the displayed list will be empty; if 0 < N < numRevisions will display the N most recent revisions, sorted by date and changeset id.
For example:
cm.exe hist foo.c bar.c --format='{path}: {itemid}' --limit=5
Will display the path and itemid regarding the last 5 revisions of foo.c and bar.c
foo.c: 8 foo.c: 16 bar.c: 12 bar.c: 13 bar.c: 15 bar.c: 21 bar.c: 24
Note that, in the example, foo.c only has 2 revisions.
All platforms - PlasticX: Changes in Semantic Merge Window
We changed the Semantic Merge Window icon, now the window will now show legacy Semantic Merge tool icon
We added MinWidth and MaxWidth properties to the window
All Platforms - Command-Line Client: New information to display on revision history command --format
Two more fields have been added to the revision history command in order to display information such as the revision size in bytes and the revision hash code. The --long option will also regard these new fields.
Now it is possible to use both {size} and {hash} in order to display that information along with the --format option.
For example:
cm.exe hist ./dir/foo.c bar.c --format='{path}: {size} bytes ({hash})'
Will display the review history of both foo.c and bar.c files, outputting the item id, the size of the file at each specific revision and, in between parenthesis, the hash code identifying the content of each revision.
./dir/foo.c: 5 bytes (RKaq9oJlXsU2xCXiO7zSjg==) ./dir/foo.c: 15 bytes (qNJWW77XzCApIMdT13jzkw==) ./dir/foo.c: 203 bytes (NnqIk33R+eUMaewTjAVrqQ==) bar.c: 2031 bytes (aaHWt78weCApIMHa53jz22==)
In addition, the --long format will also display the new fields:
cm.exe hist bar.c --long
Will display something like the following, considering bar.c file had only 1 revision:
REVISION HISTORY OF C:\wkspaces\default\bar.c -------------------------- Revision spec: bar.c#cs:1 Located on branch: /main Created: 9/27/2022 17:53 Revision type: txt Changeset number: 1 Owner: newuser Repository: default Server: localhost:8084 Repository spec: default@localhost:8084 Data status: Available Item ID: 21 Item path or spec: bar.c ItemSize: 2031 Item hash code: aaHWt78weCApIMHa53jz22== Comment: bar.c now is managing HTTP connections
All Platforms - PlasticX, GluonX: Application Zoom Support
You can now apply a zoom level to the whole application!
Change it via the ⋮ (triple vertical dot) menu on the top right corner -> Zoom or by pressing Ctrl + Plus, Ctrl + Minus, to increase or decrease the application zoom.
All platforms - Plastic: Added text editor options.
Now, the diff tool and the merge window have new options to customize the text editors. Those options allow to:
- Show/hide the tabs and the whitespace.
- Show/hide the line ending (EOL) characters.
- Convert tabs to spaces while editing.
- Customize the indent size (tab size) to 4 or 8 characters.
- Add column rulers.
Demo:
Command-line client: New env variables in codereview edit
Previously there was no way to create a [before | after]-editreview trigger and retrieve
information about what editing was being done: the assignee or the status or both of them.
Now there are two new environment variables related to [before | after]-editreview triggers:
PLASTIC_REVIEW_ACTION: edit assignee or edit status or both separated by ';')
PLASTIC_REVIEW_ACTION_INFO (detailing "previous value" "->" "new value" for the assignee, the status or both, separated by ';').
Mind that only when editing the code review from the CLI both fields can be edited at the same time.
For instance, if you have a script which is dumping the environment variables passed as arguments to an output file (DumpEnvVars.exe), the following trigger creation:
cm trigger create before-editreview before-editreview-trigger "C:\wkspaces\scripts\DumpEnvVars.exe -env=PLASTIC_REVIEW_ACTION;PLASTIC_REVIEW_ACTION_INFO C:\wkspaces\outputs\before-editreview-trigger-result.txt" --server=localhost:8084
And you do a code review edit like this one:
cm codereview -e 19 --status="Under review" --assignee="Michaella"
The script would write a file with the following content:
PLASTIC_REVIEW_ACTION = edit status;edit assignee PLASTIC_REVIEW_ACTION_INFO = Rework required->Under review;Thormund->Michaella
All platforms - PlasticX: Error in skip merge tracking
An unexpected error was displayed when skipping merge tracking in diff window for big number of differences (>50).
All platforms - PlasticX, GluonX: fixed issue selecting damaged image files in Pending/Checkin Changes Views.
When selecting a damaged image file in Pending Changes/Checkin Changes Views, if the user had selected previously another image file, image panel still showed to the user the last viewed image, we fixed this issue.
All platforms - PlasticX: Attributes panel resizing
The attributes panel was not showing the relevant info, the attribute name, when resizing. A fix has been added in order to adapt panel items sizes proportionally to the available space/width when resizing the panel horizontally.
Server: The REST API to download revisions had a memory leak.
The endpoint to download a file revision content (api/v1/repos/repName/revisions/revId/raw) had a memory leak when the '?version=2' query parameter was specified.
We already fixed a memory leak related to this endpoint in the version 11.0.16.7372, but a different one still happened. Fixed.
All platforms - Semantic Merge: Fixed diff color palettes for the dark theme.
The colors used to display differences were unsuitable for the dark theme (they had low contrast). Now it's fixed. This is how it now looks:
All platforms - PlasticX: Fixed empty buttons in pending changes
There was an issue with the "Save" and "Discard" buttons that appear in the pending changes view when you modify a file from Plastic. Sometimes, when changing the selection of the file, these buttons appeared without any content, until moving the cursor over them. We fixed this issue, and now the buttons work as expected
Windows - PlasticX: Fixed issue when opening files with custom tool
When trying to open a file with a custom tool from the workspace explorer on Windows, there was an exception preventing the new process from starting. We fixed this issue, and now the custom tool launches as in the other platforms
All platforms - PlasticX, GluonX: Preview was being calculated even when it's not visible.
We optimized the Details Panel behavior. Now, the app will only calculate the Preview data when the panel is visible to the user.
All platforms - PlasticX: Fixed issue when requesting credentials
When you try to perform an action on a server for which you don't have valid credentials, we show a dialog asking you to authenticate. There was a bug that made this dialog appear multiple times overlapped. We fixed this issue and now the dialog only appears once
All platforms - PlasticX: Merge view issues
Avoid error loading conflicts from a merge in Merge view and converted multiline texts in one single line for Comments column.
All platforms - PlasticX, GluonX: Tool command not properly refreshed
In Preferences window when the Diff or Merge Tools were opened, the Tool command text field was not properly updated with the current selected tool command line.
All platforms - PlasticX: Fixed DNS error for cloud.plasticscm.com
We fixed an issue in the Plastic onboarding where a DNS error was shown after creating a new organization. This issue only appeared for new accounts that didn't have any organizations and created a new one after the sign up.
All platforms - PlasticX: Help not displayed for empty list of code reviews
The help panel wasn't displayed after clicking the Help button in "Code Reviews" view when the list was empty, now the general query views help will be shown for this case.
All Platforms - PlasticX: SemanticMerge hangs
An issue has been fixed in which when resolving a conflict with the argument "--process-all-merges"
macOS - PlasticX: Fixed loading of Polarion extension
When trying to load the Polarion issue tracker exception in macOS, an error was thrown because a missing dependency. We fixed this issue, and now you can use the extension on macOS as in the other platforms
All platforms - PlasticX: Fixed issue when showing merge tracking colors
We fixed an issue with the merge tracking colors menu, which was only visible when diffing branches that didn't have xlinks.
Now it's also available for diffing changesets and labels, which can contain changes in xlinks
All platforms - GluonX: Details Panel didn't clear data when no row was selected in Checkin View.
We fixed an issue in the Checkin View Details Panel. Now, the app will always clear previous data when no row is selected or if the Checkin View is empty.
All platforms: TLS1.3 temporarily disabled.
TLS1.3 is not supported on Windows 10. We identified some software that enables and forces it through registry editing, forcing Plastic SCM secure connections to use it, and failing to connect both to Enterprise and Cloud servers.
All Platforms - PlasticX: Incorrect theme on ⋮ (options menu)
An issue has been fixed in which sometimes would show the incorrect theme selected on ⋮ (options menu) -> Theme.
All platforms - GluonX: Hide open repository button
In order to avoid opening not loaded repositories, the open repository button won't be available from Home view in Gluon app.
All platforms - Plastic: Allow restoring default font in the text editors.
The dialog that allows changing the editor font didn't show the "Select default font" button. Now it's fixed:
macOS - PlasticX: Fixed hang when discovering new servers
There is an option when adding new accounts to auto discover Plastic servers in the local network. If the discover operation is cancelled while it is running, the application hangs, and needs to be killed.
We fixed this issue, and now the operation can be cancelled without issues
All platforms - Plastic: Fixed syntax lines are not colored sometimes.
In some scenarios, some lines were not colored when loading a file in the diff viewer. Now it's fixed.
All platforms - Plastic: The diff scrollbar was not visible under some circumstances.
A recently added option in the diff viewer that allows scrolling below the document caused the scrollbar not to be visible sometimes. Now it's fixed.
All platforms - Plastic: resolved issue where long running merge processes could accumulate on the server
The Plastic client checks the server for incoming changes in some operations that can affect them. This can trigger the server to calculate a merge. If this calculation took a long time, the calculation would be triggered again by other operations and these processes could accumulate, pointlessly using server resources.
We fix this by ensuring that the calculation will not be requested if another calculation is already in progress.
Windows - PlasticX, GluonX: Dynamic Workspaces checkbox not visible
The dynamic workspaces checkbox visibility status was not properly refreshed from Create Workspaces dialog. When "plasticfs" process is running the checkbox should be visible so the user can create a dynamic workspace, otherwise it shouldn't be available.
MacOS - PlasticX: Cannot switch to plastic from gluon
An issue has been fixed that prevented switching from gluon to plastic via the '...' menu.
Windows - PlasticFS: msys2 redirection overwrites files (append mode)
Trying to concatenate content through shell redirections overwrote files due to a bug related to opening files in append mode:
$ echo -e "This is an apple" >> test.txt $ echo -e "This is a pen" >> test.txt $ cat test.txt This is a pen le
This has been corrected:
$ echo -e "This is an apple" >> test.txt $ echo -e "This is a pen" >> test.txt $ cat test.txt This is an apple This is a pen
All platforms - PlasticX: Error loading branch explorer
Fixed error trying to load a workspace in partial mode in Branch explorer view.
All platforms - PlasticX: Error reviewing image files
In the code review window, an error was raised trying to select image files, it's because the diff icons bar is not available for image files, the file differences couldn't be loaded properly, and an error message was displayed. Now it's fixed.
All platforms - Plastic: Go to moved code buttons not drawn.
If you selected "Go to moved code" in the diff viewer, then the action buttons in the destination are not drawn until you mouse-over the column. Now it's fixed.
All platforms - PlasticX, GluonX: Infinite progress after creating a shelveset
There was an issue when creating a shelveset in Plastic and Gluon, where the progress would spin forever when choosing to undo the changes after creating the shelve
11.0.16.7504: Oct 13 2022
All platforms - PlasticX: Edit accounts
We added a new option in the home panel that lets you modify on-prem servers accounts. When using it, you will be able to authenticate again to the server, updating the stored credentials
All platforms - Command line client: Now you can list group members from cm!
Doing so is easy: just specify the group name in the --group
option of the cm listusers
command.
If a group is a member of a group, the command will solve its users recursively too.
So take this scenario as an example: Users 'sergio' and 'brenda' are part of the Developers group. User 'paula' is part of the QA group, and so is the Developers group. So QA users are 'paula' and 'Developers', and 'Developers' users are 'sergio' and 'brenda'. By solving groups recursively, the command output will look as follows:
> cm listusers --group=QA myorg@cloud sergio brenda paula
All platforms - PlasticX: License notifications
Plastic will display user notifications about the license status. An information message will be shown when the current license is going to expire indicating the remaining days and how to renew it. On the other hand, when the license has been expired then an error message will be shown.
For extended trial licenses the notification panel will allow users to start the license registration process, so users could extend their licenses for 30 days.
All platforms - Command-line client: Better cm status with tables!
Modern times arrive for our command line, with a much better way to display workspace changes: cm status --pretty
Check how it looks like now:
And compare with how it looked like before:
Now also check how it looks like in Windows Terminal:
And the good old cmd.exe:
Enjoy!
Command-line client: Apply only the desired changes from a shelve
From now on, the cm allows you to choose which changes do you want to apply from a shelve. You no longer need to apply all the changes done on the shelve.
You can see which changes are going to apply by the shelve without applying them using:
$cm shelveset apply sh:2 --preview The file /q3radiant/Z.CPP#sh:2 was modified on source and will replace the destination version The file /ui/hud2.txt#sh:2 was modified on source and will replace the destination version
You can apply only the desired changes indicating the changes paths to apply:
$cm shelveset apply sh:2 /ui/hud2.txt The file /ui/hud2.txt#sh:2 was modified on source and will replace the destination version Merging c:\tmp\quake\ui\hud2.txt The revision c:\tmp\quake\ui\hud2.txt@sh:2 has been loaded
All platforms - PlasticX: Fixed issue obtaining changesets from old server
Some time ago we modified a method in the Plastic server that was called from the client. This change made the client throw an exception when trying to execute the method on an old server:
"The method GetChangesetsInfoByNumber is not supported"
We fixed this issue, and now the client will work with modern and old versions of the server.
All platforms - PlasticX: Fixed issue with code review comment selection
Opening a code review comment for a file which had additional changes made to it after the code review comment was created was not working correctly. We fixed this.
We also corrected an issue where items in the file list were not being marked as viewed when they should have been.
All platforms - PlasticX: Non-editable username when authenticating in Name working mode
When signing in to a server using the Name working mode, you were able to modify the username used to authenticate. This was wrong - on Name working mode the username must always be taken from the system
All platforms - PlasticX: Diffs multiple selection issue
When an item is marked as viewed it changes the text style from bold to normal. The diffs list must mark items as viewed just when a single selection is done, items won't be marked as viewed on a multiselection.
All platforms - PlasticX: Annotate View splitter
We fixed the splitter in the Annotate View: the metadata column will expand correctly and won't show blank space. We also set minimum and maximum width properties to the metadata column.
11.0.16.7468: Oct 06 2022
All platforms - PlasticX: Disable context menu items for empty lines in the "Annotate" view.
Trying to execute some menu context menu actions for empty lines In the Annotate view, caused the UI to show an error, but now it's fixed. When a menu item cannot be executed, it's just disabled.
The affected menu items are:
* Diff branch
* Diff changeset
* Annotate before these changes
* Show semantic history
* Add diff selection,
* Diff with previous selection
Windows - PlasticX: Exception when diffing symlinks
An exception that occurs when trying to diff a symlink file on windows has been fixed, along with a bunch of minor visualization bugs.
macOS - PlasticX: fixed assembly load error when configuring issue trackers
PlasticX was looking in the wrong place for issue tracking extensions, resulting in an error when opening the Issue trackers pane of Preferences. We fixed it to check the correct path.
11.0.16.7460: Sep 29 2022
Linux, macOS - PlasticX, GluonX: removed "Switch to Legacy GUI" option for Linux and macOS users
This release marks the end of support for the legacy (pre-avalonia framework) Linux and macOS GUIs for all users.
We have removed the "Switch to Legacy GUI" option for Linux and macOS users, and soon their executables won't be included in the package
All platforms - PlasticX, GluonX: Added merge tracking colors to diff view
When you are seeing the differences of a branch with merges, sometimes is difficult to know where each change came from. To make this easier, we added colors to the diff view to differentiate between source, destination, and conflict changes. You can modify these colors and even show/hide them depending on what you want to see.
This feature was already available for Windows users in the legacy GUI. Now it's available in all platforms in the new Plastic GUI.
All platforms - PlasticX: Added ESC key close shortcuts in overlapped Browse Repository and Changesets Views
We've added new ESC key close shortcuts in the following overlapped views in PlasticX
*Browse Repository
*Changesets (only when Changesets View is called as a overlapped View)
All platforms - Command line client: 'cm rm controlled' now removes items in block.
Removing a controlled item involves a few operations: locking the workspace, starting a new workspace transaction, look for the item in the tree metadata, removing said node, checking out the parent (if necessary), removing the content from disk (if necessary), and finally commiting the transaction and unlocking the workspace.
Before, the command cm rm controlled
would do all of these steps for each item, regardless of them belonging to the same workspace. This would incur on a big overhead when trying to delete many items in a row.
Now the command deletes all items belonging to the same workspace in block.
However, this forced some changes in how cm rm controlled
reports removed items through standard output. If you use this command in an automation script or plugin, and you don't use the --format
or --errorformat
flags, you might need to consider these changes.
Consider the following scenario: we are going to delete a controlled directory (src), a private file (ignore.conf), and a file that is outside of the workspace (README.txt). This would be the output in previous Plastic SCM versions:
sergio:/wkspaces/Project$ cm rm ignore.conf src ../README.txt
/wkspaces/Project/ignore.conf is not in a workspace.
Item ./src/ has been removed
/wkspaces/README.txt is not in a workspace
Now paths are reported in the following order: first, all the paths that were correctly removed. Then, all the paths that were skipped because of an error (for example, the item not being in a workspace). Finally, all the paths that were skipped because they are not in a workspace. Now we also always use the item's full path:
sergio:/wkspaces/Project$ cm rm ignore.conf src ../README.txt
Item /wkspaces/Project/src/ has been removed.
/wkspaces/Project/ignore.conf is not in a workspace.
/wkspaces/README.txt is not in a workspace.
We honor the behavior of the --format
and --errorformat
flags.
sergio:/wkspaces/Project$ cm rm ignore.conf src ../README.txt --format="{0} - DELETED" --errorformat="{0} - NOT DELETED"
/wkspaces/Project/src/ - DELETED
/wkspaces/Project/ignore.conf - NOT DELETED
/wkspaces/README.txt - NOT DELETED
We also honor the command's exit code. Before, if an item could not be removed for whatever reason, command's exit code was 1. The same behavior applies here.
All Platforms - PlasticX: Merge files from command line with XMerge
You can now use PlasticX for merging and diffing any files using XMerge!
A quick way to get started is to run PlasticX with a single argument, xmerge. As shown below:
* For Windows:
[plastic|winplasticx] xmerge
* For MacOS:
plasticgui xmerge
* For Linux:
plasticgui xmerge
Now, some quick examples
* To diff two files:
[plasticgui|winplasticx|plastic] xmerge -s=fileA.txt -d=fileB.txt
* To merge two files a common base file is also required:
[plasticgui|winplasticx|plastic] xmerge -s=fileA.txt -d=fileB.txt -b=base.txt
In order to determine if a merge was successful, PlasticX will return 0 or 1 as the application exit code. 0 means a merge was successfully performed and the result file has been save, 1 means that a merge has been aborted or not saved.
All platforms - PlasticX: Open Merge view from command line
The merge-to view could be open from command line to solve the branches merge conflicts, it can be invoked like this: plasticx --merge=/main/task001@myrep@myserver:8084 --to=/main@myrep@myserver:8084
This command has 2 arguments, "–-merge" for indicate the source branch and "–to" for indicate the destiny branch in merge.
When this command is executed from command line a new plastic window will be displayed with the merge view opened, and the merge conflicts will be shown in this view.
All platforms - PlasticX, GluonX: Proxy configuration
When connecting to an on-premises server for the first time, we added an option to use a proxy. This option was already available on Windows, and now you can use it on the three platforms from the new GUI:
Learn more about proxy servers here: https://www.plasticscm.com/documentation/administration/plastic-scm-version-control-administrator-guide#Chapter4:Usingaproxyserver
All platforms - PlasticX: show code moves between files in diff window
Plastic can detect code refactors where code blocks have been moved from one file to another.
When you diff a branch or changeset a notification will be shown in the Diff window if such a refactor is detected.
Clicking the Show button will group the changes related to the refactor in the diff window file list.
If the diff contains a large number of items, rather than run a potentially long calculation, we show a notification with the option to run the refactor analysis.
Server: The REST API to download revisions could fail for encrypted data
Version 2 of the endpoint to download a file revision content (api/v1/repos/repName/revisions/revId/raw?version=2) fail to download an encrypted big file content (over 4MB) when the file content cannot be compressed.
All platforms - PlasticX: Allow annotate on a not checked-in file
An exception was thrown when trying to annotate a not checked-in file, now an empty annotate view will be displayed.
Server: Avoid reloading users & groups multiple times
The users and groups are reloaded periodically from the authentication provider. But due to an error, on each periodic reload, the reload was done multiple times. Now it's fixed
All platforms - PlasticX: Mark viewed files on Comments selection
Some files from diff items panel were not marked as viewed in code review window when a comment was selected from comments list, this files came from the diffs for a previous revision. It has been fixed and now all the files will be marked as viewed when any new comment selection were done.
All platforms - GluonX: fixed Gluon plastic links to a file not opening
In some cases, when trying to open Gluon plastic link to a file, Gluon tried to open that file in a new workspace and failed, we fixed this issue
Also, we improved the design of "Get Plastic link" button in Gluon Workspace Explorer Details
All platforms - PlasticX, GluonX: Cannot configure a custom diff tool
The file type extension data (FileType) has been removed from configuration (client.conf) for diff tools with custom extension.
All platforms - PlasticX: Fixed layout when searching in Browse Repository
Search panel in Browse Repository expanded when searching, we fixed the layout
All platforms - PlasticX: Fixed duplicated control is Issue trackers preferences
In Preferences -> Issue trackers, if the user clicked twice "Bind to this issue tracking system", the controls duplicated in the dialog, we fixed this issue
11.0.16.7419: Sep 22 2022
All platforms - DevOps: TrunkBot learnt to pass user defined branch attributes to the CI plan.
Now it is possible to configure the TrunkBot mergebot with a list of user-defined branch attribute names. When TrunkBot processes a branch, it will calculate the branch attribute values and it will forward them to the underlying Continuous Integration plan, triggered to build & test the branch being processed, as key-value parameters (attribute name-attribute value).
See how this feature looks like:
1- First of all, let's open the configuration of an instance of a TrunkBot mergebot, "CI Integration" section.
Here you can see new text fields where you're able to specify a comma-separated list of branch attribute names to forward to both the build & test plan and, if defined, to the "after-checkin" plan if the branch is successfully merged.
In the example above, 'product-type' and 'arch' attributes will be considered for the build & test plan, whereas the after-checkin plan will consider the 'deploy-type' attribute.
REMARK: The TrunkBot won't create any of these attribute names in the repository automatically. This has to be done by the user or the repository administrator.
These attributes can be easily created throught the attributes view of the Plastic SCM GUI:
2- Now let's create some changes in the repo monitored by the TrunkBot instance. Let's create branch 'main/scm003', submit a new changeset, set some values for the user-defined branch attributes we're using in this example, and finally mark the branch status as 'resolved', enabling the TrunkBot instance to process it and try to merge it to the specified 'trunk' branch: the 'main' branch:
3- We're using Jenkins in this example as the CI system. When the TrunkBot processed branch 'main/scm003', it forwarded the 'product-type-to-build' and 'arch' attributes and their values on 'main/scm003' to the execution of the 'build-tools-plan' we have defined in Jenkins (see step #1):
This way, the 'build-tools-plan' is able to read these properties and customize its steps depending on these values, if required.
4- Let's suppose the 'build-tools-plan' ran successfully for 'main/scm003' and the branch got merged into the defined 'trunk' branch: the 'main' branch:
We also defined a plan to run after a successful merge of a branch in the "CI Integration" section of the TrunkBot instance (see step #1).
In this example, it will pick the 'deploy-type' attribute value of branch 'main/scm003' just merged, and will forward it to the plan to run after checking a branch in, named 'deploy-tools-plan':
Remarks:
* In case the attribute does not exist, or a branch does not have such attribute set, the trunkbot will create and sent the property with empty value to the CI plan anyway. Each CI system may behave differently when a plan is triggered and a property is set to an empty value.
* Also notice that Jenkins will add the 'PLASTICSCM_MERGEBOT_' prefix to the property name (the name of the attribute).
Windows - PlasticFS: New WinFSP version improves Python support
Some Python scripts failed when trying to solve virtual paths with Pathlib.
> solvemypath.py [WinError 1005] The volume does not contain a recognized file system.
This happened as the implementation relies on the Windows Mount Point Manager to solve the path, but WinFSP didn't support registering virtual file systems in that facility... until now!
> solvemypath.py Full path: C:\Workspaces\DynamicWk
To use this feature, you will need to uninstall WinFSP, reboot your computer and start PlasticFS as usual. The new version of the WinFSP driver will be automatically installed.
Windows - PlasticFS: New WinFSP version fixes Visual Studio "Go to file"
Using "Go to file" (Ctrl+T) in Visual Studio didn't work reliably inside dynamic workspaces, not returning results or even freezing the IDE from time to time. Now it works consistently.
To use this feature, you will need to uninstall WinFSP, reboot your computer and start PlasticFS as usual. The new version of the WinFSP driver will be automatically installed.
11.0.16.7411: Sep 19 2022
All platforms - PlasticX: Filter code reviews
A new combobox has been added to Code reviews view in order to apply filters to the displayed items list.
All platforms - PlasticX: Added "Close merge view and open pending changes view" preferences option
We have added a new option in Diff and Merge Preferences: "close merge view and open pending changes view when a merge is completed"
If this option is checked, when a merge is completed, the Merge View will be
automatically closed and Pending Changes View will be shown, improving the user workflow.
Also, when a merge is completed and this new option is not checked, we modified the "merge finished" message adding two links in order to open Pending Changes View or open Preferences Window.
Command-line client: Creating workspaces is simpler than ever
Until now, to create a workspace using cm you had to give it a name and indicate the path and the repository:
$ cm wk mk project ./project rep:project@mydefaultserver
Often, the three are named the same. For that reason, now it is possible to use a shortened syntax:
$ cm wk mk project
This command will create a workspace infering the name and path from the repository spec you pass as argument!
And advanced use of the command also allows you to specify a different server:
$ cm wk mk project@myorg@cloud
All platforms - PlasticX: Fixed exception when showing semantic history for item checked out
Showing the semantic history (available from the Annotate view) for an item checked out no longer causes an error.
Server: Fixed access violation exception
The server could crash due to an access violation exception sending the response to the client on a corner case of concurrent usage of the client's connection.
All platforms - PlasticX: Disable History menu option for added files
We disabled the History menu option in the Workspace Explorer for added files because added files have no history.
11.0.16.7388: Sep 07 2022
All platforms - PlasticX, GluonX: Mark unviewed diffs in bold
The list of differences in Diff window will display viewed items in normal text style and non viewed in bold text style. It'll apply just to the path column for each difference from the list.
All platforms - PlasticX: Added new semantic history view
We added a new view to PlasticX: the semantic history. From this view you can see the history of individual methods or classes inside each file. This view was available on the Windows legacy GUI, and now you can use it from every platform in PlasticX. Check it out:
All clients: GitSync doesn't fail anymore if it cannot access to a revision data.
GitSync won't fail anymore if for whatever reason it can't access the contents of a given revision. It will add an empty revision in the Git package instead.
This way we allow syncing with Git even if an old revision is not present due to any old or weird issue.
All platforms - PlasticX: Code review skip merge tracking
A new button to group the diffs by merge has been added to Code review window. This button will be available only when the selected branch/changeset has merges in the differences list.
All platforms - PlasticX, GluonX: Added "Scan network" button
Added a new "Scan network..." button below the server entry, when connecting to an on-premises server. This button will show a dialog that allows you to easily find Plastic servers in your local network
All platforms - PlasticX: Issue trackers not configurable without workspace
A created workspace is required to configure any issue tracker from the Preferences window. For this reason the view controls will be hidden and a message will be displayed when no workspace is loaded.
All platforms - PlasticX: Linked tasks browse broken
Browse button from Linked tasks panel in Pending changes view didn't open the correct task URL in the web browser. The task Id format has been fixed in order to open the URL properly.
Server: The REST API to download revisions had a memory leak.
The endpoint to download a file revision content (api/v1/repos/repName/revisions/revId/raw) had a memory leak when the '?version=2' query parameter was specified. Fixed.
All platforms - PlasticX, GluonX: only show empty comment warning if user wants it
We were failing to save your preference for not re-showing the empty comment warning if you cancelled the warning dialog.
PlasticX: Unexpected directory conflicts after solving selected file conflicts
Unexpected new directory conflicts appear after merging the selected file conflicts. Now, after merging the selected files only the pending file conflicts remains.
Also, the check-in of the previous merge result, with the reappearing directory conflicts, could fail with an item loaded twice error. Now that the merge is working properly the result can be checked in properly.
All platforms - PlasticX: fixed exception scrolling diffs in diff window
We have fixed an unexpected exception that appeared when scrolling Xlinks diffs in diff window
Also, we will always show in normal font style the merge and changes categories
All platforms - PlasticX: Restore a in-progress merge on restart
Now when Plastic is restarted, if there are pending links, the in progress merge is restored. In this case, the Merge tab will be available from the startup and the loaded merge will be the last in-progress merge before the app is closed.
All platforms - PlasticX, GluonX: Fixed authentication issue when changing the server working mode
If you had a stored profile for a server, and the server changed its working mode, you were not able to update the the existing profile to authenticate to the server.
We fixed this issue - now when the server changes the working mode, the old profile is removed, and we ask for new credentials to save a new profile
All platforms - PlasticX: Fix code review comment navigation.
When double-clicking a code review comment in the Code Review Window, the left textbox didn't navigate to the proper line, so the DiffViewer scroll got de-synchronized. Now it's fixed.
All platforms - PlasticX: Linked tasks panel layout improvements
Some layout adjustments has been included to improve Linked Tasks panel.
A new button has been also added to Pending changes view at the top header area. This button "Show Tasks" will allow to show/hide the Linked Tasks panel when it'll be available.
Linked tasks are available when an issue tracker was previously configured with bind by changeset option selected.
All platforms - PlasticX, GluonX: Made dialog button order consistent
Some 3 button dialogs had the Cancel button in the wrong position. We reviewed all dialogs and made the button order consistent with platform guidelines in each case.
All platforms - PlasticX: fix exception when subtractive merge returned no results
We have fixed a exception when you tried a subtractive merge that returned no results (for example, a subtractive from a not connected branch)
All platforms - PlasticX: Fixed dynamic view location issues
There were some issues with the location of the dynamic views, such as the annotate, history or semantic history, where they appeared in the wrong place of the screen, or partially cut.
We fixed this issue, and now all these views are shown filling all the available space, no matter where they where opened from
11.0.16.7359: Sep 01 2022
All platforms: Moves with changes are now reflected by after-checkin and after-clientcheckin triggers
When you modify a file on the top of moving it, both changes are reflected in the workspace status and in the Pending Changes view. However, the checkout was not notified to triggers:
# E.g.: after-checkin (server-side) trigger MV "/ALICE.TXT" FILE#br:/main;changeset:16@rep:Project@repserver:Organization@cloud ->"/BOB.TXT" FILE#br:/main;changeset:15@rep:Project@repserver:Organization@cloud
We added that information to the input data:
# E.g.: after-checkin (server-side) trigger MV "/ALICE.TXT" FILE#br:/main;changeset:16@rep:Project@repserver:Organization@cloud ->"/BOB.TXT" FILE#br:/main;changeset:15@rep:Project@repserver:Organization@cloud MV "/BOB.TXT" FILE#br:/main;changeset:16@rep:Project@repserver:Organization@cloud ->"/BOB.TXT" FILE#br:/main;changeset:15@rep:Project@repserver:Organization@cloud
Linux - PlasticX: Open with dialog was not displayed.
The native file dialogs (Open with, Save the file, etc ...) were not correctly displayed on Linux boxes. Now it's fixed.
11.0.16.7348: Aug 25 2022
All platforms - PlasticX, GluonX: Delete current workspace could throw non-controlled exceptions
If the user deleted the current workspace in use in the GUI (using the GUI or delete workspace command), further operations with that deleted workspace would throw non-controlled exceptions that could close the program; we fixed this issue.
All platforms - PlasticX: Show warning when the user tries to delete changeset involved in a pending merge
We now show a warning message and stop the delete changeset operation if you try to delete a changeset that is the source of a pending merge link. We do it because deleting the merge source puts you in an invalid state where you cannot later check in the merge.
All platforms - All client applications: Upgraded interface assembly consumed by issue tracker extensions
We support connecting any client application to an issue tracker to retrieve a user's list of assigned tasks, create a proper branch, or open a task in the issue tracker.
We provide built-in connectors for many issue trackers, such as Jira, Bugzilla, etc.
And we also published an interface so you can write your own connector for a custom issue tracker. This interface is located at issuetrackerinterface.dll
file, in the client
binaries folder of a Plastic SCM installation.
We've upgraded the issuetrackerinterface.dll
and now is compiled in netstandard2.0
(instead of net framework 2.0
). This will enable further improvements in the issue tracker subsystem of plastic.
Just in case you have a custom extension compiled in net framework 2.0, you will have two options:
* Upgrade your custom extension and compile it in net framework 4.0 or above
* Use the legacy issuetrackerinterface.dll
compiled in net framework 2.0, located at client/extensions
directory of a windows installation of Plastic SCM
All platforms - PlasticX, GluonX: added warning for an empty check-in comment
We have added an optional warning if you accidentally try to check in with no check-in comment. It looks like this.
You can activate it in Preferences -> Comments:
Command-line client: 'cm history' shows if the revision was archived.
The 'cm history' command shows whether the revision's data was archived. It adds a new entry for each history entry specifying the data status. The possible values are 'Available' or 'Archived'. The value is empty for the moved/removed history entries.
Default output:
D:08/09/2022 10:26 CS:1 B:/main DATA:Archived C: my comment
Long output (--long):
... Repository spec: repo@server:8087 Data status: Available
Xml output (--xml):
... <RepositorySpec>repo@server:8087</RepositorySpec> <DataStatus>Archived</DataStatus>
All platforms - PlasticX: Branch filtering on new history view
Further improving the new history view, a dedicated branch filtering popup has been added!
Filtering by one or as many branches as needed is now possible. You can try it out by viewing the history of any file or directory and clicking the 'branch' button near the search bar.
All platforms - Plastic, PlasticX, Gluon, GluonX: pending changes check status preserved when Incoming changes applied
Previously, pending changes you had unchecked in the Pending Changes view (or Check-in view in Gluon) were being checked when Incoming Changes were viewed or applied. We now preserve your chosen checked state.
Note, that merging can still check previously unchecked items. This is because all items involved in a merge must be checked in together. To help you avoid issues trying to check in a subset of a merge we automatically check all the items involved in the merge.
All platforms - PlasticX: Create button not refreshed in create branch dialog
The Create button status needs to be refreshed depending on the content of the text fields of the current displayed tab in "Create branch dialog". When an issue tracker was previously configured, two ways of creating a new branch will be available, Manual and From task. The branch name will be mandatory to create a new branch.
Command-line client: A workspace created with 'cm wk mk' unexpectedly points to the default repository
When creating a workspace there is no need to specify a repository. A default one will be selected instead.
If a non-existent repository is specified when creating a workspace, the command was silently falling back to picking a default repository. This behavior was misleading.
Now, the command just fails and shows an error:
> cm wk mk Project ./Project ProjectTYPO@thecompany@cloud The specified repository couldn't be found: ProjectTYPO@thecompany@cloud. > cm wk mk Project ./Project Project@thecompany@cloud Workspace Project has been correctly created
Command-line client: The 'cm wk mk' subcommand does not always accept the 'rep:' prefix
Creating a workspace pointing to a repository specified with the 'rep:' prefix failed silently if a server address was not specified.
> cm wk mk Project ./Project rep:project@thecompany@cloud # This works. > cm wk mk Project ./Project rep:project # This fails silently. > cm wk mk Project ./Project project # This works even so. [console] Now the second command works as you would expect.
All platforms - PlasticX: corrected GUI hang when switching during Undo
Attempting to switch to another workspace while a long Undo operation was in progress would cause the GUI to hang.
Now, if an operation is in progress, we inform the user and don't allow the switch until the operation has been completed.
All platforms - PlasticX: Fixed changeset -1 exception
There was an exception thrown when selecting the Home changeset in the Branch Explorer when there was a diff view in the background.
We fixed this issue
All platforms - PlasticX: exception thrown if pending merge source changeset not found
If the source changeset of a pending merge link could not be found (probably because it was deleted), an exception was thrown in the Pending changes view. Now, in this case, we display some helpful text in the merge link description, letting you know you will not be able to check in the merge (because the source changeset is missing).
All platforms - PlasticX: Hide the "add" repository button before org is created
Fixed issue that allowed the user to click 'add' repository button. The 'add' repository button has been hidden when a user is not part of an organization yet.
Windows - PlasticX, GluonX: allow file rename changing case only
We fixed the validation in the Rename dialog of the Items view to allow renames that only change the case of the name.
11.0.16.7303: Aug 11 2022
All platforms - GluonX: Remark current loaded revision
The current loaded history revision will be remarked in bold style in the History Panel.
All platforms - PlasticX, GluonX: Issue tracker configuration
A new preference option has been added to the Preferences window for the issue tracker configuration.
Some features will be available if this preference is enabled:
* Create new branch from a existing task.
* Checkin operations record attached to tasks.
* Automatic status transitions.
* Display linked tasks in pending changes view.
All platforms - Server: GUIDs storage is 5 times faster
We improved the performance of reading GUIDs in our Jet backend. Now reading a GUID is 5 times faster than before!
Taking into account that many objects in the Plastic SCM data model contain a GUID, almost all read operations (and especially those in bulk) will take advantage of this improvement. But not only that, the new method of reading GUIDs does not allocate any memory at all - so we also (slightly) reduced the memory footprint of the Plastic SCM Server. Good news overall!
Command-line client: GetWorkspaceFromPath command now displays workspace type
Workspaces can be of two different types: regular or partial (Gluon). In addition to that, Windows users can choose between static or dynamic workspaces (virtualized with PlasticFS).
Now, the GetWorkspaceFromPath command can display this extended information if the option --extended is provided to the command:
cm gwp C:\mygluonwk\ --extended mywk C:\mygluonwk mymachine dca2b0fc-07ce-434f-949a-009d8c62034d partial dynamic
It is also possible to get this information through the --format option by using the 'type' and 'dynamic' keywords:
cm gwp C:\mysourcewk\ --format="Name: {wkname} | Type: {type} | Is: {dynamic}"
Name: mysourcewk | Type: regular | Is: static
More information in the help (cm [gwp | getworkspacefrompath] --help)
Server - DevOps: Code Review gating for Multiliner mergebot
The built-in multiliner-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 multiliner-bot configuration to activate this feature:
The feature works as follows:
* When a code review of a tracked branch(*) is created, or its status changes, the task branch is queued in multiliner-bot.
* Then, multiliner-bot will eventually dequeue this task branch. But before continue its processing in the CI cycle, multiliner-bot will check whether there is at least a "Reviewed" code review for this branch. Otherwise, the branch processing is skipped, and the branch is queued again at the end of the queue.
* 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 multiliner-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 "Under review".
* 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 multiliner-bot configuration).
((*) tracked branch: those that starts with the configured branch prefix in multiliner-bot config)
All platforms - PlasticX: Checkin & Undo shortcuts
Checkin and Undo operations from pending changes view will be now available using key gestures, Alt+I for Checkin button and Alt+U for Undo button.
All platforms - PlasticX, GluonX: Fix date formatting for languages different than English
When the system language was not set to English, we were forcing some date and number fields to the English formatting. We did this to fix some issues with Turkish characters.
We addressed each issue individually, so now we can take the system language for date fields again, instead of forcing it to English.
All platforms, PlasticX, GluonX: Various diff improvements
* Updated the syntax highlight grammars to the latest version, which brings the latest language features for major languages like C#, Python, Java, etc...
* fixed some syntax highlight exceptions registered in the log coloring some documents.
* Improve the behavior when changing a file in the pending changes view or the diff view. Previously, when selecting another file, the diff viewer scrolled to the first line, and then it went to the first diff. Now the first line is not scrolled. See before and after:
Before:
After:
All platforms - PlasticX: Create top-level branch
A new menu item has been added to branches context menu in Branches view and Branch explorer. This new option will allow to create new branch in level 0, a top-level branch.
All platforms - PlasticX: Color changesets by server in the Branch Explorer.
We ported the "Color changesets - replication source" functionality, already existing in the Legacy GUI, to the new GUI. It allows to set up custom colors for all the changesets belonging to a certain server.
This is how it works:
All platforms - PlasticX: Color changesets by user in the Branch Explorer
We ported the "Color changesets - users" functionality, already existing in the Legacy GUI, to the new GUI. It allows to set up custom colors for all the changesets created by a certain user.
This is how it works:
All platforms - PlasticX, GluonX: Automatically detect local server
When configuring Plastic for the first time, if you select the on-premises mode, you will see an empty server field that you must fill with the server you want to connect to.
Now, if there is a local server running on a well-known port, this field automatically filled:
All platforms - PlastiX, GluonX: Object GUID in Diff window
The object GUID has been included in diff window as diff metadata.
All platforms - PlasticX: Branch name shown incorrectly when branch explorer filtered
We fixed an issue where the branch name was being displayed incorrectly in the Branch Explorer when you filtered the view to show just the current and related branches. (You can do this from the context menu on a branch, from the "Branch Explorer" submenu).
macOS - PlasticX: Show History shortcut hides app
Cmd+H shortcut is currently used by the system to hide apps, so it can't be used in PlasticX to show the history view.
For this reason, the "Show history" shortcut has been changed to Cmd+Y and the Redo shortcut has been also changed from Cmd+Y to Shift+Cmd+Z.
Command-line client: PlasticLink arguments wrongly processed as option arguments
If you use a PlasticLink as argument for the command line, the command failed with a cryptic error message:
> cm attribute set att:CodeReviewLink@MyGame@MyServer:8087 br:/main/CoolFeature plastic://MyServer:8087/repos/MyGame/code-reviews/9999 attribute: Unexpected option --MyServer:8087/repos/MyGame/code-reviews/9999
Now the command does not fail.
11.0.16.7274: Aug 04 2022
All platforms - PlasticX: Auto-refresh Sync to Cloud view after opening
In Plastic X, when selecting "Sync to Cloud" view, the view was not refreshed. Now it's automatically done, helping to improve the workflow.
All platforms - PlasticX, GluonX: Removed Plastic SCM prefix from release name
All Plastic releases have a release name, which is a song name and the artist. This name can be seen in the about window.
A few releases back we added a "Plastic SCM" prefix before this name. We removed it, so now you see just the name as before.
All platforms - PlasticX: Improved history view
We re-wrote the history view from scratch. The new history view has the following features:
* Improved the revision list layout. Now it optimizes the horizontal space. We also display the avatar for the revision creator (note that it displays the Gravatar image when the username is an email).
* Setup a new panel that allows displaying diffs/annotate for the selected revision.
* Support history for text, image, binary, and directories revisions.
* Note that in this version of the history view, we display the changeset comment for the moved and removed revisions (previously the comment was not displayed).
* We also improved the way we display the changeset comments in the details panel. Long comments are split in two chunks, and the second chunk can be expanded/collapsed.
See it in action:
And now for images:
Note that you can still use the legacy history view by setting up the following setting in the plasticgui.conf file, placed in the user config folder:
UseLegacyHistoryView=True
All platforms - PlasticX: Added Merge options
We brought back this feature from the legacy GUI to PlasticX
This feature will allow PlasticX users to define merge options for each merge:
*Merge from both contributors, or only from one side
*Automatic merge conflict, or manual merge conflict (always launch the merge tool event with 0 unsolved conflicts)
*Ignore Merge Tracking
*Advance options: ancestors
Command-line client: Annotate command options update
The command to annotate files (cm annotate) was using, among others, the --ignore option, with (eol | whitespaces | "eol&whitespaces" | none) as possible values. Due to other commands are using another interface, it has been decided to homogenize them all. Now, --ignore will become --comparisonmethod and its regarding options will be (ignoreeol | ignorewhitespaces | ignoreeolandwhitespaces | recognizeall).
NOTE:
Old syntax will be deprecated, but it is still working. Therefore, scripts or other programs using this command will continue working as before. Despite of this, we encourage to update its usage to the new interface. More details in the command help.
Example: in case we want to annotate a foo.c file which has been created and checked-in on a unix system and after that some changes were done and checked-in on a Windows platform, we might want to ignore the EOL:
cm annotate foo.c --comparisonmethod=ignoreeolandwhitespaces
Command-line client: Diff command options update
The command to show differences (cm diff) was using, among others, the --ignore option, with (eol | whitespaces | "eol&whitespaces" | none) as possible values. Due to other commands are using another interface, it has been decided to homogenize them all. Now, --ignore will become --comparisonmethod and its regarding options will be (ignoreeol | ignorewhitespaces | ignoreeolandwhitespaces | recognizeall).
NOTE:
Old syntax will be deprecated, but it is still working. Therefore, scripts or other programs using this command will continue working as before. Despite of this, we encourage to update its usage to the new interface. More details in the command help.
Example: in case we want to check a foo.c file which has been created and checked-in on a unix system and after that some changes were done and checked-in on a Windows platform, we might want to ignore the EOL:
cm diff rev:foo.c#cs:1 rev:foo.c#cs:2 --comparisonmethod=ignoreeol
Command-line client: Shelveset apply command options update
The command to apply shelvesets (cm shelveset apply) was using the --comparisonmethod with (ignoreeol | ignorewhitespaces | ignoreeolwhitespaces | notignore) as possible values. Due to other commands are using another interface, it has been decided to homogenize them all. Now, "ignoreeolwhitespaces" will become "ignoreeolandwhitespaces" and "notignore" will become "recognizeall".
NOTE:
Old syntax will be deprecated, but it is still working. Therefore, scripts or other programs using this command will continue working as before. Despite of this, we encourage to update its usage to the new interface. More details in the command help.
Example: in case we want to apply a shelveset and, when comparing actual with previous contents for merging the changeset, we might want to ignore the EOL and whitespaces:
cm shelveset apply sh:2 --comparisonmethod=ignoreeolandwhitespaces
Command-line client: Diffmetrics command options update
The command to print metrics of differences between two revs (cm diffmetrics) was using, among others, the --ignore option, with (eol | whitespaces | "eol&whitespaces" | none) as possible values. Due to other commands are using another interface, it has been decided to homogenize them all. Now, --ignore will become --comparisonmethod and its regarding options will be (ignoreeol | ignorewhitespaces | ignoreeolandwhitespaces | recognizeall).
NOTE:
Old syntax will be deprecated, but it is still working. Therefore, scripts or other programs using this command will continue working as before. Despite of this, we encourage to update its usage to the new interface. More details in the command help.
Example: in case we want to see how many added, modified and deleted lines in a foo.c file and compare them with its version from a different branch, recognizing all, including EOL and whitespaces:
cm diffmetrics foo.c#cs:2 foo.c#br:/main/scm007 --comparisonmethod=recogniseall \
--format="There are {0} changed, {1} added and {2} deleted lines."
Server: Server backups no longer block read-only web calls
The web calls were not allowed while the server was running a backup. Now the web calls that are read-only calls are allowed during the backup. This applies to the web client, the web admin, and also mergebots.
Command-line client: After-checkin trigger payload: move operations were not displaying move reference information
Previously, after-checkin triggers were generating a JSON content with several variables. One of these variables is named INPUT, which contains information about the changes checked in. These changes might be one of the following: AD, CH, DE and MV, indicating the type of operation which was performed regarding one item. MV operation has a particularity, as it involves not only one file but two.
Now it has been fixed and displays both source and destination of the moved file in the proper order (src->dst).
For example, let's imaagine we have a workspace with the following controlled contents: "./foo.c" and "./FooFolder" and we perform the following operations:
cm mv ./foo.c ./fooFolder/foo2.c cm ci -c="foo belongs to fooFolder"
The INPUT variable will now display:
'INPUT':'CH \"/\" DIR#br:/main;changeset:59@rep:default@repserver:localhost:8084 CH "/fooFolder" DIR#br:/main;changeset:59@rep:default@repserver:localhost:8084 MV "/foo.c" FILE#br:/main;changeset:2@rep:default@repserver:localhost:8084->"/fooFolder/foo2.c" FILE#br:/main;changeset:2@rep:default@repserver:localhost:8084'
As you can see, there are two changes corresponding the changes in the root directory and the change in the fooFolder and a MV operation, which now details both source file and destination file of that operation, separated by a "->" operand and both displaying all the information re the change.
Therefore, for the move operation, the specification will become:
status src_item_path item_type#br:branch;changeset:cset_id@rep:rep_name@repserver:server->status dst_item_path item_type#br:branch;changeset:cset_id@rep:rep_name@repserver:server
IMPORTANT NOTE: it is possible that users already parsing this output will perceive their parsers start to fail. We are sorry for any inconvenience this might cause. We balanced different options and finally decided to give you more information for you to use, despite of it might be needed to retouch existing parsers at this moment.
Command-line client: Changelist wrongly removed by cm status with filter
cm status --changelist --controlledchanged
Running the command from above, non-persistent changelists only containing local changes are expected to be omitted from output. However, the command was actually erasing the changelist. Now, doing the same preserves the changelist intact.
All platforms - PlasticX: Fixed error in branches explorer dialog
Opening the branches explorer dialog would, in some cases, for example performing the "Merge from this changeset to ...", trigger an unexpected exception. We fixed that.
All platforms - PlasticX: Focus items list after search
In Plastic X, using the items search and selecting a search result using the "Enter" key, caused the items list to not grab the keyboard focus. Now it's fixed.
All platforms - GluonX: Fixed comments textbox losing the focus.
After doing a check-in or undo checkout operation in GluonX, a bug prevented the check-in comments textbox to preserve the keyboard focus while typing. Quite annoying. Now is fixed.
All platforms - PlasticX: Fixed exception in workspace explorer
There was an exception that was thrown sometimes while navigating through directories in the workspace explorer. This issue is now fixed
All platforms - PlasticX: Null exception closing shelves view
In PlasticX, there was a rare issue where a null exception message could appear when closing Shelves View, we fixed this issue
11.0.16.7248: Jul 28 2022
All platforms - PlasticX: New Details panel in Workspace Explorer
The Details panel has been added to the right side of the Workspace Explorer in PlasticX. This panel contains the image preview and properties of the selected item in the workspace tree, so it will be refreshed on every new selection. It is a collapsible panel, by default it's collapsed and can be expanded by using the new button "Show details" at the top right.
All platforms - PlasticX: Added comments auto-text feature
We added comments auto-text feature to Plastic. This allows the user to use predefined variables (Date, UserName, Branch Name) or a custom string in the comments textbox in Pending Changes view:
Also, the icons in Preferences Window were updated.
Command-line client: Upgraded changelist command now allows specifying files for the name and the description.
Changelist command has been upgraded with new verbs for management ("create" and "delete" substituting "add" and "rm"). Now it is possible to use new options in changelist commands: --namefile, --descriptionfile, --newnamefile. These options allow to replace the literals used to specify the name of the changelist or its description and to use a path to a file containing the changelist name or description instead.
For instance
cm changelist add "Physics-related changes" "Changes related to the game world environment and the implemented physics"
Could be updated to
cm changelist create "Physics-related changes" --descriptionfile="desc.txt"
Or also could be updated to
cm changelist create --filename="name.txt" --descriptionfile="desc.txt"
Or you could also rename a pre-existing changelist with something like the following:
cm changelist edit --filename="name.txt" rename --newnamefile="newname.txt"
Bear in mind:
- Old command syntax is still working but tagged as deprecated and the help has been updated. If you have automated scripts using this command, they will work, but we encourage you to update those and test the new amazing functionalities
- You can still use the same literals or use the options, whatever the combination that best suits your needs (options + literals, literals + options, all options, all literals).
- The --namefile and --newnamefile options do not allow invalid files or content (non-existing file, empty or multilined texts); in addition, if an non-existing file is supplied to --descriptionfile, it will also fail, but no content validity will be done.
DevOps: Remove branches from Trunkbot processing queue
If you accidentally set the status attribute to a branch, your Trunkbot might enqueue it and eventually merge it.
Before, you could remove it from the processing queue by changing the value of the attribute to something else. Now, removing the attribute from the branch will have the same effect.
Server: Edit cset comment now checks branch perm
When you edit the comment of a changeset, the “change comment” permission needs to be set in the branch that contains the changeset.Before this change, the repo permission was checked, which wasn’t as good solution as checking the permission in the branch.
All platforms - PlasticX: Remark current working item
The bold text style has been applied to the current working item, for the "Name" column of the Changesets and Branches views tables, in order to indicate which item on the list is currently loaded.
Command-line client: Configure data encryption for remote servers
As the owner of a Plastic server, you can configure encryption when trying to pull data from repository inside a remote encrypted server for the first time.
This was true for the Plastic GUIs, but now it is also possible within the command line:
> cm pull br:/main@donuts@homer@cloud dotnuts@marge:8084 ... The 'homer@cloud' source server requires data encryption. Your server (aka 'marge:8084') is not yet configured to handle encrypted data from it. Remarks: * Be very careful with the encryption password; it's the only way to decrypt your data on 'homer@cloud'. * If you're decrypting data and you enter a wrong password, the data will fail to decrypt and you will have to edit cryptedservers.conf on your server to fix it. * Be careful to use the same password (encryption key) company-wide to work with 'homer@cloud'. Otherwise, data will be encrypted differently in each server. Enter a password to generate the encryption key (leave empty to cancel): *********** Encryption configuration added for server 'homer@cloud'. ...
All platforms - PlasticX, GluonX: GUI asked for credentials unnecessarily
When adding a new account belonging to several organizations, the UI unnecessarily asked for credentials for every organization belonging to that account. Now it's fixed.
All platforms - PlasticX: CPU remains active after a replication operation
When finishing a replication operation, the progress panel caused the UI to consume CPU even though the panel was not displaying any animation. Now it's fixed.
Windows - Client zip bundle: The command-line bundle some plugins such as Jenkins used lacked the zlib64.dll library. It is now fixed.
This affected only machines without a full Plastic SCM set up on them. Machines that had at least a setup with the complete Plastic SCM client or server did not encounter this issue, as at least one copy of zlib64.dll was in the DLL search path.
WebAdmin: Fix mergebots daily report
Opening the daily report of a mergebot throws a "something went wrong error". This happened since 11.0.16.7118. Now it's fixed.
All clients: Private files should not be cloaked
Before, private items could be matched by the cloaked filters set up in the 'cloaked.conf' file, so they didn't appear as simple private changes. From now on, only controlled items can be regarded as cloaked.
To keep the old behavior, you can also add the filters to your 'ignore.conf'.
Command-line client: Ls --tree for a file was not returning its path
When running the 'cm ls' command to get the content from a repository tree ('--tree option') and using a file as an argument, the {path} format field was empty:
How it was before:
cm ls /api.cs /bar.txt --tree=10@adventure@LOST:8087 --format="{path}|||{owner}"
|||james
|||james
Now it is evaluated to the file path, as expected:
cm ls /api.cs /bar.txt --tree=10@adventure@LOST:8087 --format="{path}|||{owner}"
/api.cs|||james
/bar.txt|||james
Windows - PlasticFS: Workspace directory already exists
Before, opening a dynamic workspace when PlasticFS is not running could create an spurious workspace directory. When restarting, PlasticFS was forced to set it aside in order to mount the workspace:
Directory moved from mount path Tried to mount at path 'C:\workspace', but it was not empty. Existing directory renamed as 'C:\workspace~moved0'.
Now Plastic behaves more kindly when the workspace is still not mounted on its path.
All platforms - PlasticX: Null exception closing differences view
In PlasticX, when opening more than one Differences View in Pending Changes View, closing a second or latter Differences View threw "a unexpected error has occurred" message
We fixed this issue
All platforms - GluonX: Fix in History Panel
If you selected a directory item or a item with no history (for example, a recently created file), and you tried to right-clicked in the history Panel, a exception appears. This issue is fixed.
11.0.16.7211: Jul 21 2022
All platforms - PlasticX: Added search textbox in MergeView
We added a new search textbox in MergeView, now it is possible to filter results
All platforms - PlasticX, GluonX: Fixed issues with Turkish language
When the system language was set to Turkish, there was some issues like unhandled exceptions and bad arrangement of controls in the GUI.
We fixed this issue, and now everything works in the same way, regardless of the system language.
All platforms - PlasticX: Fix subviews close button not visible
In PlasticX, when shrinking a subview (for example, annotate view), text header would eventually hide the close button
We fixed this issue in all subviews, close button won't disappear anymore. Also, text trimming was added to the header text.
Cloud Server: Backups could block access to a repository indefinitely.
When the Plastic SCM server puts a repository in read-only mode before backing it up, it first stalls new write operations and then waits for already running write operations to finish. There is a long-running read operation that was wrongly identified as a write operation. Because that long-running operation could be active for days, the server was unable to finish the repository backup, while still rejecting new write operations.
This is now fixed. First of all, this long-running operation is now correctly identified as a read operation, so it doesn't prevent the backup of the repository. And to prevent something like this from happening in the future, the server now has timeouts when waiting for write operations to end.
Plastic, PlasticX: Fixed users & group resolution on permissions working with multiple servers
The permissions dialog resolved the users and groups on the default server (the one used to configure the server). When the permissions dialog was shown from a different server and that server used an Active Directory authentication, the user and groups were not properly resolved. The SID was shown instead. Now, the users and group names are correctly shown.
All clients: find owner='me' condition works fine with multiple servers.
The shelve view didn't show your shelves in the workspaces that pointed to a different server than the default one (the default server is the one set in the client configuration). It happened only when the servers have different authentications.
The problem was that owner='me' condition was wrongly resolved against the default server. Now, it's properly resolved on the query target server.
11.0.16.7195: Jul 13 2022
All platforms - PlasticX: Expandable symlinks directories
Symlinks that points to a directory are now expandable from plastic itself!
This feature allows for easier navigation when the workspace contains symlinks. If a symlink points to a directory that is inside the workspace, it behaves like any other directory in the workspace, however if a symlink points to a directory that is outside the workspace, actions like "add to source control" are disabled for these files.
All platforms - Plastic, Gluon: Better error handling for plastic links
When opening a plastic link, if there are any issues while processing it (because it's in the wrong format, or the server specified can't be accessed) we were just exiting the application without showing any error report.
We improved this behavior, and now we show a message with the reason why the plastic link could not be opened.
All platforms: Added "Plastic SCM" prefix to assembly product name metadata
Before we were just setting the Release song name as "Product name" field in the assembly info of all the applications. Now we add the "Plastic SCM" prefix so some antivirus security reports using this "Product name" field can identify in a snap they belong to Plastic SCM.
All platforms - PlasticX, GluonX: Fixed selection in home view
There was an issue with the selection in the home view: when exploring the contents of a repository, if you selected a file or directory in the tree, and then clicked on a different repository, we were selecting a random item in the new tree.
We fixed this issue, and now when changing the repository, the tree selection is cleared
Cloud: Fix the permissions issue with the case of the letters on the email
The permissions set for a single user were only working when the user logged in using the same case of the letters on the emails. For example, you allow jame.webb@telescope.com to see a repository, but when James logs in using James.Web@telescope.com cannot see the repository. Now it's fixed.
All platforms - DevOps: Mergebots and plugs not running due to missing log4net dll
Recently we updated the log4net version to a more secure one. There were some related projects (mergebots) lacking that update which were failing. Now they are working as expected.
11.0.16.7176: Jul 07 2022
All Platforms - PlasticX: Added context menu actions to Code Editor.
The Code Editors displayed in the DiffViewer, the File Content Viewer, Annotate view and the Merge view, now have available the following extra context menu actions:
* Undo
* Redo
* Copy
* Cut
* Paste
* Delete
* Go to line
* Select all
* Find
Note that all the actions can be executed using the shortcuts.
Note that Undo/Redo/Cut/Paste/Delete actions are not available in the AnnotateView since it's always a read-only editor.
All clients: Only the *.xxx rules are considered as extension rules.
Before, we considered the .xxx
as an extension rule. This could lead to weird behaviors when trying to ignore a folder that started with .
such as .vs
.
Now, the .vs
rule only matches files / directories with that exact name. It doesn't match paths with the .vs
extension like project.vs
This applies to all files that use path rules (ignored.conf, cloaked.conf, etc.)
All platforms - GluonX: Added shelves view
Now you can create and view shelves from the Gluon GUI.
There is a new "Shelve" button in the "Checkin changes" view that lets you create a shelveset with your pending changes in the same way as you do in Plastic.
There's also a "Show shelves" button that opens a side view with the list of shelves, from where you can diff, remove or apply them to your current workspace.
Windows - Plastic, PlasticX: auto-upgrade enabled for DVCS Edition
Auto-upgrade was previously only available for Enterprise and Cloud Edition. Now it is also available for Dvcs Edition. When a new version of the client is available, you will receive a notification in the help panel, with a link to initiate the upgrade.
All platforms - PlasticX, GluonX: Improve readability of disabled text boxes.
The contrast between the background and the foreground colors was not good enough for disabled textboxes. Now it's better:
All platforms - GluonX: Improve UI for recent check-in comments.
We moved the "check-in recent comments" button inside the textbox. This way we clear a bit the pending changes toolbar.
This is how it looks now:
Windows - PlasticX: Added diff arguments
In the legacy GUI you could open Plastic specifying arguments like the following:
plastic --diffchangesetsrc=cs:437@validations@alvaro_test@cloud --diffchangesetdst=cs:436@validations@alvaro_test@cloud
When switching to the new GUI this feature was lost. We fixed this issue and now you can specify the arguments in both GUIs
All platforms - Server: Add extra protection to the server's Accept Loop.
The Accept Loop is the entry point of every single connection to the Plastic SCM Server. It is at the very heart of our custom network protocol (plasticpipe), and it can handle thousands of new connections per minute. But if the Accept Loop exits for whatever reason, the server is unable of accepting new requests. And a server unable of attending to new requests is useless.
Now the accept errors are handled and the loop is restarted if needed. If the accept loop cannot be started on 3 tries the server will exist in a safe way.
This is beneficial not only to your local and Enterprise Plastic SCM setups but also to the Plastic SCM Cloud Regional Servers.
All platforms - PlasticX: Query field not behaving properly
An issue was fixed that prevented correctly typing a new query into any query filter field after deleting all its content.
All platforms - PlasticX: Annotate before these changes reported wrong revision.
Some customers reported that found a bug with "Annotate before these changes" button on PlasticX. Annotate before a given changeset, ended up annotating a wrong changeset. Now it's fixed.
macOS - PlasticX: Strikethrough lines were not visible.
The Mergetool displays some lines as strikethrough in the result text editor. A bug prevented those lines to be displayed as strikethrough in macOS. Now it's fixed.
All clients: Partial shelveset could fail to be applied when involving fs protection changes.
The 'partial shelveset apply' operation failed with an "Object reference not set to an instance of an object." error when these two conditions happened together:
1) The shelveset to apply contained fs protection changes for a directory.
2) This same directory contained controlled changes in the workspace before applying the shelveset.
Fixed.
All platforms - PlasticX, GluonX: Preferences couldn't be opened
Allow to open the Preferences window when the client.conf file has missing the Diff or Merge tools.
11.0.16.7134: Jun 30 2022
Command-line client: Shelvesets can be applied to partial workspaces.
Previously, it was not possible to apply a shelveset in partial workspaces (such as Gluon workspaces). Now we fully allow them (from the creation to the application).
c:\wkspaces\partialwk> cm partial shelveset apply sh:2
The apply operation tries to apply all the shelveset changes in the workspace if possible. However, changes can be skipped if they are related to items that are not configured in the workspace (they are silently ignored) or if they collide with local workspace changes (they are properly reported)
c:\wkspaces\partialwk> cm partial shelveset apply sh:2 The item won't be downloaded/moved because there is another item loaded in the same path: 'asset/texture/forest'. Please unload the item and retry the operation.
For more examples, you can check the help:
cm partial shelveset apply --help
Server: Log the web call in the ChannelCall
Now the Server monitors and log all the web calls too, so you can see those call with their stats on the ChannelCall log as you see for any other Plastic call. See a new log sample:
2022-06-03 10:27:23,722 INFO ChannelCall - conn: 0 protocol:web sec:none recb: 0|rect: 0|sentb: 309|sendt: 0|queuedt: 0|prt: 8|rq: 122|dest: 0|mt: 4|sert: 0|zip: 0| 127.0.0.1|user:tester|GET-/api/v1/repos/quake3/branches 2022-06-03 10:27:25,571 INFO ChannelCall - conn: 0 protocol:web sec:none recb: 0|rect: 0|sentb: 307|sendt: 0|queuedt: 0|prt: 3|rq: 123|dest: 0|mt: 1|sert: 0|zip: 0| 127.0.0.1|user:tester|GET-/api/v1/repos/quake3/main-branch 2022-06-03 10:27:27,287 INFO ChannelCall - conn: 0 protocol:web sec:none recb: 0|rect: 0|sentb: 6590|sendt: 0|queuedt: 0|prt: 3|rq: 126|dest: 0|mt: 1|sert: 0|zip: 0| 127.0.0.1|user:tester|GET-/api/v1/repos/quake3/branch/main/items/q3map 2022-06-03 10:35:29,707 INFO ChannelCall - conn: 0 protocol:web sec:none recb: 0|rect: 0|sentb: 729|sendt: 0|queuedt: 0|prt: 1532|rq: 210|dest: 0|mt: 2|sert: 0|zip: 0| 127.0.0.1|user:tester|GET-/api/v1/repos/quake3/changesets 2022-06-03 10:36:40,516 INFO ChannelCall - conn: 1 protocol:plastic sec:none recb: 111|rect: 0|sentb: 3|sendt: 0|queuedt: 16|prt: 11|rq: 216|dest: 0|mt: 2|sert: 0|zip: 0| 127.0.0.1|user:tester|CheckRepositoryExists 2022-06-03 10:38:11,002 INFO ChannelCall - conn: 2 protocol:plastic sec:none recb: 103|rect: 0|sentb: 85|sendt: 0|queuedt: 0|prt: 6|rq: 217|dest: 1|mt: 1|sert: 1|zip: 0| 127.0.0.1|user:tester|GetBranchInfoByName 2022-06-03 10:38:11,005 INFO ChannelCall - conn: 2 protocol:plastic sec:none recb: 18|rect: 0|sentb: 84|sendt: 0|queuedt: 0|prt: 2|rq: 218|dest: 1|mt: 0|sert: 0|zip: 0| 127.0.0.1|user:tester|GetChangesetInfoByNumber
See an example of how it was before:
2022-06-02 09:14:33,868 INFO ChannelCall - conn: 9 protocol:plasticproto sec:none recb: 912|rect: 134|sentb: 3645|sendt: 0|queuedt: 0|prt: 361|th: 65|dest: 0|mt: 158|sert: 0|zip: 0|cpu: 0| 127.0.0.1|user:tester|GetLockRule
2022-06-02 09:14:33,869 INFO ChannelCall - conn: 11 protocol:plasticproto sec:none recb: 809|rect: 162|sentb: 3612|sendt: 0|queuedt: 0|prt: 317|th: 67|dest: 0|mt: 2|sert: 0|zip: 0|cpu: 0| 127.0.0.1|user:tester|CheckRepositoryExists
2022-06-02 09:14:34,197 INFO ChannelCall - conn: 7 protocol:plasticproto sec:none recb: 913|rect: 126|sentb: 3742|sendt: 0|queuedt: 0|prt: 719|th: 63|dest: 0|mt: 489|sert: 0|zip: 0|cpu: 0| 127.0.0.1|user:tester|GetBranchInfoByName
2022-06-02 09:14:34,198 INFO ChannelCall - conn: 5 protocol:plasticproto sec:none recb: 793|rect: 447|sentb: 3680|sendt: 0|queuedt: 0|prt: 1269|th: 61|dest: 0|mt: 792|sert: 0|zip: 0|cpu: 0| 127.0.0.1|user:tester|GetRepositoryInfoByName
All Platforms: Command-line client
To list with the "--tree" option now displays the result regardless of some selector cannot be resolved
Previously, if several arguments were fed to the ls command in order to display their related trees, if one of them was not able to resolve the selector (i.e., there was a typo), the other trees were not displayed either. Now it is fixed and, regardless of the validity of each selector, it will display the results.
For example:
cm ls -r /existingDir /unexistingDir --tree=br:/main@myrepo@localhost:8084 NOT_DEFINED cS63/xl4G39inoaBFDLNzQ== 0 13/06/2022 12:20 dir 2 /main 20 19 /existingDir NOT_DEFINED T/zbMvjqdPBx+XMMAbnrZA== 9 13/06/2022 12:20 txt 2 /main 17 23 /existingDir/foo.txt Can't resolve the selector for the item /unexistingDir CommandResult 1
As you can see, the CommandResult will remain 1 (error), but the output will be dumped accordingly.
All platforms - all clients: display language no longer overriden on APAC systems
Previously, when the configured language was English "en" but the system language was Chinese, Japanese or Korean, we would force the client to use the system language.
We no longer do this, and the configured language is always used.
Windows - Plastic, PlasticX: Auto-upgrade enabled in Enterprise Edition for non-admin users
For a while the auto-upgrade feature has been available for all Cloud Edition users, but administrators in Enterprise Edition. We have now made auto-upgrade available for all users in all editions.
You will be notified of available version upgrades in the help panel:
If you click on the Download link, the installer will download:
Simply click 'Restart and Upgrade' to install the latest version:
Command-line client: Shelvesets can be deleted from partial workspaces.
Previously, it was not possible to perform a shelve operation in partial workspaces (such as Gluon workspaces). Now we fully allow every operation (create/apply/delete).
It is possible to delete an existing partial shelveset with shelveset id 3 doing the following
c:\wkspaces\partialwk> cm partial shelveset delete sh:3
Mind there is no confirmation message. In case you would like to see it was deleted you can execute the following command to list every existing shelve created in the repository:
c:\wkspaces\partialwk> cm find shelve
The creation subcommand (create | mk) is the default operation, so bear in mind that, if no subcommand is specified, it will try to perform the creation of a new shelveset.
For more examples, you can check the help:
cm partial shelveset --help
cm partial shelveset delete --help
All platforms - PlasticX, GluonX: Added select all shortcut
Added a new shortcut to select all rows in the tables and trees where the multiple selection is allowed:
- Ctrl + A (Windows and Linux)
- Cmd + A (MacOS)
Due to conflicts with existing keyboard shortcuts, the following shortcuts have been modified:
* "Annotate" shortcut, replaced with Ctrl + T (Windows/Linux), Cmd + T in MacOs
* "Apply label to workspace content" shortcut, replaced with Ctrl + L (Windows/Linux), Cmd + L in MacOs
All platforms - PlasticX: Restored status bar position in switcher window
We restored the correct status bar position in switcher window, now it will appear at the bottom again
11.0.16.7110: Jun 23 2022
Command-line client: Partial checkin allows --private option
Previously, it was not possible to use --private option in a partial checkin command. Now it is available and ready to use.
For instance:
c:\wkspaces\partialwk> echo "return 1;" > foo.c c:\wkspaces\partialwk> cm partial ci --private The selected items are about to be checked in. Please wait ... | Confirming checkin operation 11 bytes/11 bytes [################################] 100 %Modified c:\wkspaces\partialwk Added c:\wkspaces\partialwk\foo.c Created changeset cs:1@br:/main@repo1@localhost:8084 (mount:'/')
For more examples, you can check the help:
cm partial checkin --help
Command-line client: Shelvesets can be applied to partial workspaces
Previously, it was not possible to apply a shelveset in partial workspaces (such as Gluon workspaces). Now we fully allow them (from the creation to the application).
c:\wkspaces\partialwk> cm partial shelveset apply sh:2
The apply operation tries to apply all the shelveset changes in the workspace if possible. However, changes can be skipped if they are related to items that are not configured in the workspace (they are silently ignored) or if they collide with local workspace changes (they are properly reported)
c:\wkspaces\partialwk> cm partial shelveset apply sh:2 The item won't be downloaded/moved because there is another item loaded in the same path: 'asset/texture/forest'. Please unload the item and retry the operation.
For more examples, you can check the help:
cm partial shelveset apply --help
Windows - Plastic: Enable changelists for locally modified files
You can now move locally modified (changed, moved, deleted) files into user-defined changelists.
All platforms - PlasticX, GluonX: Enable changelists for locally modified files
You can now move locally modified (changed, moved, deleted) files into user-defined changelists.
All platforms - Command line client: Server connection profiles management reaches the command line!
We added the new cm profile
command. It has three subcommands that allow you to manage your server connection profiles from the command line client.
The command 'profile list' lists the connection profiles you have configured:
$ cm profile list 1 bananapi.codicefactory.com:8087 sergio UPWorkingMode 2 udt://development_org@localhost:8089 sergio UPWorkingMode 3 skullcito.codicefactory.com:9095 sluisp LDAPWorkingMode
The 'profile list' command has several formatting options. Check cm profile list --help
for further information.
The command 'profile remove' helps you to remove a configured connection profile. It works by specifying the profile index provided by cm profile list
:
$ cm profile remove 2
And 'profile create' helps you to create a new connection profile, either interactively or specifying all the necessary information through options:
$ cm profile create Enter server address: skullcito.codicefactory.com:9095 Enter credentials to connect to server [skullcito.codicefactory.com:9095] User: sluisp Password: ***************** Profile 'skullcito.codicefactory.com:9095_LDAPWorkingMode' correctly created
Check cm profile create --help
for further information about the options you can use to create profiles.
Windows - PlasticX: PlasticX is now the official GUI on Windows
When you perform a clean installation of Plastic on a Windows machine, PlasticX will be the default GUI to open after the installation. Also, plastic links will be handled with this GUI.
When upgrading from a previous version, the last used GUI will still be the one that opens when running the Plastic executable
All platforms - PlasticX: Case insensitive filter on home view
On the home view, the repository and workspaces filter are now case insensitive
All platforms - PlasticX, GluonX: Unified Open Menu options in applications
We unified Open Menu right click context menu behavior across all views in PlasticX and GluonX
All platforms - PlasticX: Changes in changeset comments
In the "changeset by changeset" mode for the diff and the code review windows, if a changeset comment started with an empty line you couldn't see it in the changeset list. We fixed it.
Before
After
Also, we improved this panel, now more text will be shown in the changeset names Panel
All platforms - GluonX: Save details panel user preferences
GluonX will remember the following settings about the details panel for the Workspace Explorer view and the Checkin view, giving the user more personalization
*Details Panel visibility
*Details Panel width
*Preview Image height
*Properties Height
*History Height
*Comments height
Also, if no user preference is found, this panel will be visible by default.
All platforms - Web UI: Fix issue with directories with hashes in them
You are now able to navigate into and view files inside directories that contain hashes in their name.
All platforms - Plastic, PlasticX, Gluon: No profiles led to workspace metadata corrupted when co private files
If no profiles were set up, when doing a checkout operation on a private item (add the item) from the Pending Changes view, there was no "owner" of the revision. That caused metadata to become corrupted and, after restarting the GUI, made everything in the workspace appear as private. Now it is fixed.
All platforms - GluonX: Search files dialog unexpected error message
In GluonX, when pressing spacebar key in the search files dialog not in configuration mode, a "unexpected error has occurred" message appeared, we fixed this issue
macOS - PlasticX: Fixed library not found issue when loading extensions
There were some issue tracker extensions that could not be loaded on PlasticX because of an issue with dynamic libraries. The affected extensions were jira, codebeamer and ontime
We fixed this issue and now you can load the extensions in the same way as in the legacy GUI
All platforms - PlasticX, GluonX: Corrected display of recent comments containing underscores
We fixed an issue where comments containing underscore characters were not displayed correctly in the list of recent comments in the Pending Changes and Check-in views of PlasticX and GluonX respectively.
All platforms - PlasticX: Fixed repeated display of permissions warning in Branch Explorer
Users without the "applyattr" permission would get an error dialog informing them to the fact every time they clicked on any object in the branch explorer.
We moved this intrusive error message to the Attributes panel in the Branch Explorer options side panel.
Here is the text in a dialog:
And here is the text in the Attributes panel:
All platforms - PlasticX: Fixed code review plastic links
There was an issue when trying to open code review plastic links with PlasticX, where the GUI just didn't show the code review. This bug was introduced in the last release due to a conflict with another task. The issue is now fixed, and now you can open code review plastic links as before
11.0.16.7080: Jun 15 2022
Command-line client: Shelvesets can be created from partial workspaces
Previously, it was not possible to perform a shelve operation in partial workspaces (such as Gluon workspaces). Now we are about to fully support shelves in partial workspaces, and we started with the creation of shelves.
Note that cm partial shelveset apply
and cm partial shelveset delete
subcommands are coming up.
Now it is possible to create a partial shelveset of foo.c
c:\wkspaces\partialwk> cm partial shelveset create foo.c The selected items are about to be shelved. Please wait ... | Confirming checkin operation 11 bytes/11 bytes [################################] 100 % Modified c:\wkspaces\partialwk Added c:\wkspaces\partialwk\foo.c Created shelve sh:2@wk@localhost:8084 (mount:'/')
With the shelveset created, now we could apply it seamlessly to a regular workspace targeting the same repo:
c:\wkspaces\regularwk> cm shelveset apply sh:2 The item /foo.c#sh:2 has been added on source and will be added as result of the merge Merging c:\wkspaces\regularwk\foo.c The revision c:\wkspaces\regularwk\foo.c@sh:2 has been loaded
The creation subcommand (create | mk) is the default operation, so bear in mind that, if no subcommand is specified, it will try to perform the creation of a new shelveset.
For more examples, you can check the help:
cm partial shelveset --help
cm partial shelveset create --help
All platforms - Plastic: Added support for legacy plastic links
Some time ago we introduced the plastic links feature, which lets you click on links to directly open diffs or code reviews. A plastic link looks like the following:
plastic://codice@cloud/repos/codice/branches/main/scm24652/diff
Before this new feature, we already had another, more limited implementation of plastic links, that looked like the following:
plastic://showbranch=br:/main/scm24652@codice@codice@cloud
The latter was deprecated, and new versions of Plastic could not handle the old format.
We fixed this issue, and now you can open both legacy and new plastic links seamlessly
All platforms - Bamboo plugin: New plugin for Bamboo 8 is available!
We released a new plugin for Bamboo 8 that enables you to use Plastic SCM as source control for your build processes. You'll find it in the client installation dir, under plugins/bamboo81plugin.
The former plugin (under plugins/bambooplugin) only supports Bamboo 7.x or older.
Windows - Plastic: Open plastic links with last used GUI
When clicking on a plastic link, we were showing a dialog to ask the user whether to use the Legacy Plastic or the new PlasticX GUI to open it. We removed this dialog, and we will automatically open it with the last used GUI.
On macOS and Linux PlasticX is the official version, so plastic links are always opened with PlasticX
Command-line client: Undo command skips deleted or moved files
Using cm undo over a directory didn't restore files that were not actually there. Now it works as expected.
C:\wk\dir> del file.txt C:\wk\dir> cm undo . c:\wk\dir\file.txt unchecked out correctly
All platforms - Server: Fix the update operation with a controlled cloaked.conf file
Working with a controlled cloaked.conf (a cloaked.conf that was checked-in), the update could be wrongly downloading some cloaked content. Usually, it could be downloading the cloaked items affected by the last cloaked rule in the file. Now it's fixed.
macOS, Linux - PlasticX, GluonX: New Merge tool for binary files
The new cross-platform Binary Merge Tool that we recently added to PlasticX and GluonX on Windows is now available on macOS and Linux.
The Binary Merge Tool allows the user to choose which version of a binary file to keep when there are conflicts during a merge.
All platforms - PlasticX: Use expanders for the Branch Explorer options
Previously, the branch explorer options used splitters to display the configuration. This caused two major usability issues:
* Too much information visible at once.
* Little space to interact with some views.
Now those panels are collapsible, so users can interact better with panels that need more vertical space.
All platforms - PlasticX, GluonX: ImageDiff now launched from Diff Window and Merge View
Diffing image files from the Diff Window and the Merge View will now launch the ImageDiff tool.
For example, you can launch the diff from the merge using these menu options:
Here is the Image Diff Tool:
All platforms - PlasticX: Enable/disable rules in Branch Explorer
Now the UI allows to enable or disable Filter and Conditional format rules in the Branch Explorer:
All platforms - PlasticX: Restored right-click menu options for labels in Branch Explorer
In Branch Explorer, after we recently added the 2 label diff feature, single label right click options stopped working. We fixed this issue, sorry about that!
All platforms - PlasticX: Error closing Create Account Dialog in the new Home Menu
In Plastic X, when creating an account from the new Home Menu, closing the dialog threw an error, we fixed this issue
All platforms - PlasticX: Fixed diff scroll "jumps"
Every time the right file in the diff viewer was edited, caused the scroll to jump 1 line up. Now it's fixed.
All platforms - PlasticX: Fixed diff summary after editing diffs.
After editing diffs, the diff summary (the label that indicates which is the current difference and how many differences there are), was not updated properly. Now it's fixed.
All platforms - PlasticX: Code Reviews changeset column should grow
In Plastic X, when reviewing a code review changeset by changeset, in some cases after resizing the panel the column text didn't grow when expanding
We permanently fixed this issue:
Before:
After:
11.0.16.7048: Jun 09 2022
Windows - Plastic: Check out local changes is 300 times faster
Now, checking out local changes is much faster. For example, selecting 135 thousand private and checking them out now it takes less than 4s vs the almost 19 minutes that it took before.
All clients: Fixed 'unable to sort' error working with local changes
You could get the error "Unable to sort because the IComparer.Compare() method returns inconsistent results" trying to check out, checkin, or undo the pending local changes. It happened due to complex dependencies among the local changes when there were locally moved involved. Now it's fixed.
All platforms - Command-line client: Paths described in trigger variables can now include whitespaces.
Previously, plastic variables used in triggers such as PLASTIC_BIN_PATH
, WKSPACE_PATH
and GLOBAL_CONFIG_PATH
were not resolving paths with white spaces. That led to wrong command formats when executing. Now, these paths are being wrapped inside double quotes when needed.
You can have the following scenario:
Have the directory where the Plastic SCM command line client is installed:
C:\Program Files\PlasticSCM\client
And inside it, you are planning to store your triggers in a subfolder, something like:
C:\Program Files\PlasticSCM\client\script\after update\script1.pl
So, you could declare a trigger using the following scheme (in Windows cmd shell, for instance):
cm trigger make after-update myTrigger """@PLASTIC_BIN_PATH\scripts\after update\script1.pl""" --server=localhost:8084
And it will solve the white space in PLASTIC_BIN_PATH
to C:\Program Files\PlasticSCM\client
when executing the trigger.
Bear in mind that, as the path already has a whitespace ("after update" in the example above), you should add escaped quotes to it to specify the executable because we also support arguments. No extra quotes will be added in this case. Here we were considering cmd shell, so quotes are escaped with an extra double quote.
You can also use commands with arguments and both command paths and arguments will properly resolve white spaces:
In case you have a workspace such as C:\my wkspace
you could create a trigger like the following:
cm trigger mk after-update callPython "python @WKSPACE_PATH\script.py @WKSPACE_PATH" --server=localhost:8084
In this case, the whitespaces are going to be inserted in the plastic variable. This trigger will execute python, calling the file named script.py
located in your workspace and passing to it an argument which is also resolved to the same path, something like executing:
python "C:\my wkspace\script.py" "C:\my wkspace"
Find below examples of the same two commands to create triggers but in three different shells:
1- Windows CMD:
cm trigger make before-update myTrigger """@PLASTIC_BIN_PATH\scripts\before update\script1.pl"" @WKSPACE_PATH\src\readme.txt" --server=localhost:8084
cm trigger make after-update myTrigger """@PLASTIC_BIN_PATH\scripts\after update\script2.pl""" --server=localhost:8084
2- Windows PowerShell
cm trigger make before-update myTrigger "`"@PLASTIC_BIN_PATH\scripts\before update\script1.pl`" @WKSPACE_PATH\src\readme.txt" --server=localhost:8084
cm trigger make after-update myTrigger "`"@PLASTIC_BIN_PATH\scripts\after update\script2.pl`"" --server=localhost:8084
3- Linux/MacOS bash:
cm trigger make before-update myTrigger ""@PLASTIC_BIN_PATH/scripts/before update/script1.pl" @WKSPACE_PATH/src/readme.txt" --server=localhost:8084
cm trigger make after-update myTrigger ""@PLASTIC_BIN_PATH/scripts/after update/script2.pl"" --server=localhost:8084
All platforms - Server: Fixed slow connection issues
We fixed a bug that caused the server to close connections over SSL if the client did not start the second method call in under 10 seconds from the connection establishment.
This bug was because of a wrong tracking of the connection status from server side and could cause killing long-running operations (such as big check-ins) over slow networks with the error message "An existing connection was forcibly closed by the remote host".
Command-line client: Fixed null error undoing moved files
The "cm unco" could fail when there are pending moved files to undo. It could fail when the source and the destination directories are different directories, but both are under the same directory. Now it's fixed.
All platforms - PlasticX: New cross-platfrom mergetool
Resolving conflicts in text files during merges will now launch a new cross-platform merge tool.
When the merge tool window is opened, it tells you how many conflicts require user intervention. For each conflict, you can choose to take contribution from the remote version, your local version, or the base of the merge, by clicking the checkbox by each change.
Step back and forth through the remaining unresolved conflicts using the arrows at the top of the screen. You can also step through all conflicts - unresolved, ones you've already resolved, and ones which were resolved automatically.
The result of the merge is shown in the bottom panel. Once all conflicts are resolved, click Save and Exit to return to the merge.
Here is an example conflict resolution.
Before the resolution:
And after the resolution. I chose to keep the local changes:
Windows - PlasticX: New Merge tool for binary files.
We ported our legacy binary merge tool (only available in Windows GUI) to PlasticX.
The binary merge tool allows the user to choose a version when all the versions in a merge, are changed. When resolving the merge, the chosen version will be the resulting file after the merge.
When the content of the merged file can be previewed (any PlasticX supported image type ), the preview is displayed. Otherwise, the OS file icon is displayed.
The tool allows to "Open" or "Open with..." each version to allow the user to compare them. Also, some properties, such as file size or date modified, are displayed to help the user to choose a version.
This is an example of merging a Word document:
And this is an example of merging a png image:
All platforms - PlasticX: Repository Empty State
On home view, when a repository contains no files or directories, an "empty state" was added to what would otherwise be a blank panel.
All platforms - PlasticX, GluonX: Added undelete and undelete to the specified path
Added the 'Undelete revision' and 'Undelete revision to specified path...' options to the context menu for the diff window. It can be used to restore a single or multiple deleted items in PlasticX and GluonX.
All platforms - Plastic: Added explanatory text to the welcome window
When you open Plastic for the first time, you are asked to choose the GUI to work with. We added an explanatory text at the bottom of this window, which lets you know that you can change the GUI flavor at any time:
11.0.16.7026: Jun 02 2022
All platforms - Eclipse: Could not merge with writable xlinks
Eclipse plugin (and other Plastic SCM java plugins with merge capability) were unable to perform a merge from a branch when writable xlinks are involved in the merge operation. A Unable to cast object of type ...
error was thrown instead. Now it is fixed.
Command-line client: Cannot check out through symlinks
When symlinks contain '.' and '..' elements in their target paths, some commands failed to walk through them:
$ cm co links/linkedfile.txt
# Note the path wrongly contains a '..' element.
The element /wk/links/../content/file.txt is either a private file or it is already checked out in the current workspace.
Now they work as expected.
Windows - Plastic/Gluon: Fixed slow open files from dynamic workspaces.
Some applications (like notepad) start much slower when they are started specifying a working directory that is a network path (UNC path). To work around this, Plastic & Gluon now use the local path (instead of the network path) before opening a file.
This problem was only reproduced when the dynamic workspace was mounted using a network path.
Windows - Plastic/Gluon: Fixed "Open in Explorer" menu option for dynamic workspaces.
This "Open in Explorer" menu option didn't work for dynamic workspace mounted with a network path. Now, it works as expected opening the right directory in a new Explorer window.
All platforms - PlasticX, GluonX: Display cache status for Dynamic Workspaces.
We continue with improvements to better support Dynamic Workspaces in the GUI. This time we display the cache status of each file in the Status column.
* The "cloud" icon means the file content never was downloaded to the disk, helping to save disk space.
* The "tick" icon means the file was opened or accessed at least once, so it was already downloaded to the shared cache. This also helps to save disk space since the revision contents are shared across the different workspaces. So if have more than one Dynamic Workspace, the revision contents are re-used across them.
Some demo:
All platforms - PlasticX: Remove user profile
A new option has been included into the home view accounts combo box. It allows for removing the selected user profile from the list.
All platforms - PlasticX: Better trackpad support in the differences viewer.
Now, when using the laptop trackpad to scroll the differences view, the movement is smoother. Check this demo:
All platforms - PlasticX: Added directory conflict overlay icon
Added two new directory conflict overlay icons when a directory conflict is detected in PlasticX
*When a directory conflict is unsolved
*When a directory conflict is solved
All platforms - PlasticX, GluonX: Unified credentials dialog
When trying to perform an operation on a server without being authenticated, we were asking the user for credentials by using a custom dialog, which was different depending on the authentication method.
We modified this behavior, and now you will see the same dialog that is shown when creating a new account:
All platforms - Plastic, Gluon: New browse repository dialog
When adding a new path permission on PlasticX, you had to manually type the path of the object you wanted to apply the permissions on. Now, we added a new dialog that shows you the repository tree on the main branch, so you can just select the item on the tree without having to type the full path:
All platforms - PlasticX, GluonX: Spacebar to check/uncheck items in Update Reports
Now is possible to use spacebar key to check/uncheck items in Update Reports dialogs in PlasticX and GluonX.
This feature will also now affect .meta files, selecting the associated .meta file too.
11.0.16.6994: May 26 2022
Linux - Server: Enable setting WebAdmin port under 1024
The server can now be configured to start the WebAdmin in ports below 1024.
To do that, edit the /opt/plasticscm5/server/server.conf
and change the default values (ports 7178 and 7179) for the new ones at your convenience on the following configuration keys:
WebAdminToolPort
WebAdminToolSslPort
All platforms - PlasticX: Add diff selection to text editor
New option to check differences from selected lines in text editor has been added:
All platforms - PlasticX, GluonX: Open files on Enter key pressed
The Enter key pressed will open the selected files from Workspace explorer tree.
All platforms - PlasticX: New icon for dynamic workspaces.
We designed a new icon for Dynamic Workspaces . So now, those workspaces that are dynamic use a new icon so the user can be differentiated from the standard workspaces.
NOTE: Dynamic Workspaces are available only on Windows platforms for now.
All platforms - PlasticX: Add help link for dynamic workspaces.
When creating a workspace, we added a link label to our blog explaining what Dynamic Workspaces are, and what are they for.
All platforms - Plastic, Gluon: Improved sign in to cloud server on on-premises mode
When you selected the on-premises mode for the sign in, and entered a cloud server, we were showing a dialog with the sign-in options available for that server.
We integrated this view inside the same dialog that is used to create the account, so the process is cleaner.
All platforms - PlasticX: Workspace explorer symlinks
A few issues have been fixes related to symlinks on the workspace explorer:
- Checkout, undo checkout, lock and checkout now support symlinks
- Symlinks are now represented by the correct native icon
All platforms - PlasticX: Code review didn't navigate to the comment correctly
Under some circumstances, the code review didn't navigate to the correct file and line when you double-click a comment. In addition, sometimes, a wrong message appeared to notify you about the file was deleted when it was not the case. Now both bugs are fixed.
11.0.16.6979: May 19 2022
Windows - Plastic: file plastic links now open in GluonX
Opening a file plastic link will now launch GluonX rather than Gluon.
All platforms - Cloud server: Now the Plastic SCM Cloud Server won't abort write operations if there is a backup in progress.
There is a small chance that the Cloud server can start backing up one of your repositories while you are working on it. This chance is small because the Cloud server analyzes repository usage tendencies to predict the best time to backup data without interrupting your work. However, no prediction is perfect. If you encountered that unfortunate scenario you are familiar with this error message:
The backup of the "repository@organization" database is in progress. Only read operations are allowed on it.
This is now fixed. If you try to perform a write operation on a repository that is undergoing a backup, your operation will wait a grace period for the backup to finish before throwing an error back to you.
All platforms - GluonX: New GUI announcement
We are happy to announce that our new, cross-platform, GUI for artists, "GluonX", is now the default on all platforms.
GluonX has all the functionality of the legacy Gluon applications across all platforms wrapped in a modern new interface. It also includes support for changelists in the Check-in view, and easy switching between light and dark modes.
Here's how it looks in dark mode:
Note, you can switch back to the legacy GUI at any time by selecting the option from the menu:
IDEA Plugin: IntelliJ IDEA 2022 support
We've updated our plugin and it supports IntelliJ IDEA 2022.x now!
All platforms - Partial update fails when a file was replaced
If a file was moved somewhere else and a second file with the same path was then added, going back and trying to do a partial update over a third file would fail to apply all changes and an error message was shown.
cm partial update file.txt Calculating... 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.
Now it is fixed.
Windows - Jenkins: The command line client used by the plugin couldn't run.
The Jenkins plugin automatically downloads a Plastic SCM command line client bundle to perform VCS operations. But the application ("cm.exe") didn't start properly due to a missing .dll file. Fixed.
All platforms - PlasticX, GluonX: fixes and added new keyboard shortcuts
PlasticX:
*Pending Changes View: added missing keyboard shortcut for "Checkout"
*History Panel: Added new keyboard shortcuts in HistoryPanel, for Open and Diff with previous revision
*Browse Repository: Added new keyboard shortcuts in "Browse repository in this label" and "Browse repository in this changeset", for "Open", "Diff with previous revision" and "View History"
GluonX:
*Workspace Explorer View: fixed existing keyboard shortcuts not working, added events
*Workspace Explorer View: added missing keyboard shortcut for "Add to source control"
*Workspace Explorer View: added missing keyboard shortcut for "Add directory tree to source control"
*Workspace Explorer View: added missing keyboard shortcut for "Undo checkout"
* Workspace Explorer View: fixed open in explorer name ("Open in explorer" in Windows/Linux,"Reveal in Finder" in Mac)
* Workspace Explorer View: added missing keyboard shortcut for "Open in explorer"
*Checkin View: fixed open in explorer name ("Open in explorer" in Windows/Linux, "Reveal in Finder" in Mac)
*Checkin View: added missing keyboard shortcut for "Open in explorer"
*Checkin View: added missing keyboard shortcut for "Checkout"
*History Panel: Added new keyboard shortcuts in HistoryPanel, for Open and Diff with previous revision
All platforms - PlasticX, GluonX: Spacebar to check/uncheck items
Check/Uncheck all selected nodes from tree views with checkable items on spacebar key down.
Windows - PlasticX: Dynamic Workspaces configuration
A new tab option has been added for "Dynamic workspaces" in the Preferences window. This new view contains the status of the plasticfs process (running/not running) and allows user to install this feature if it's not running. Turning on the plasticfs, the dynamic workspaces functionality is automatically enabled and ready to be used.
Link to the video: https://imgur.com/cnSpjPl
All platforms - PlasticX: file plastic links now open in GluonX
Opening a file plastic link will now launch GluonX rather than Gluon.
All platforms - Plastic, Gluon: Improved enterprise edition onboarding
We unified the onboardings in the cloud and enterprise edition. Now both use the same view, and you can connect to an on-premises server or to a cloud server from both editions. This is how it looks:
All platforms - PlasticX: Compact the UI.
Reduce the overall margins/paddings to make the UI a little bit more compact, so more content is visible in the display. We compacted the following UI elements.
* PlasticX/GluonX: Compact the TreeDataGrid node height.
* PlasticX/GluonX: Compact the Switch Workspace button paddings.
* PlasticX/GluonX: Compact the PlasticX Topbar height.
* PlasticX/GluonX: Compact the Home view toolbar panels.
* PlasticX: Compact the left SideBar item height.
* GluonX: Compact the Tab bar.
All platforms - PlasticX, GluonX: handle .meta files
Selecting an asset for check-in in the Pending Changes view in PlasticX and the Check-in view in GluonX will now automatically selected the associated .meta file too. This also applies to the Incoming changes view and the Workspace Configuration view of GluonX.
Windows - Command-line client: Symlinks are now supported
We added support for symlinks on Windows! The long awaited feature is now here for command line only (GUI fixes coming soon).
== WHAT IS NEW ==
Symlinks created previously on Linux and macOS were replaced on Windows by placeholder text files containing the linked path.
Now, the Plastic command line supports Windows symlinks as well.
== REQUIREMENTS ==
To create symlinks, Windows 10 build 14972 or newer is required. You also need to enable Developer Mode (https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development).
== HOW TO ENABLE THE FEATURE ==
Symlink support will be enabled by default in forthcoming versions. For now, you can add the following key to your client.conf:
<EnableSymlinkSupportOnWindows>yes</EnableSymlinkSupportOnWindows>
Note 1: GUI support is still in progress. By enabling the feature and using symlinks you might experience glitches in the GUI.
Note 2: PlasticFS still does not support symlinks and this feature might interfere with its proper behavior. You might need to mount your workspace right under a volume specifier. For instance:
cm wk MY_WORKSPACE D:
Note 3: If you enable this feature, symlinks placeholders will eventually be promoted as private files. If you still have any in your workspace, you can remove them and let Plastic to recreate them as actual symlinks.
Note 4: If you disable this feature, dangling symlinks in your workspace might deceive the Plastic client. Remember to erase them immediately after.
== HOW TO CREATE SYMLINKS ON WINDOWS ==
You can use the same Plastic commands and options you would use on Linux or macOS:
C:\wkspaces\sokoban> mklink /D Scripts Assets\Scripts C:\wkspaces\sokoban> cm add Scripts The selected items are about to be added. Please wait ... Item c:\wkspaces\sokoban\Scripts was correctly added C:\wkspaces\sokoban> cm ci --symlink Scripts The selected items are about to be checked in. Please wait ... - Checkin finished 26 bytes/26 bytes [################################] 100 % C:\wkspaces\sokoban> cm co --symlink Scripts The selected items are about to be checked out. Please wait ... Item c:\wkspaces\sokoban\Scripts was correctly checked out C:\wkspaces\sokoban> cm undo --symlink Scripts c:\wkspaces\sokoban\Scripts unchecked out correctly
All platforms - PlasticX: fixes in GUI help
Fixed broken links in GUI help
*Link:https://plasticscm.com/download/help/ignored-hidden-etc.html broken, replaced with: link:https://plasticscm.com/download/help/ignored-hidden-etc
*Link:https://plasticscm.com/help/recursivemerge broken, replaced with:link:https://plasticscm.com/download/help/recursivemerge
Fixed "You can also customize the query by clicking Advanced" links in Changesets View and Labels View help, the links now works correctly
All platforms - PlasticX: Fixed an "unexpected error" in the diff view.
During the view initialization, sometimes clicking the diff view raised an "An unexpected error has occurred". Now it's fixed.
All platforms - Gluon: Corrected text to switch to Plastic
In the top right menu of Gluon there's an option to switch to the Plastic SCM GUI. When opening the menu from the home view, the text of this option said "Switch to Gluon", which was incorrect. We fixed this issue:
11.0.16.6949: May 12 2022
Windows - Visual Studio 2022 plugin: Performance improvements!
Improves startup by asynchronously performing the initialization process.
All platforms
Command-line client outputs its version as log's first line
Now the cm will store the cm version at the top of the log
2022-04-29 16:26:57,891 1 (null) (null) (null) INFO cm - cm version: 11.0.16.6891 2022-04-29 16:26:57,919 1 (null) (null) (null) INFO cm - STARTING CLIENT ...
Server - Merge and Incoming Changes are much faster with pending added
The calculation of the merge or the incoming changes was slow when the workspace had several pending added items in the same directory.
In the reported case, a workspace with 384000 added files in the same directory took over 3 hours to calculate the incoming changes. Now, the same scenario takes less than 2 seconds to complete it. Now, it's 5000 times faster.
Linux - Installers: Updated GPG keys to install plasticscm packages
We updated the GPG keys of plasticscm.com for Linux packages downloading, so you can safely install Plastic SCM in your Linux distro.
Depending on the distro you are using, a reminder of new GPG key found may appear.
All clients: Global config not working with cloaked rules.
The global configuration was not properly read/updated if there was a cloaked.conf file in the users configuration folder. This file is automatically created from the GUIs when adding a file/folder to the cloaked list with the "Apply rules to all my workspaces" option checked.
The global configuration repository is internally downloaded by using the fast-update operation which doesn't work if there are cloaked rules defined. However, it doesn't make sense to take into account the cloaked rules for global configuration workspaces, so they are just ignored.
Windows - Visual Studio 2022 plugin: Multiple bugs fixed
Fixes toolbar and menu controls that now are enabled/disabled correctly depending on version control found or not.
Fixes workspace not being initialized in some cases by detecting if the solution was already opened before the plugin is initialized and acting accordingly
Fixes Visual Studio getting frozen by removing views restoration in the situation where the solution is already opened (e.g. double-clicking on the .sln file to open a solution)
Wildcard expansion not working for paths with white spaces
Some commands failed when using wildcards involving paths with white spaces:
cm add -r * cm ci "A set\*" --all The selected items are about to be checked in. Please wait ... Error: The item /A set/* is not changed in current workspace
Now these commands work as expected.
All platforms - PlasticX: New onboarding experience!
Link to the video: https://i.imgur.com/mcVJvWk.mp4
This is what comes with the new "home" section:
* Now it's much easier to join to an existing organization or create a new one.
* A single place to manage all the accounts, cloud organizations, repositories and workspaces.
* One single way to do the entire onboarding.
* Always available to return to it, not just like the old onboarding that was only present at the beginning and hard to find after that.
We encourage you to try the new "home" view, and send us your feedback (via https://forum.plasticscm.com/). Remember that if you want to try it the Windows Platform, you need to use the new Plastic X GUI.
All platforms - Plastic, PlasticX, Gluon, GluonX: Handle recent comments per workspace
The applications now save and display the recent comments per workspace.
All platforms - PlasticX, GluonX: ComboBox on focus border color
The comboboxes border color will change when get the focus.
All platforms - PlasticX: Diff between labels
It has been added 2 new diff options to labels context menus, "Diff selected labels" and "Diff with another label", these options can be found in context menus of Labels view and Branch explorer.
* "Diff selected labels" will open the diff window with the diff data between labels
* "Diff with another label" will open a new explorer dialog with the list of the existing labels. Once one label is selected in this dialog the diff between the selected labels could be requested.
It has been also added the color effect on labels multiselection in Branch explorer.
All platforms - PlasticX, GluonX: improved scroll when deleting an added item
We improved scroll when deleting an added item or a changelist item in pending changes view/ checkin view, now the program should scroll and focus better the nearest item
All platforms - GluonX: implemented native menu on Mac
We implemented the macOS native menu for GluonX.
All platforms - PlasticX, GluonX: enabled menu on Switcher window on Mac
We enabled the macOS native menu on the Switcher window.
All platforms - GluonX: Fix null exception
If you tried to create a file or a directory in a private directory, a null exception appears
We fixed this issue.
All platforms - PlasticX, GluonX: Fix small bug in changelists
If you tried to move a changelist to another changelist with similar name, the changelist name didn't appear, we fixed this issue.
*Before:
*After:
All platforms - GluonX: Fix convert to partial workspace
Sometimes, if you tried to convert a Plastic workspace to a Gluon workspace, the update button didn't work.
We fixed this issue.
All platforms - PlasticX: fixed issue where branch not shown for xlinks
The branch name was not being displayed in the Workspace Explorer for xlinks in the root of workspace. We corrected the issue.
All platforms - PlasticX: Code Reviews changeset column should grow
In Plastic X, when reviewing a code review changeset by changeset, the column text didn't grow when expanding.
We fixed this issue:
Before:
After:
macOS - GluonX: "Try new GUI" failed in Cloud Edition
When clicking the "Try new GUI" button on Gluon, and opening the new GluonX, we were asking the user for credentials again. This only happened in cloud edition.
Now this issue is fixed. Switching to the new GUI will open the workspace that was previously open on Gluon without any intermediate steps.
11.0.16.6907: May 05 2022
All platforms - Plastic: Fix error when running git sync with UTF-32 files
When performing a git sync with UTF-32 files, sometimes the error "Encoding error Unicode (UTF-32)" was encountered. The git sync should now be able to complete without issue.
All platforms - PlasticX,GluonX: Save expanded and selected items
The application will now remember the following workspace configurations
PlasticX Items View:
*Expanded items
*Selected items
*Horizontal and Vertical scroll position
GluonX Workspace Explorer:
*Expanded items
*Selected items
*Horizontal and Vertical scroll position
*Hide private items
*Exclude privates from directory size
11.0.16.6898: Apr 28 2022
Command-line client: New environment variable to track the merge info during an 'after-clientcheckin' trigger
The after-clientcheckin
trigger will now fill a new environment variable named PLASTIC_MERGE_LINKS
with info about the merge links (if any) introduced in the checkin operation (i.e. checking in a merge from another branch).
The value of the PLASTIC_MERGE_LINKS
environment variable would be like this format (just one merge link):
mergetype:<TYPE_OF_MERGE_LINK>,source:<CHANGESET_NUMBER>@rep:<REP_NAME>@repserver:<REP_SERVER>
And if there are several merge links in the checkin operation, they will be separated by semicolon ';' char:
mergetype:<TYPE_LINK#1>,source:<CHANGESET_NUMBER#1>@rep:<REP_NAME#1>@repserver:<REP_SERVER#1>;mergetype:<TYPE_LINK#2>,source:<CHANGESET_NUMBER#2>@rep:<REP_NAME#2>@repserver:<REP_SERVER#2>
Example:
PLASTIC_MERGE_LINKS=mergetype:merge,source:264@rep:tools_repo@repserver:rainbow:8087
Please refer-to the client checkin triggers documentation site for further info.
Server: New environment variable to track the merge info during an 'after-checkin' trigger
The after-checkin
trigger will now fill a new environment variable named PLASTIC_MERGE_LINKS
with info about the merge links (if any) introduced in the checkin operation (i.e. checking in a merge from another branch).
The value of the PLASTIC_MERGE_LINKS
environment variable would be like this format (just one merge link):
mergetype:<TYPE_OF_MERGE_LINK>,source:<CHANGESET_NUMBER>@rep:<REP_NAME>@repserver:<REP_SERVER>
And if there are several merge links in the checkin operation, they will be separated by semicolon ';' char:
mergetype:<TYPE_LINK#1>,source:<CHANGESET_NUMBER#1>@rep:<REP_NAME#1>@repserver:<REP_SERVER#1>;mergetype:<TYPE_LINK#2>,source:<CHANGESET_NUMBER#2>@rep:<REP_NAME#2>@repserver:<REP_SERVER#2>
Example:
PLASTIC_MERGE_LINKS=mergetype:merge,source:3534@rep:assets_repo@repserver:rainbow:8087
Please refer-to the server checkin triggers documentation site for further info.
All platforms - Command-line client: New 'cm configure' command replaces 'clconfigureclient' tool.
The clconfigureclient
tool was a mono/netframework application, and it had troubles configuring a client with a server using ssl on linux and macOS. This was caused due to unmatched security protocol for the ssl connection between the clconfigureclient
process and the plastic server.
To fix this, we have removed the clconfigureclient
application, and created a subcommand for the regular command-line-client of Plastic SCM (that runs on netcore, and thus accepts enhanced security protocol, enabling a correct ssl handshake with the plastic server).
The new command is cm configure
command, and does the same as clconfigureclient
application.
Issue cm help configure
to show the command help for further info.
All platforms - Gluon: Try the new Gluon GUI!
You are cordially invited to try out the new Gluon GUI, codenamed GluonX. GluonX has all the functionality of Gluon across all platforms, and additionally includes support for changelists in the Checkin view.
To make it as easy as possible, we have added a button to the existing Gluon GUIs which will launch the new GUI. Note, you can switch back at any time using the "Switch to legacy GUI" option in the menu at the top right of the new GUI.
Switch to new GUI on Windows:
Switch to new GUI on Mac:
Switch to new GUI on Linux:
When GluonX is launched you will be presented with this welcome screen:
Switch back to original GUI:
Please give the new Gluon GUI a try and share your thoughts with us.
Command-line client: Creating a branch no longer allows empty branch names
Previously when creating a child branch it was possible to create one with an empty name. It now will return an error message instead.
All clients: The fast-update operation failed with after-update triggers.
The fast-update operation failed with an "Object reference not set" exception when running the after-update trigger if the workspace was already up-to-date (it means, if it already pointed to the branch head).
This operation is internally used to update changes from the global configuration repository (plastic-global-config), so it also made the application of the global configuration in the workspace fail.
All clients: Some trigger environment variables were not properly set for fast-update.
The PLASTIC_INITIAL_CHANGESET and PLASTIC_FINAL_CHANGESET environment variables were not set for the fast-update operation when running before/after-update triggers. Now it is fixed.
All platforms - PlasticX, GluonX: Loading spinner in Diff window
When the diff window is opened a progress spinner will be displayed while the diff data is loading.
All platforms - PlasticX, GluonX: Save user columns preferences
PlasticX will remember user columns width, sort column, and sort column order preferences every time we open the program, giving the user more personalization options
Also, we decreased default column size in columns "status", "created by" and "repository" in Items View
All platforms - PlasticX: Permission dialog is now resizable
We added the option to resize all permissions dialogs in PlasticX
All platforms - PlasticX, GluonX: version in client logs.
"plasticx.relevant.log.txt" and "plasticx.debug.log.txt" log files will include program version as the first log trace (INFO).
Windows - PlasticX: Added SemanticMerge to solve conflicts for supported languages
We added SemanticMerge tool to be launched automatically to solve conflicts during the merge operation for csharp, vb.net, and java languages.
Now you have the semantic power by default in the merge without having to configure it.
All platforms - GluonX: added Plastic Link button!
You can now copy Plastic Links into the clipboard and share file links with your colleagues.
A Plastic Link is like a URL that points to a file in a Plastic repository. You can send links to controlled documents to other people, and when they click on the link, the document will be downloaded into their workspace.
Click the Copy button in the Details panel to copy a file link into your clipboard:
All platforms - PlasticX: Diff changeset by changeset
Added a new mode for diff branches, the diff changeset by changeset mode which allows to get differences for every changeset from a branch.
Both diff modes "Diff entire branch" and "Diff changeset by changeset" will be available in the Diff window and could be switched between each other, the "Diff entire branch" mode will be displayed by default.
The "Diff entire branch" mode will display:
* The branch diff changed files.
* The selected file diff panel.
The "Diff changeset by changeset" mode will display:
* The list of changesets panel for this branch.
* The selected changeset comments panel.
* The diff changed files for the selected changeset.
* The selected file diff panel.
All platforms - PlasticX: fixed Japanese text truncation on Sync view buttons
The fixed an issue where the text of the buttons on the Sync view was being truncated in Japanese.
All platforms - PlasticX: Error 'CloudLocalAccount' was not found
The key for text CloudLocalAccount has been removed from plastic-gui.en.txt.
11.0.16.6860: Apr 21 2022
Command-line client: New variable to track the branch name during an 'update' trigger
When creating an update trigger, the environment variable PLASTIC_FINAL_BRANCH is now available to track the branch of the final changeset.
For further info about 'update' triggers click here
REMARK: The PLASTIC_FINAL_BRANCH value when switching to an empty child branch will be the parent branch, since the loaded changeset when switching to this empty branch is located at the parent branch.
Cloud Server: Improved x1000 the time cleaning the Jet caches.
The time cleaning the Jet caches could take around 40-50s. This created a lock contention that caused most requests got stuck until the process finished. After this, the server continued working normally.
This code has been improved and it now takes around 50 ms instead 30-50 s (it's 1000 times faster).
IntelliJ: VCS controls were not available if the repo contained multiple subprojects.
Now VCS controls are available when a subproject is opened in the IntelliJ IDE (IDEA, Rider and so on) as it now tracks the path upwards until it finds repo info within .plastic directory.
Server: Fixed attribute values not updating in the audit log
Previously when attribute values were changed, the previous version would be written to the audit log. Now the current value of the attribute will be written out.
All platforms - PlasticX: Custom context menus for Directory conflicts
New context menus will be available in Merge view for each type of directory conflict detected during the merge process.
All platforms - PlasticX: Unify configuration data
Configuration data has been moved from guiclient.conf to plasticgui.conf in order to unify configuration in just one file. The moved config parameters are: ComparisonMethod, ResultEncoding, Encoding, MergeResolutionType, EnableCreateDynamicWorkspace, ErrorPendingChangesOnSwitch, WarnMergeWithChangedItems.
All platforms - PlasticX, GluonX: Changed column order in History Panel
We changed the column order of History panel in this release, the new column order will be:
-Changeset
-Creation date
-Created by
-Size (PlasticX only)
-Comment
-Branch
All platforms - PlasticX, GluonX: Typing alphanumeric keys will focus selection
We improved keyboard usability, now, when typing alphanumeric keys (a-z, A-Z, 0-9) in any list, selection will focus to the typed item
All platforms - PlasticX: added support for changelists
We have added changelists to PlasticX.
What are changelists?
Changelists are logical groupings of files in the Pending Changes view. They allow you to group your pending changes as you wish, and perform actions only on the files within a group.
For example, you might group changes into a "Core" changelist and a "Tests" changelist. You can then check in or undo the changes in "Core" or "Tests" independently.
You can enable Changelists using the following setting, accessed by clicking Options in the Pending Changes view:
When first enabled, all changes will appear in a "Default" changelist. You can add new changelists from the context menu accessed by right clicking on a changelist name in the pending changes list.
Creating a changelist:
A changelist can be persistent or transient. A persistent changelist will remain in the pending changes list even if it contains no changes. Otherwise, the changelist is automatically removed when all it's changes have been checked in or undone.
You can move checked-out files into a changelist by selecting "Move to changelist" from the context menu for that item.
Moving an item to a changelist:
Here is an example with multiple changelists configured:
All platforms - PlasticX: Added open menu options in Diff window
We added Open and OpenWith right click context menu options in Diff Window and Code Review Windows
All platforms - Branch Explorer search navigation
The search results navigation order was not properly followed in branch explorer, it should be:
1. The parent branches
2. The child branches
3. The changesets
All platforms - GluonX: Solved Enter shortcut in Search files dialog
When Enter key is pressed the selected file in the results table has to be selected and focused in the explorer workspace view from the workspace window.
All platforms - PlasticX: Diff window opens minimized
Sometimes, if you wanted to diff a branch or a changeset, the diff window hid itself to the background
We have mitigated the issue in this release
All platforms - PlasticX: Move changesets path TextBox was disabled
Move changesets to a different branch dialog: "Selected branch" TextBox was disabled when the "Selected an existing branch ..." checkbox is checked.
Windows - PlasticFS: Don't ask to remove Windows Defender rules
PlasticFS was prompting the user to remove a Windows Defender path rule when a dynamic workspace is deleted or moved, even if Windows Defender is not enabled as the default antivirus. Fixed.
11.0.16.6825: Apr 07 2022
All platforms - PlasticX: Help panel for code reviews
Added Help button and panel to:
* Main window Code Reviews view
* Code Review Window
Watchdog: Added monitoring for the Plastic Server tcp ports.
The watchdog opens periodically connections against the tcp ports of the Plastic Server instances it started (unsecured tcp & ssl if configured). If the connections cannot be opened by any reason, it will recycle the instance.
Watchdog: Added monitoring for the Plastic Server https endpoint.
The watchdog runs periodically requests against the https endpoint of the Plastic Server instances it started (if configured). If the request cannot be completed by any reason, it will recycle the instance.
Cloud: Fixed a concurrency issue with the storage version when creating organizations.
Each time a new organization was created in the Cloud server, it tried to write the storage version file. This could lead to a file access exceptions if two calls tried to write to the file at the very same time.
Now, the storage version is only written once, and the access is protected.
All platforms - PlasticX: Added “Browse repository in this label” action
We added a new right click context menu action in Branch Explorer View (when selecting a label) and Labels View
When you click in “Browse repository in this label”, a new Split View will appear where you will be able to browse the repository from the selected label’s changeset
All platforms - PlasticX: Fix filter in Code Reviews
We fixed an issue where executing a filter in Code Review, now you can filter using the field "Reviewer"
All platforms - PlasticX: New keyboard shortcuts
We added more keyboard shortcuts in PlasticX
Now you can use Ctrl + F (Windows/Linux) or Cmd + F in macOS, to move focus to search filter in all dialogs
All platforms - PlasticX: Fix scroll issue in pending changes
In PlasticX, when you had a large number of elements to be added in Pending changes, if you deleted a item the scroll always focused the first element.
Now this behaviour is fixed, the scroll will remain after a delete operation
All platforms - PlasticX: Added 'Comment' column in the Merge/Incoming Changes views
We completed those views by adding the 'Comment' column in order to show the changeset comment where the revision of each merge/incoming change was created.
For Merge view:
For Incoming Changes view:
All platforms - GluonX: Added 'Comment' column in the Incoming Changes view
We completed this view by adding the 'Comment' column in order to show the changeset comment where the revision of each incoming change was created.
[Alpha New]
All platforms - PlasticX: Added recent comments dropdown to Comments dialog
New dropdown button has been added to Comments dialog in order to allow the selection of any comment used previously.
All platforms - PlasticX: Error displayed creating a new Workspace
In Create Workspace dialog, when trying to choose a repository and the repositories combobox was empty, the app displayed an error message. This error occurs when the repository list wasn't completely loaded.
All platforms - GluonX: fixed directory expansion issue in workspace explorer
We fixed an issue where subdirectories would sometimes become un-expandable after refreshing the view.
All platforms - GluonX: selected search results now highlighted in explorer and configuration view
When you double click on a search result, that item should be navigated to and selected in the item view. This was only happening if the item was already visible. Now, we expand the parent directories of the selected item so it can be shown and selected.
All platforms - PlasticX: Fix text in Merge View
Merge result text overlapped the panel in Merge diagram, now this issue fixed.
Windows - PlasticFS: Support Defender exclusions on Windows 11
Starting PlasticFS for the first time on Windows 11 with Windows Defender enabled could show the following error:
This happens if the user accepts to add initial exclusion rules to Windows Defender required by PlasticFS to improve its performance.
Now it is fixed, and the error message is gone:
All platforms - PlasticX: fixed GUI hang during long branch diff calculation
We now offload the diff processing onto a separate thread so that the GUI remains responsive during the branch diff operation.
11.0.16.6787: Mar 31 2022
All platforms - DevOps: Email plug html body messages
Before this version, emails were sent as plain-text. From now on, the email plug can send messages with html content and render them properly.
To do that, just enable the following switch in your email plug configuration (Server's web admin > DevOps > Configure button of your email plug):
All platforms - Plastic, PlasticX: Improvements to Workspace Explorer search
Ctrl+F (Command+F on Mac) to focus on the search field now selects existing text in the field. Also, toggling the "Include private items" checkbox now updates the search results panel if it is open. You can also close the results table by pressing Enter.
All platforms - Server: The plugs and mergebots processes could exit immediately on server startup. Although this issue was easier to reproduce in Linux, it affected all platforms.
An easy way to reproduce this is by restarting the plasticscm-server service on Linux. Once the server is up and running again, you can see that your plugs and mergebots are still offline.
This was because of a race condition when initializing the server. The Plastic SCM server first starts REST APIs, DevOps WebSocket for events… and then it starts the plugs and mergebots.
But the server was still initializing Web services by the time the plugs and mergebots tried to connect to them. This would cause the plug or mergebot to think that the server is offline, forcing them to exit.
The server now checks that these processes are still alive after a grace period. The server will also restart the processes if they exit within this grace period.
Windows - Visual Studio Extension: Fixed issues with views not being displayed correctly
Now menu buttons in views are displayed correctly at scales greater than 100%.
All platforms - GluonX: New cross-platform GUI available!
We are pleased to announce the availability of a new cross-platform version of Gluon, code-named GluonX!
We would love for you to try out the new GUI and give us some feedback. GluonX will eventually replace the existing Gluon GUI on all platforms, so this is a great opportunity for you to help shape the future of the application.
This release of GluonX is fully functional, and has great, modern look and feel. It also comes with light and dark theme on all platforms.
Here is how you can launch GluonX:
Windows:
On Windows, run the following in a command window:
C:/Program Files/PlasticSCM5/client/wingluonx.exe
MacOS:
On macOS, run the following a terminal window:
open /Applications/PlasticSCM.app/Contents/Applications/GluonX.app
Linux:
On Linux, run the following:
/opt/plasticscm5/client/lingluonx
Here are a few screenshots to whet your appetite.
Workspace explorer view (dark theme):
Checkin view (dark theme):
File search (light theme):
Please try it out and let us know what you think!
All platforms - GluonX: Added support for Changelists
We have added changelists to GluonX.
What are changelists?
Changelists are logical groupings of files in the Checkin view. They allow you to group your pending changes as you wish and perform actions only on the files within a group.
For example, you might group changes into a "Core" changelist and a "Tests" changelist. You can then check in or undo the changes in "Core" or "Tests" independently.
You can enable Changelists using the following setting, accessed by clicking Options in the Checkin view:
When first enabled, all changes will appear in a "Default" changelist. You can add new changelists from the context menu accessed by right clicking on a changelist name in the pending changes list.
Creating a changelist:
A changelist can be persistent or transient. A persistent changelist will remain in the pending changes list even if it contains no changes. Otherwise, the changelist is automatically removed when all its changes have been checked in or undone.
You can move checked-out files into a changelist by selecting "Move to changelist" from the context menu for that item.
Moving an item to a changelist:
Here is an example with multiple changelists configured:
All platforms, macOS - PlasticX: Improved keyboard shortcuts
We made several improvements, fixes and changes in PlasticX keyboard shortcuts
* Added new delete shortcut in shelves view
* Added new shortcut in Branch Explorer > Switch workspace to this branch
* Added new shortcut Ctrl + F, move focus to filter in views
* Fix an issue in pending changes where some shortcuts weren't working properly
For example, DELETE shortcut was not working if previously a item that couldn't be deleted was selected. Now this issue is fixed
* macOS: Fixed an issue where delete keyboard shortcuts weren't working properly
All platforms - PlasticX: Fixed the focus for workspace window
Now, we set the focus on the workspace explorer view when the workspace window is opened. So, you can use directly the keyboard to navigate or execute a shortcut (e.g Ctrl+F / Cmd+F to search).
All platforms - PlasticX: Add support for portable versions
The theme folder can be located in execution root or parent paths. It will be needed in portable versions where all the assemblies and resources are packaged in the same location.
Windows - PlasticFS: Enable start on user's logon
Now it is possible to start PlasticFS automatically on user's logon by issuing a plasticfs.exe --install
.
The plasticfs.exe --install
creates a shortcut (a link file) on user's startup program group.
plasticfs.exe
It is located by default at the following directory:
c:\Program Files\PlasticSCM5\client
All platforms - PlasticX: Text fields overexpanding when pasting text
When pasting a text that contains end of line character into a single line text field it behaves like a multiline text field instead.
This issue is now fixed, all end of line characters are now replaced with a space character.
All platforms - PlasticX: Improved clarity of link icon
Link icon present on code review, and diff window now uses the theme colors for dark and light themes, this change improves clarity of this icon on dark theme.
All platforms - PlasticX: Drawing improvements in the Branch Explorer.
The parent link arrows were drawn over the branch captions. Now they are drawn behind.
All platforms - PlasticX: Error loading invalid formats in image preview
An error was displayed when the image preview was requested for files with PDB and mat formats. This error has been fixed by removing both formats from the supported files formats.
11.0.16.6757: Mar 23 2022
Command-line client: Updated the help of the PLASTICEDITOR environment variable available for some commands.
We updated the description about using the PLASTICEDITOR environment variable. You can use this option with the following commands: branch create
, label create
, partial checkin
, shelveset create
, archive
and checkin
.
Windows - Visual Studio 2022 plugin: We've made some visual improvements
* Plastic CodeLens now shows real icons instead of ASCII or emoji.
* Changesets marked as "Merged and Changed" are now hidden from the history list avoiding duplicate records.
* Changesets are now ordered by date (and not by the object id).
All platforms - PlasticX: Added reveal password button
User will be able to display entered passwords for password text boxes.
Visual Studio 2022: CodeLens shows renames greatly!
CodeLens now uses short names rather than fully qualified names for renamed actions to improve legibility.
Server: Improve server stats log
Now the server stats included the queued work and the thread count for the thread pool. See example about what they look like:
2022-03-17 11:07:46,300 ActivityScheduler-59 (null) INFO ServerStats - PROCESS INFO 2022-03-17 11:07:46,300 ActivityScheduler-59 (null) INFO ServerStats - Entry Value 2022-03-17 11:07:46,300 ActivityScheduler-59 (null) INFO ServerStats - ======================== ======================= 2022-03-17 11:07:46,300 ActivityScheduler-59 (null) INFO ServerStats - Proc Id 9015 2022-03-17 11:07:46,304 ActivityScheduler-59 (null) INFO ServerStats - Handle count 715 2022-03-17 11:07:46,304 ActivityScheduler-59 (null) INFO ServerStats - Thread count 213 2022-03-17 11:07:46,304 ActivityScheduler-59 (null) INFO ServerStats - ThreadPool - Queue length 0 2022-03-17 11:07:46,304 ActivityScheduler-59 (null) INFO ServerStats - ThreadPool - Thread count 47
All platforms - PlasticX: Support navigating trees with left/right arrow keys.
All the tree views in PlasticX/GluonX now support navigation using left/right arrow keys:
* Right arrow key: If a node is not expanded, it expands it. If it's already expanded, it navigates to the first child.
* Left arrow key: If a node is expanded, collapses it. If it's not expanded, it navigates to the parent node.
All platforms - PlasticX: Checkboxes inside tables/trees not visible enough.
Increased the contrast colors to make them more noticeable, especially when the checkboxes were unchecked:
Command-line client: Add option to include delete & move operations in command line history
Using the flag --moveddeleted
will now show delete & move operations when running cm history
For example:
> cm history rev:file2.txt#cs:2 --moveddeleted D:2/22/2022 02:54 CS:1 B:/main C: Created a new file D:2/22/2022 02:54 CS:2 B:Moved from /file1.txt to /file2.txt C: Renamed the file D:2/22/2022 02:54 CS:3 B:Removed /file.txt C: Deleted the file
Command-line client: cm finds nothing when involving unsolvable objects
Before, a query involving inexistent find objects gave zero results and didn't report any error.
# NOTE: The second path is a typo and has no revisions. cm find revisions where (item='main.c' or item='naim.c') Total: 0
Now queries run as expected:
cm find revisions where (item='main.c' or item='naim.c') 13 14-Mar-22 11:13:00 AM txt owner c:wkmain.c#br:/main/task01#1 23 15-Mar-22 3:29:05 PM txt owner c:wkmain.c#br:/main/task01#2 29 15-Mar-22 4:22:47 PM txt owner c:wkmain.c#br:/main/task02#3 Total: 3
All Platforms - PlasticX: Fixed error adding a new Code Review comment.
When opening a Code Review from a PlasticLink, and then trying to add a new comment, the UI displayed an "An unexpected error has occurred" error message. Now it's fixed.
All platforms - PlasticX: Fixed text editor's search box visibility.
When you change a file in the diff viewer (both pending changes view and diff window), and the text editor's search box was visible, the search box was wrongly hidden, and it couldn't be displayed again. Now it's fixed.
Command-line client: Archive can use an external text editor for comments.
Some commands use the PLASTICEDITOR environment variable to specify an editor for entering comments. If the PLASTICEDITOR environment variable is set, and the comment is empty, the editor will be automatically launched to allow you to specify the comment.
The 'cm archive' command disclaimed this was possible, but it didn't work. Now it is fixed.
We also fixed the help of other 2 commands (merge and create attribute), which also allowed this functionality, but it was not documented.
All platforms - PlasticX: Added diff selection differences
We added "diff selection" and "diff with previous selection" right-click context menu events in all Diff windows.
Now you can easily compare your custom selected code lines differences in a separate window
All platforms - PlasticX: Flat button background
Background for flat buttons have been removed
11.0.16.6718: Mar 17 2022
All platforms - Server: Migrate database from SQLServer/MySQL to Jet
We enabled the database migration from supported SQL backends (MySQL and SQLServer) to Jet using the server's WebAdmin utility.
We plan to deprecate the SQL backends soon. So, if you're still running your on-prem Plastic Server with MySQL or SQLServer as database backend, we strongly recommend to migrate to Jet backend soon (our own embedded, super-fast repo storage).
To access to the migration tool, just open the Plastic Server's WebAdmin (Usually on http://localhost:7178
) >> Configuration
>> Repository Storage
And then, click on Change storage
(You will only see this option if your server is using MySQL or SQLServer as database backend)
And finally, while migrating, you should see a screen like this:
Command-line client: Edited the help of the transformed
formatting option of the ls
command.
The transformed
formatting option now includes a note about reading the Administrator guide
to learn more about Transformable workspaces.
Windows - Proxy: Service management using plasticd proxy subcommands.
Now it is possible to install, uninstall, start & stop Plastic Proxy service by using plasticd proxy
subcommands:
* plasticd proxy --installservice
-> installs the "Plastic Proxy" service (it does not start it up)
* plasticd proxy --start
-> starts the "Plastic Proxy" service
* plasticd proxy --stop
-> stops the "Plastic Proxy" service
* plasticd proxy --restart
-> restarts the "Plastic Proxy" service
* plasticd proxy --status
-> prints the status of the "Plastic Proxy" service
* plasticd proxy --uninstallservice
-> stops and uninstalls the "Plastic Proxy" service
For further info about the Plastic Proxy see this link
For the proper way of working of the proxy server, remember creating a plasticcached.network.conf
config file in the Plastic SCM server installation directory.
Example of C:\Program Files\PlasticSCM5\server\plasticcached.network.conf
:
[
{
"port": 8085,
"type": "tcp",
"security": "none"
}
]
(You can find a copy of this example config file in C:\Program Files\PlasticSCM5\server\config_samples
directory).
macOS - PlasticX: Plastic links are handled by PlasticX
Now, when clicking on a plastic link, it will be directly opened in PlasticX, without asking you with which version of Plastic you want to open it.
Command-line client: Updated the help by removing the {type}
format option of the gettaskbranches
command.
Because all Plastic SCM branches are of type "smart" since a long time ago, we removed the {type}
format option of the gettaskbranches
command. This type displayed if a branch was "smart" or not.
Command-line client: Edited the help of the log
, ls
, and history
commands.
We added a note in the help of the log
, ls
, and history
commands to let you know that the options --xml
and --format
cannot be combined. These commands will ignore the --format
option if you run them using both options.
All platforms - Command-line client: The 'cm changelist' command could not add removed items to a changelist. That now works OK.
Say for example you have a changelist named "TODO", and a removed item named "license.txt". The command below did not work:
cm changelist TODO add license.txt [code] This was because of the way the changelist command was calculating the workspace status to identify the change you wanted to add to the changelist. This is now fixed.
All platforms - Plastic, PlasticX: corrected handling of multiple arguments in custom tools
External tools configured with multiple arguments were incorrectly having their arguments grouped into a single argument. We fixed that and now the arguments are correctly sent to the target executable.
All platforms - Web UI: Fixed issues with repo names with forward slashes
Fixed an issue where WebUI would hang when it encountered repo names that include forward slashes
Cloud Server: Fixed finding archived revisions.
The cm find revs where archived='T'
command didn't return anything if executed against a Cloud repo. It didn't matter if achived='T' or ='F' was specified, it returned zero results in both cases.
Now, it behaves like on-premise servers and it returns the right results according to the specified find conditions.
cm find revs where size > 0 AND archived='T' on repository 'repo@org@cloud' 227 03/04/2022 12:07:08 bin ruben /wk/help/light/unitysignupbuhoshechristmas.png#br:/main#1 246 03/04/2022 12:07:08 bin ruben /wk/help/light/unitysignupbuhochristmas.png#br:/main#1 Total: 2
Bear in mind that these changes will affect only those files archived from this version. Old archived ones won't be affected and therefore not displayed as results.
All platforms - PlasticX: Preserve Properties and Attributes when refreshing the Branch Explorer.
When refreshing the Branch Explorer, PlasticX lost the properties and attributes for the selected branch/changeset/label. Now it's fixed.
All platforms - PlasticX: Implemented Branch Explorer display options.
Included the following options in the Branch Explorer:
* Display branches: Allows to enable/disable the visualization of branches.
* Display full branch names: Display the full-path/name-only for child branches (/main/new-feature/task5531 vs task5531).
* Display merge links: Allows to enable/disable the visualization of merge links.
* Display cross-branch changeset links: Allows to enable/disable the visualization changeset parent links that start in a branch and end in a different branch.
* Display labels: Allows to enable/disable the visualization of labels.
* Display branch task info: If enabled, Plastic SCM the task info from the issue tracker next to the branch name. If Plastic SCM is not connected to an issue tracker, the branch description is displayed.
We also improved the text layout when the option "Display branch task info" is enabled. The branch name is displayed in bold text and the task info is displayed on grayed smaller text, to improve readability.
See it in action:
All platforms - PlasticX: Visual feedback when cutting items
When cutting items from the workspace explorer view, now there is a transparency effect in the icon of the elements that have been cut:
Also, now you can clear the cut elements by pressing the Escape key.
PlasticX: Support over 100 image formats for Image Differences.
We added ImageMagick support for our "preview generators". That means that now we can display differences for over 100 major image file formats .
All platforms - PlasticX: Updated behavior of show shelves view button
We updated the behavior of the "Show shelves" button in the pending changes view. Now, when the view is visible, the button is activated, and clicking on it again will close the view.
All platforms - PlasticX: Improved keyboard shortcuts
We added a new shortcut in Workspace Explorer: now you can use Shift+Ctrl+S in Windows/Linux, or Shift+Cmd+S in Mac, if you want to quick access Open In Explorer
We also exchanged shortcuts for Open and Checkout operations:
Open: Shift+Ctrl+O in Windows/Linux, Shift+Cmd+O in Mac
Checkout: Ctrl+O in Windows/Linux, Cmd+O in Mac
All platforms - PlasticX: Tabs styling
Tab styling has been modified to improve visibility of selected item and have a better look and feel on high resolution screens
All platforms - PlasticX: Cannot close preferences without signing in
An issue that affected enterprise users that uses SSO Authentication could not close the preferences window unless the user is re-authenticated.
All platforms - PlasticX: Fixed context menu display on empty tables
The context menu is needed to be displayed in empty tables to allow create new items. This functionality has been provided using the right click over the table body region and it's disabled from the table header region.
11.0.16.6683: Mar 10 2022
All platforms: Plastic 11 is out!
Plastic SCM reaches major version 11. It's been almost 16 years since Plastic initial release and here we go for another big milestone.
== What was released during the last year ==
* Plastic Server and Command Line fully ported to the newest .net framework. Good bye to Mono and .Net framework, hello to .net 6! :)
* Added plastic links support for Code Reviews. 10.0.16.5338
* Added plastic links support for Gluon in macOS. 10.0.16.5432
* New Code Review experience in WebUI. 10.0.16.5338
* Huge merge calculation performance improvements in the server. 10.0.16.5362
* Greatly improved workspace metadata format for great performance. 10.0.16.5574
* TeamCity plugin: Versioned settings. 10.0.16.5574
* Wildcard support in repo trigger filters. 10.0.16.5615
* Improvements in visual studio plugin. Sln and csprojs not modified anymore. 10.0.16.5664
* Version auto-upgrade for the client. 10.0.16.5668
* Checkin performance greatly improved by setting multi-thread defaults. 10.0.16.5710
* Improved Active Directory security and performance. 10.0.16.5816
* Wake On Lan support added to clients. 10.0.16.5859
* Gluon: custom actions for changesets. 10.0.16.5859
* Dynamic workspaces released in alpha. Dynamic workspaces for windows
* GitSync now supports LFS when syncing from Github Enterprise servers, GitLab and Bitbucket! 10.0.16.5975
* Added support to install Plastic SCM in Debian 11. 10.0.16.6112
* Triggers can now run from Global Config. 10.0.16.6141
* Single Sign On support in Plastic Cloud.
* Added parallel download for big files. Much faster workspace updates. 10.0.16.6241
* Greatly reduced memory footprint during workspace update. 10.0.16.6241
* Plastic Cloud can now archive revisions. 10.0.16.6241
* New cross-platform desktop GUIs released in alpha. 10.0.16.6363
* Support for Visual Studio 2022. 10.0.16.6419
* New "cm api" client-side REST API replaces the old plasticapi and introduces tons of improvements, including support for partial workspaces.
* Added --machinereadable flag to many commands to ease automation. 10.0.16.6443
* And the new cross-platform GUI made official for macOS and Linux. 10.0.16.6621
* Greatly improved "pending changes" performace. 10.0.16.6621
* Visual Studio 2022 plugin gains CodeLens support. 10.0.16.6656
Besides hundreds of bugfixes, usability improvements, better localization in asian languages, and many more.
Windows - Visual Studio 2022 plugin: VS CodeLens improvements
This new release improves the relevant information shown in CodeLens for an annotated element.
Fixes the management of local changes, showing them as the most relevant ones if exist.
Shows incoming changesets available in the codelens message
Improves the history list ordering it by date and tagging current changeset and incoming changes with representative icons.
Take a look to it!
Note: This feature is installed as part of the Visual Studio 2022 Plastic SCM extension if you select the option during the Plastic SCM installation process. Once installed, the Plastic SCM CodeLens provider can be enable/disable from Tools > Options > Text Editor - All Languages - CodeLens > Show Plastic SCM
All platforms - Server: Migrate database from SQLServer/MySQL to Jet
We enabled the database migration from supported SQL backends (MySQL and SQLServer) to Jet using the server's WebAdmin utility.
We plan to deprecate the SQL backends soon. So, if you're still running your on-prem Plastic Server with MySQL or SQLServer as database backend, we strongly recommend to migrate to Jet backend soon (our own embedded, super-fast repo storage).
To access to the migration tool, just open the Plastic Server's WebAdmin (Usually on http://localhost:7178
) >> Configuration
>> Repository Storage
).
And then, click on Change storage
(You will only see this option if your server is using MySQL or SQLServer as database backend)
And finally, while migrating, you should see a screen like this:
All platforms - Plastic, Gluon: Modified message when adding ignored rules
We updated the text in the check box inside the ignored rules panel.
Now it's clearer that the rules will be applied only to the user's local workspaces, and not to everyone's.
All platforms - Web UI: Fixed issues with repo names with parenthesis
Fixed an issue where WebUI would hang when it encountered repo names that include parenthesis.
All platforms - DevOps: Trunkbot auto enqueue branches when new changes in dst branch.
Back in release 10.0.16.6621 , we published this new feature: If new changesets reach your trunk branch (i.e., '/main' branch) while a merge changeset -changes of your own branch and the trunk branch- is being built & tested, trunkbot would queue again the branch, repeating all the branch processing, including the last changes from trunk branch in a new merge changeset.
But we missed to queue the branch again in the scenario where the trunkbot activates the "Process reviewed branches only" setting. Now it is fixed and affected branch will be queued again also with this configuration.
Remember enabling the auto-queue branches that failed due to changes detected in the trunk branch in the trunkbot configuration:
Server: Do not stop accepting client connections if something fails.
The connections accept loop was protected in the server so if there is something wrong handling a client connection, the whole accept thread doesn't stop working.
All platforms - PlasticX: The syntax highlight was lost switching the diff mode.
When switching from "Text differences" to "Semantic differences" and vice versa, the syntax highlight colors were lost for text editors. Now it's fixed.
All platforms - PlasticX: The GUI was stuck when pasting text in the right diff editor.
In this scenario, the GUI got stuck sometimes:
* Copy text to the clipboard from another text source.
* Go back to Plastic SCM.
* Select Ctrl + A to select all text in the diff's right editor.
* Hit Ctrl + V to paste that text.
Now that scenario works fine.
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot