8.x release notes
This document contains all release notes for Unity Version Control major version 8.x, organized from newest to oldest.
8.0.16.4054
New
[code]cm ls[/code] is now about 20 times faster!
All platforms - Command line client:cm ls> cm ls / --tree=264526ea-eae6-407d-ba24-e3fcb646d7ee@codice@ourinternalserver.com:9090 -R
Bug
After switching to a branch in an empty workspace…
All platforms - Gluon: After switching to a branch in an empty workspace using Gluon, if the workspace had xlinks, when trying to download a single file failed with an unexpected error. Now it's fixed.When moving the mouse really close to the top, ov…
Windows - Plastic: When moving the mouse really close to the top, over the comments bar in the CodeReview window, sometimes the following error appeared:Now it's fixed!Specified argument was out of the range of valid values. Parameter name: lineIndex
8.0.16.4048
New
We added a new subcommand called [code]conns[/cod…
All platforms - Server: We added a new subcommand calledconnsplastid shellThe user management command line tool, [code]umto…
All platforms - Server: The user management command line tool,umtoolplasticd shellThe arguments to umtool remain unchanged. You can learn more about the umtool command line options in the online documentation.c:\> plasticd umtool
We added detailed shutdown times of each componen…
All platforms - Server: We added detailed shutdown times of each component and better logs to the activity scheduler. We added new logs to have more precise tracking while improving tests performance, but we think they are good logs to stay.We also added logs to track scheduled activities as follows:DEBUG Daemon - Cleanup done in 47 ms
2020-02-26 16:27:41,490 ActivitySchedulerThread (null) DEBUG ActivityScheduler - Run [Transaction manager] 0 ms. (Runs every 2 min)2020-02-26 16:27:41,491 ActivitySchedulerThread (null) DEBUG ActivityScheduler - Run [Reload config files] 0 ms. (Runs every 2 sec)2020-02-26 16:27:43,494 ActivitySchedulerThread (null) DEBUG ActivityScheduler - Run [Reload config files] 0 ms. (Runs every 2 sec)2020-02-26 16:27:45,495 ActivitySchedulerThread (null) DEBUG ActivityScheduler - Run [Reload config files] 0 ms. (Runs every 2 sec)
We added trace information when a workspace retur…
All platforms - All clients: We added trace information when a workspace returns to cs:0. When a workspace gets resetted (it points again to cs:0 and all files appear as private), Plastic SCM clients will now leave a trace of what happened in the workspace.plasticwkcorruption.2020.02.02.13.15.26.352.logwkmismatch.2020.02.02.13.15.26.352.logWe added a daily rolling file appender. It does w\…
All platforms - all products (logging): We added a daily rolling file appender. It does what you expect by its name - a new log file for each day's logs. You can also set a maximum number of files to keep on disk. To configure this log appender, add something like the following to your "log.conf" files.This will generate files like:<log4net> <appender name="DebugAppender" type="Codice.LogWrapper.DailyRollingFileAppender"> <file value="cm.debug.log.txt" /> <maxFileCount value="3" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %thread %property{TransactionID} %property{ClientMachine} %-5level %logger - %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="DebugAppender" /> </root></log4net>
2020-02-27-cm.debug.log.txt2020-02-28-cm.debug.log.txtmaxFileCountwe improved the text of the merge resolution menu…
All platforms - Plastic: we improved the text of the merge resolution menu options to make what's going on clearer. In particular, the options for a "merge to..." operation no longer mention the workspace (because there is no workspace involved in a "merge to" operation!).Bug
In some scenarios, the combo to select a Plastic…
All platforms - Plastic: In some scenarios, the combo to select a Plastic SCM repository when creating a workspace in the Welcome screen could be duplicated. Now it's fixed.When using the "Search files" functionality in th…
Windows - Gluon: When using the "Search files" functionality in the "Explore workspace" view, if there was activity on disk in the workspcace folder, Gluon was not able to correctly focus the selected file. Now it's fixed (special thanks to Greg Koreman for reporting this!).Sometimes the GUI lost the expanded and selected…
Windows - Plastic: Sometimes the GUI lost the expanded and selected nodes in the Workspace Explorer if you clicked the refresh button repeatedly. Now it's fixed.8.0.16.4024
New
Our brand new, .NET Core-based Plastic SCM server…
All platforms - .NET Core Server: Our brand new, .NET Core-based Plastic SCM server received new superpowers! Now it has the WebAdmin and WebUI available - and DevOps (mergebots)! (Unless you run it on macOS, where we still didn't enable the mergebots).You can now run the Plastic proxy as a subcommand…
All Platforms - Server: You can now run the Plastic proxy as a subcommand "proxyplasticdplasticd proxyplasticcachedC:\PlasticSCM\server> plasticd proxy --installserviceInstalling service Plastic Proxy...Service Plastic Proxy has been successfully installed.Creating EventLog source Plastic Proxy in log Application...Service correctly installedC:\PlasticSCM\server> plasticd proxy --startServer startedC:\PlasticSCM\server> plasticd proxy --stopServer stoppedC:\PlasticSCM\server> plasticd proxy --uninstallserviceRemoving EventLog source Plastic Proxy.Service Plastic Proxy is being removed from the system...Service Plastic Proxy was successfully removed from the system.Service correctly uninstalled
The Plastic client periodically checks the licens…
Windows - Plastic: The Plastic client periodically checks the license on the server, and if doesn't find any license, it shows an appropriate warning message in the notification area. Sadly, failing to connect to the server would also produce the same message, even if a license did exist, which was confusing. We fixed this. Now, if the client can't connect to the server, it tells you it can't connect. If it connects and finds that there is no license, well, it tells you that you have no license.The new Code Review system for macOS is no longer…
macOS - Plastic: The new Code Review system for macOS is no longer an experimental feature! We removed the warning panel in the top of the Window saying that. However, the feature is still recent, so do not hesitate to report any possible problem tosupport at codicesoftware dot comBug
This release has a known bug that causes reposito…
All platforms - Plastic, Gluon (Cloud Edition): This release has a known bug that causes repositories to appear duplicated during the configuration steps. This bug is not critical, is just a graphical nuissance when selecting the repository you want to join. It will be fixed in the upcoming releases.8.0.16.4017
New
Great news! We just published the Plastic SCM ser…
All platforms - .NET Core Server: Great news! We just published the Plastic SCM server built on .NET Core, the cross-platform, rock-solid, super-fast and officially supported framework. The new servers are available for Linux, macOS and Windows since version 8.0.16.4017. The new servers are fully compatible with your current installation but as of 8.0.16.4017 they still don't include WebAdmin, WebUI and mergebots. We'll release a new version packaging those soon. The Linux servers are available as tar.gz and also regular packages. Windows and macOS servers are only available as zip and tar.gz at this point. We'll make them full regular installers soon.We introduced a buffer pool for the network buffe…
All platforms - Server: We introduced a buffer pool for the network buffering. Now Plastic Protocol takes advantage of a buffer pool and larger buffers (2MB) when reading from and writing to the network, which speeds up operations when sending lots of metadata.We added extra logs and a list of active connecti…
All platforms - Server: We added extra logs and a list of active connections. Added a new log to Plastic Proto (only when it runs standalone without remoting) to track socket accepts:Also, added a new command (conn 1231. port 8088. Connection accepted from [33.41.xx.xx]
connsplasticd --consoleTotal connections is redundant with the former:NETWORK CONNECTIONS id port from status since alive requests 3 127.0.0.1:8084 127.0.0.1 Active 00:00:01 00:00:04 2 4 127.0.0.1:8084 127.0.0.1 Active 00:00:00 00:00:03 2 5 127.0.0.1:8084 127.0.0.1 Active 00:00:02 00:00:02 1 6 127.0.0.1:8084 127.0.0.1 Active 00:00:01 00:00:01 1Total connections: 4
In the log. The counter shows all the open socket connections, whether they are waiting or actively used. Also, added an extra security setting: If SSL stays being negotiated more than 10 secs, the conn will be aborted.ACTIVE CLIENT CONNECTIONS
We added a new shell that lets you interact with…
All platforms - Server: We added a new shell that lets you interact with locally runningplasticdOf course, if there were only one, it would have connected to it directly. To see the list of available commands:C:\path\bin\server>plasticd shellFound 2 servers running:1. MY_LAPTOP:80842. MY_LAPTOP:8085Please choose a server [1-2]: 2Connecting to MY_LAPTOP:8085MY_LAPTOP:8085>
For example:MY_LAPTOP:8085> helpShell commands: help Shows this help connect Connect to an active server exit Exit the shellServer commands: 'gcinfo' shows info about garbage collection 'procinfo' shows process info 'gc' runs garbage collector 'collect' runs GC.Collect 'stats' shows network stats 'cleancaches' cleans all caches 'showcaches' shows info about all caches 'perfcounters' shows the available perf counters 'showmethodlist' shows active requests 'netpause' pauses the network connections - current connections are broken and new ones rejected 'netrestart' restarts the network connections 'shutdown' performs a controlled stop, first stops accepting new requests, then waits for all requests to finishMY_LAPTOP:8085>
Switch to my other server, and shut it down:MY_LAPTOP:8085> gcinfoGARBAGE COLLECTOR USAGE======= ================GC-Gen0 1GC-Gen1 0GC-Gen2 0GC total memory 05.19 MbMY_LAPTOP:8085>
And end scene:MY_LAPTOP:8085> connectFound 2 servers running:1. MY_LAPTOP:80842. MY_LAPTOP:8085Please choose a server [1-2]: 1Connecting to MY_LAPTOP:8084MY_LAPTOP:8084> shutdownShutting down server...OKConnecting to MY_LAPTOP:8085MY_LAPTOP:8085>
MY_LAPTOP:8085> exitC:\path\bin\server>
Bug
This release has a known bug that causes reposito…
All platforms - Plastic, Gluon (Cloud Edition): This release has a known bug that causes repositories to appear duplicated during the configuration steps. This bug is not critical, is just a graphical nuissance when selecting the repository you want to join. It will be fixed in the upcoming releases.When editing the path permissions for a repositor…
Windows - Plastic: When editing the path permissions for a repository that is not the workspace active one, the dialog allowed to choose folders for the currently active repository instead of the one that was selected. That was wrong and now it's fixed.After refreshing the Repository browser view (the…
Windows - Plastic: After refreshing the Repository browser view (the view that shows the files in a branch, label or changeset), the expanded and selected nodes were lost. Now it's fixed.8.0.16.3986
New
updated the "cm undo" inline help to explain the…
Command line client: updated the "cm undo" inline help to explain the current limitation regarding reverting file deletions. Namely, to undo a deletion, you must either specify the full path of the item, or specify the containing directory and use the recursive ("-r") flag. For example, $ cm undo . (Does NOT undo deletions in the current directory.) $ cm undo . -r (Undoes all deletions (and other changes) in the current directory recursively.) $ cm undo src/file.txt (Undoes deletion (or other change) of src/file.txt.)Perhaps you noticed that private items you chose…
All platforms - Gluon: Perhaps you noticed that private items you chose to add in the Workspace Explorer turned into controlled for a short while, then eventually they appeared as Added (as one would expect). This happened in big repositories, since the GUI takes longer to calculate the status and size information. Right after refresh, the tree could only know whether an item was private or not. That's why you saw added items displayed as controlled. It's kind of confusing, though; that's why it's fixed now!Bug
We improved the search buttons behavior in the br…
All platforms - Plastic: We improved the search buttons behavior in the branch explorer. Previously, those didn't focus any matching changeset, label or branch -even if they were visible- when you toggled the "Only relevant" option. Now it's fixed.Visual Studio crashed after checking-in files fro…
Windows - VSPackage: Visual Studio crashed after checking-in files from the Pending Changes view. Now it's fixed.Fixed a wrong message during server shutdown
Linux - Server: Fixed a wrong message during server shutdown. Often we saw a wrong message during server shutdown like this:Hopefully it won't happen again.plasticd --consoleplasticd daemon up. 1.0.0.0 672 ms startup timeObject reference not set to an instance of an object.
8.0.16.3975
New
Gluon now properly handles file system permission…
All platforms - Gluon: Gluon now properly handles file system permissions (r-xr-xr-xcm partialThe Incoming Changes feature doesn't support the…
All platforms - Plastic: The Incoming Changes feature doesn't support the sub-branches. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic will detect this situation and it will let you know that you need to perform a merge to get the head changes. What is a sub-branch, then? We call "sub-branches" the situation that happens when a single branch has more than one line of changesets evolving in parallel. This scenario is often seen when working on distributed mode. Let's say there are 2 developers, John and Kate, who have workspaces pointing to the same branch. They checkin new changes each one in their server, and eventually, John pulls Kate's changes. They'll end up having something like this:
Screenshot
The Incoming Changes feature doesn't support work…
All platforms - Plastic: The Incoming Changes feature doesn't support workspace with transformer rules. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic detects this situation and it lets you know the steps you need to do to get the head changes.The Incoming Changes feature doesn't support a wr…
All platforms - Plastic: The Incoming Changes feature doesn't support a writable Xlink edited to point to a previous changeset. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic detects this situation and it lets you know the steps you need to do to get the head changes.Incoming changes: The incoming changes view now a…
Windows - Gluon: Incoming changes: The incoming changes view now allows you to check the items to update/resolve instead of obtaining all incoming changes.
Screenshot
calling [code]cm workspace[/code] with the wrong…
All platforms - Command line client: callingcm workspaceworkspaceworkspace createWe optimized the performance checking the securit…
All platforms - Server: We optimized the performance checking the security of a query or a branch explorer. Checking the security of 13000 branches:- Before: It took 2300 ms.
- After: It takes 110 ms
The security checks were slower after the first o…
All platforms - Server: The security checks were slower after the first operation that a user runs after a server restart. It happened due to some internal cache clearing. This will not happen anymore.Fixed the log that prints enqueued requests
All platforms - Server: Fixed the log that prints enqueued requests. The log did not print the line "Max threads have been reached. No new thread is created. Waiting for a free thread." since we allowed to create several new threads in chunks a few months ago.We improved the message when the client abruptly…
All platforms - Server: We improved the message when the client abruptly disconnects. We were sometimes printing "end of file" in the logs when in reality the client side was closing the socket.Improved the way the Incoming Changes deals with…
All platforms - Gluon: Improved the way the Incoming Changes deals with files that are locally changed in the workspace, out of date and are configured to use exclusive locking. The local changes done in these files cannot be merged with the server changes since they were configured to use the exclusive checkout. This scenario should be avoided by the user by locking (checking-out) the file before doing any change in it. Anyway, Gluon helped nothing once it occurred. Now, Gluon gives a better feedback to the user in two ways:- The "Explore workspace" view shows the 'Cannot merge' status for the files under the previous circumstances.
- The "Incoming changes" view reports that these changes cannot be applied with a proper explanation:
we improved the way we handle resources during po…
Plastic SCM Wwise Plugin: we improved the way we handle resources during potentially long operations like add, checkin, update and undo. Now, the GUI remains responsive during long operations, and you can cancel operations at any point.We now check the Plastic client version when you…
Plastic SCM WWise Plugin: We now check the Plastic client version when you click "Test Connection" in the configuration dialog. Note: the current minimum Plastic client version to use the Wwise plugin is 8.0.16.3876.We updated the pending changes in all our GUIs (o…
All platforms - Plastic, Gluon: We updated the pending changes in all our GUIs (or Checkin views, as you Gluon users may know them) to include a "Check/Clear all" checkbox right above the changes tree. This was already present in Windows, so now the remaining platforms have one less reason to be jealous. This new control is quite useful when you have a lot of changes, or they're distributed more than one category.We've enhanced the pending changes tree. You'll n…
Linux - Plastic, Gluon: We've enhanced the pending changes tree. You'll notice that categories will display an intermediate state when some but not all changes inside them are checked. This provides better visual feedback when you have a lot of changes in a category, especially when you have checked items inside it but the scroll position doesn't have them on display. Please note that not all GTK themes show this intermediate state. In that case, you'll only see it checked or unchecked.Our Visual Studio Package now supports the Incomi…
Visual Studio Package: Our Visual Studio Package now supports the Incoming Changes.you can now configure the server by running [code…
All platforms - Server: you can now configure the server by runningplasticd configureclconfigureserver.exeYou can now run$ clconfigureserver
And, instead of$ plasticd configure
You can now run$ clconfigureserver --WorkingMode=UPWorkingMode --port=8084 --language=English
$ plasticd configure --WorkingMode=UPWorkingMode --port=8084 --language=English
Bug
Servers that use a floating license wrongly inclu…
All platforms - Server: Servers that use a floating license wrongly included unauthenticated users in the Users Monitor. Now it will only list valid (i.e. authenticated) users. These unauthenticated users come from calls from wrongly configured clients or connection profiles. These users cannot access the server, but they were still wrongly included on the Users monitor. See an example: John has a local client & server, and he has its client configured with the user 'John'. When he tries to connect against the central server, the call fails and asks for valid user credentials. Remarks: This was NOT a security issue. Unauthenticated users were not able to access the server. The problem was that wrong and valid users were listed all together in the Users Monitor.The download operation failed if the path to the…
All platforms - Proxy server: The download operation failed if the path to the cached storage files was incomplete, i.e. there were missing directories in the path, not just a missing file. This could happen if a client requested dehydrated revisions (i.e. replicated with--nodataWe fixed an uncommon scenario in which the checki…
macOS - Server: We fixed an uncommon scenario in which the checkin operation could fail. The bug affects only servers running on newer macOS versions and using a SQL database backend (such as SQLite). The issue was a zlib compress output buffer smaller than required. We could only reproduce this issue while checking in specific trees - and only when the server had just started. So, you've probably never encountered this, and now never will! Let's thank our automated test suite for finding this one, as otherwise it well could have gone unnoticed for years.We fixed an issue with Active Method Calls that r…
All platforms - Server: We fixed an issue with Active Method Calls that reported calls mistakenly. We saw logs like these on our internal servers:And we suspected that some requests were 'hanged' somehow. But it wasn't true. The problem was that when some requests failed due to network issues, we were not tracking that the request exited, so it looked like it was there already, but it wasn't true.ACTIVE METHOD CALLSName Request IP Time Thread Status Protocol Sec UserUnknown-remoting 67793 77.231.x.x 00:00:01 1584 Proto Remoting SSLUnknown-remoting 67792 51.38.x.x 00:00:01 1583 SslAuth Remoting NoneUnknown-remoting 67791 77.231.x9.x0 00:00:03 1580 Proto Remoting SSLUnknown-remoting 67790 77.231.x9.x0 00:00:03 1579 Proto Remoting SSLUnknown-remoting 67789 77.231.x9.x0 00:00:03 1574 Proto Remoting SSLUnknown-remoting 67788 77.231.x9.x0 00:00:03 1581 Proto Remoting SSLUnknown-remoting 67787 77.231.x9.x0 00:00:03 1582 Proto Remoting SSLUnknown-remoting 67750 77.231.x9.x0 00:05:45 1575 Proto Remoting SSLUnknown-remoting 67749 77.231.x9.x0 00:05:45 1576 Proto Remoting SSLUnknown-remoting 67748 77.231.x9.x0 00:05:45 1573 Proto Remoting SSL
[code]cm pull hydrate[/code] now lets you hydrate…
All platforms - Command line client:cm pull hydrate...will now hydrate the specified changeset.cm pull hydrate cs:cadcf131-d7a4-4e4c-a665-fc04accb8c7f@myrepo@myserver:myport
The code review window reported index out of rang…
macOS - Plastic: The code review window reported index out of range errors when: a) you opened a code review window whose first change is a changed file with semantic support b) the semantic diff failed c) the diff fell back correctly to text mode d) you clicked the "toggle comments" button in the toolbar - the one that hides and shows the list of comments for the diffed file This happened because the review comments didn't load after the error and the toggle button logic didn't consider the possibility of an uninitialized comments list. We protected that scenario so that toggle button will check whether it can operate and also fallback text diffs will properly load the list of comments.[code]cm remove private[/code] now gives the corr…
All platforms - Command line client:cm remove privateb)With this release:$> cm remove private nonExistentFile --verboseDeleted 1 individual files and 0 directory trees.Deleted file: /nonExistentFile
$> cm remove private nonExistentFile --verboseDeleted 0 individual files and 0 directory trees.Could not delete 1 individual files and 0 directory trees.Skipped missing file or directory: /nonExistentFile
the new connection timeout didn't work with serve…
All platforms - Plastic, Gluon, Command line client: the new connection timeout didn't work with server aliases. We introduced an issue with the new connection timeout we created back in version 8.0.16.3819: when a connection timed out, the alias system was not triggered. This is now fixed! We also modified the internal network code so when a socket gets a timeout (it can be due to several reasons), the calls are not repeated and it fails fast.We have detected a situation in which the workspa…
Windows - Installer: We have detected a situation in which the workspace could be corrupted if you upgraded Plastic to version 8.0.16.3960 or higher with Office Plugin installed and any Word/Excel/PowerPoint instances opened. Now, during a upgrade installation, when the Office Plugin is installed, the installer checks for any running instance of Word, Excel or PowerPoint. You need to close them before continuing with the upgrade installation.8.0.16.3937
New
[code]cm find review[/code] command improved. Now\…
All platforms - Command line client:cm find reviewunder reviewreviewedrework required> cm find review where status='under review' --format="{title} - {status}"Review task branch HMP-238 - Status Under reviewTotal: 1
We are pleased to announce the first release of t…
Plastic SCM Plugin for Wwise: We are pleased to announce the first release of the Plastic SCM Plugin for Wwise. Wwise users can get Plastic source control functionality from within the application. To use the Plastic SCM Plugin for Wwise, you have to copy the plugin dll from your Plastic SCM client install directory to the following location in your Wwise install:Where<Wwise install directory>/Authoring/x64/Release/bin/SourceControl
<Wwise install directory />C:\Program Files (x86)\Audiokinetic\Wwise 2019.1.X.YYYY- In “Project” menu, open “Project Settings...”.
- In the “General” tab, “Workgroup” -> “Plug-in” combo, select “Plastic SCM”.
- Click “Config...”.
-
Here you can set the path to the . If left blank it will pick up any cm on the system
cm.exe.%PATH% - Click “Test connection” to check the setup.
- If the cm path is correct AND the project is in a Plastic workspace, you should see the message “Test connection executed successfully”.
- If you see “No workspace found for project”, check that the project is in a workspace.
- If you see “Failed to start Plastic SCM Shell Process.” Check the cm path.

Screenshot

Screenshot

Screenshot
Bug
Experimental Lz4 decompression could enter into a…
All platforms - Server: Experimental Lz4 decompression could enter into a death loop. This is not a critical issue since we didn't enable Lz4 network compression by default yet. We detected that when the client (using Lz4) closed the socket, the server side could enter into a tight loop trying to continue reading bytes and burning CPU (empty loop trying to read again and again). That's now fixed!We increased the initial width of the Repository…
Windows - Plastic: We increased the initial width of the Repository Explorer dialog so its controls don't overlap. This dialog allows you to select the target repository in the "New workspace" dialog.The proxy server didn't handle revisions with mis…
All platforms - Proxy server: The proxy server didn't handle revisions with missing data right. This is a common scenario if you replicate branches to a repository using the--nodata8.0.16.3922
New
We edited the explanation of the [code]cm attribu…
Command line client: We edited the explanation of thecm attribute editImproved the [code]ChannelCall[/code] log with mo…
All platforms - Server: Improved theChannelCall-
Added (method time) to plasticproto, it was always zero before.
mt -
Changed (process time, basically request time) in remoting to measure the entire request, now it is comparable to plasticproto.
prt - Added precise tracking to network times (millisecond precision) and lz4 compression/decompression
- Plastic Protocol and Remoting calls are now easier to compare - they are properly aligned!
2020-01-24 15:45:17,495 21 (null) INFO ChannelCall - conn: 2 protocol:plasticproto sec:none recb: 21|rect: 0|sentb: 4232249|sendt: 17|queuedt: 0|prt: 203|th: 21|dest: 0|mt: 0|sert: 186|zip: 0|cpu: 203| 127.0.0.1|user:pablo|GetChangesetTree2020-01-24 15:45:49,187 24 (null) INFO ChannelCall - conn: 3 protocol: remoting sec:none recb: 762|rect: 0|sentb: 5835118|sendt: 3|queuedt: 0|prt: 62|th: 24|dest: 0|mt: 0|sert: 47|zip: 0|cpu: 62| 127.0.0.1|user:pablo|GetChangesetTree
Serialization in Plastic protocol improved even m…
All platforms - Server: Serialization in Plastic protocol improved even more. We are working on performance to boost Plastic Protocol performance as much as we can. Starting from this release, Plastic Protocol will serialize data (big trees) faster than remoting. We still need to add a buffer pool but this will come soon.We optimized the Plastic Protocol serialization p…
All platforms - Server: We optimized the Plastic Protocol serialization performance. We use a binary protocol for network serialization that we called Plastic Protocol. We still have an ancient one called Remoting. We found out that remoting was serializing trees (and metadata in general) faster, due to the way we serialize in Plastic Protocol. The problem was an intermediate buffer we used to group metadata before sending it to the network. Writing to it was slow and it was killing performance. We fixed it and now serialization time in Plastic Protocol is as good as Remoting. It means that Plastic Protocol calls (the defaults) are now consistently faster than Remoting. With the test trees we used:- Before: Remoting needed 31-47 ms to serialize a 5MB tree. Plasticproto needed 87-113.
- After: Plasticproto is now 40-50 ms. We still have some room for improvement. But, since remoting sends more data (less effective protocol), Plasticproto should be consistently faster now.
We changed a message for when SSL negotiation fai…
All platforms - Server, Plastic, Command line client: We changed a message for when SSL negotiation fails. Before, we printed:Whilst now it says:Server yourserver:8084 does not support SSL.
And it will print extra info if possible. We found this while debugging some unit tests that failed sporadically, and we thought it would be good in production too.SSL negotiation with server yourserver:8084 failed.
Great news! You'll notice that branch code review\…
macOS - Plastic: Great news! You'll notice that branch code reviews now allow you to review changeset by changeset! There is a new switcher in the upper left corner of the window that enables you to switch back and forth between this new mode and the already supported "entire branch" review. Selecting a changeset in the list will recalculate the changes you see in the upper right panel so you can diff any of them. This provides a quick way to go through all changes in the branch you're reviewing. We're really excited about this, as we encourage our users to review their peers changeset by changeset. This provides a better insight about what the developer had in their mind and their thought process. You can see it in action in this video we recorded for you. We hope you'll like this as much as we do!Bug
Workspaces pointing to Cloud repositories did not…
All platforms - Plastic: Workspaces pointing to Cloud repositories did not support Global Configuration. There were invalid characters in the name of the workspace pointing to the global configuration (the@The Pending Changes view did not show cloaked con…
All platforms - Plastic: The Pending Changes view did not show cloaked controlled changes (e.g. after performing a merge operation that involved them). It is fixed now!Closing a Plastic view while loading its content…
Windows - Plastic: Closing a Plastic view while loading its content could break the workspace metadata under very specific concurrency circumstances. That left the workspace pointing to the changeset 0 and created filesplastic.wktree.bakplastic.changes.bak$workspace_root/.plastic8.0.16.3911
New
The new Code Review system now allows you to visu…
macOS - Plastic: The new Code Review system now allows you to visualize comments located in revisions that aren't loaded in the code review window. For example, this happens when you checked in new changes to apply revision comments. That creates new revisions for those files in the same branch, which don't match the commented revisions. When this happens, we display a panel with three actions:- Diff revision with comments: Compares the commented revision (right side) with the base one (left side).
- Last in branch: Compares the last revision in the branch (right side) with the base one (left side). This is what selecting a file in the changes tree does.
- Diff with head: Compares the last revision in the branch (right side) with the commented revision (right side).
Checking in your changes will refresh the branch…
Windows, macOS - Plastic: Checking in your changes will refresh the branch diff in opened code review windows now. This allows you to have the current information in your code review windows. Nobody likes stale data, right?Bug
The Checkin view didn't recalculate the diffs of…
Windows - Gluon: The Checkin view didn't recalculate the diffs of the selected file after refresh. Now it does!there were some aesthetic issues in the Performan…
All platforms - WebAdmin: there were some aesthetic issues in the Performance section. When browsing with Firefox, the numbers were cut out. Now it's fixed!8.0.16.3899
New
We edited the 'cm pull hydrate' example explanati…
All platforms - Command line client: We edited the 'cm pull hydrate' example explanation. It now highlights that this command introduces the missing data for all the changesets in a branch. Also, the 'cm pull' command now includes an example of how to hydrate a changeset.We improved how Plastic (client and server) manag…
All platforms - Server, Command line client, Plastic, Gluon, Unity3D plugin, Proxy server: We improved how Plastic (client and server) manages memory buffers. Our new changes will prevent Plastic from getting out of resources in its pools, also improving the response times under heavy load.The Checkin view menu has a new item: "Checkout"!…
All platforms - Gluon: The Checkin view menu has a new item: "Checkout"! It will put locally changed items under explicit version control. For instance, if you right-click a locally changed item and select "Checkout", that item will checked-out from that moment on. Private files will become Added, etc. This menu item behaves like the one with the same name in the Pending Changes view of Plastic.Bug
The Branch Explorer highlights search results in…
Windows - Plastic: The Branch Explorer highlights search results in yellow, with the focused result in orange. Because of a bug, the focused search result was losing its orange color after a refresh. Now it's fixed.Under some circumstances, move detection did not…
macOS, Linux - Plastic, Gluon, Command line client: Under some circumstances, move detection did not always work on *NIX systems. We could only reproduce this issue in Virtual Machines where the guest is one of these OSs, so you probably never encountered it - rest your mind knowing that it is fixed. Now let's dive into the details: Let's say that you have the following workspace configuration:Now you move/fileA.txt - CONTROLLED/fileB.txt - CONTROLLED/fileC.txt - CONTROLLED/fileD.txt - PRIVATE
fileA.txtfileE.txtWe want to know if/fileA.txt - LOCALLY DELETED/fileB.txt - CONTROLLED/fileC.txt - CONTROLLED/fileD.txt - PRIVATE/fileE.txt - PRIVATE
fileA.txtfileD.txtfileE.txt[A <> D][A <> E]...and in an ideal world is that easy. But now imagine that we have thousands of private files. We can't compare A with those thousands of files to determine the local move operation fast enough. So, in order to reduce the number of files we need to compare against, one of the filters we apply is the timestamp of the file. And if we lose timestamp precision because of the underlying File System in any of the operations involved, move detection breaks! Now, it is fixed./fileE.txt - LOCALLY MOVED (src: /fileA.txt)/fileB.txt - CONTROLLED/fileC.txt - CONTROLLED/fileD.txt - PRIVATE
ChannelCall incorrectly printed [code]sec:none[/c…
All platforms - Server: ChannelCall incorrectly printedsec:noneTheChannelCall - conn: 340 protocol:remoting sec:none recb: 741|r
sec:none8.0.16.3887
New
Added the embedded diff viewer in the "Checkin ch…
Windows - Gluon: Added the embedded diff viewer in the "Checkin changes" view. When you select a file in the "Checkin changes" view, the differences appear in a panel at the bottom of the window (or the file content, when it's an added / moved / deleted file). These are the file formats supported by the viewers:- Text diffs
- Semantic diffs for supported languages
- Image diffs
- Binary diffs (we display the file metadata).

Screenshot
When there is no item selected in the pending cha…
Windows - Plastic: When there is no item selected in the pending changes view, we display the following improved empty state:
Screenshot
We changed the usage of the "cm update" and "cm p…
All platforms - Command line client: We changed the usage of the "cm update" and "cm partial update" commands to make clearer which arguments are optional (i.e. those that can be omitted).Now you can just run "cm update" to update the fu…
All platforms - Command line client: Now you can just run "cm update" to update the full workspace. The workspace root path is no longer needed. You don't need lines like "cm update $wk_root_path" or "cm update ." anymore.We improved how the merge operation solves multip…
All platforms - Plastic: We improved how the merge operation solves multiple directory conflicts. Before these changes, any conflict that Plastic SCM couldn't apply caused the operation to stop. Now, the merge will continue solving any remaining conflicts. Additionally, the operation retries all failed conflicts at the end. Directory conflict resolution might fail because it depends on another conflict resolution. That's why it makes sense to try again, so Plastic can smoothly apply it at the end. Let's see a case. Base content:Source changes:/PS4/PS4/settings/PS4/settings/Center.xml/XboxOne/XboxOne/settings/XboxOne/settings/Center.xml/Windows/Windows/settings
Destination changes:mv /PS4/settings/Center.xml /Windows/settings/Center.xml
This merge has 2 conflicts:mv /Xbox/settings/Center.xml /Windows/settings/Center.xmlrm /PS4
- Move evil twin conflict: /Windows/settings/Center.xml
- Move/Deleted conflict: /Windows/settings/Center.xml
We noticed that our trunkbot kept notifying that…
All platforms - Server: We noticed that our trunkbot kept notifying that there is no CI system configured if you skipped that step during setup. This happened for every processed branch. That's annoying! You don't really need to know that something did not run if you explicitly configured it that way, right? Well, we fixed it!Bug
Some complex merge cases failed, showing errors l…
All platforms - Plastic, Command line client: Some complex merge cases failed, showing errors like the following:The item '/bdwgc/cord/tests/de_cmds.h' cannot be restored because it had changes in it when it was deleted. Please undo the pending changes and repeat the merge without pending changes or with another conflict resolution.Source changes:/boehmgc/boehmgc/cord/boehmgc/cord/tests/boehmgc/cord/tests/de_win.h/boehmgc/cord/tests/de_cmds.h/bdwgc
Destination changes:add /bdwgc/cordadd /bdwgc/cord/testsmv /boehmgc/cord/tests/de_cmds.h /bdwgc/cord/tests/de_cmds.hrm /boehmgc
The error appeared when you chose to keep the source contributor for all directory conflicts.add /bdwgc/cordadd /bdwgc/cord/testsmv /boehmgc/cord/tests/de_win.h /bdwgc/cord/tests/de_win.hedit /bdwgc/cord/tests/de_win.hmv /boehmgc/cord/tests/de_cmds.h /bdwgc/cord/tests/de_cmds.hrm /boehmgc
Some complex merge cases failed, showing errors l…
All platforms - Plastic, Command line client: Some complex merge cases failed, showing errors like the following:The following merge operations cannot be applied: M "c:/tmp/SCM14918/boehmgc/cord/tests/middle.c" "c:/tmp/SCM14918/bdwgc/cord/tests/middle.c" - Error: "Item cannot be moved because it cannot be found."Source changes:/boehmgc/boehmgc/cord/boehmgc/cord/tests/boehmgc/cord/tests/de_win.h/boehmgc/cord/tests/de_cmds.h/boehmgc/cord/tests/middle.c/bdwgc
Destination changes:add /bdwgc/cordadd /bdwgc/cord/testsmv /boehmgc/cord/tests/de_cmds.h /bdwgc/cord/tests/de_cmds.hmv /boehmgc/cord/tests/middle.c /bdwgc/cord/tests/middle.crm /boehmgc
The error appeared when you chose to keep the source contributor for all directory conflicts.add /bdwgc/cordadd /bdwgc/cord/testsmv /boehmgc/cord/tests/de_win.h /bdwgc/cord/tests/de_win.hedit /bdwgc/cord/tests/de_win.hmv /boehmgc/cord/tests/de_cmds.h /bdwgc/cord/tests/de_cmds.hrm /boehmgc
Some complex merge-to cases failed, showing error…
All platforms - Server: Some complex merge-to cases failed, showing errors like the following:Can't add an entry with the same name. Duplicated child [head.png]. Parent [art]Source changes:/art/art/data/art/data/face.png
Destination changes:add /art/head.pngrm /art/data
The error appeared during the merge-to resolution when you chose to keep the source contributor for all directory conflicts.mv /art/data/face.png /art/head.pngedit /art/head.pngrm /art/data/UnityExtensions/Unity/Timeline
After resizing the Plastic window, sometimes the…
Windows - Plastic: After resizing the Plastic window, sometimes the diff scroll was unable to reach the textbox botton, due to a scrollbar metrics issue. Now it's fixed.8.0.16.3880
New
have you ever wanted to see the status of your cl…
Command line client: have you ever wanted to see the status of your cloaked items using the CLI? Of course you have. And now you can! Use the new "--cloaked" flag of "cm status". The normal status output denotes cloaked items withCloakedCLc:/wks/cloaked>cm status --cloaked/main@cloaked@localhost:8084 (cs:23 - head)Changed Status Size Last Modified Path Changed / Cloaked 6.25 KB 5 days ago Ambience_cloaked.wwu Changed 1.75 KB 20 days ago Car Engine.wwuDeleted Status Size Path Removed / Cloaked 69.02 KB Factory Effects.wwuAdded Status Size Last Modified Path Private 111 bytes 4 days ago cloaked.conf Added / Cloaked 0 bytes 4 days ago newcloaked.txtc:/wks/cloaked>cm status --cloaked --machinereadableSTATUS 23 wwise localhost:8084CH+CL c:/wks/cloaked/Ambience_cloaked.wwu False NO_MERGESDE+CL c:/wks/cloaked/Factory Effects.wwu False NO_MERGESAD+CL c:/wks/cloaked/newcloaked.txt False NO_MERGESCH c:/wks/cloaked/Car Engine.wwu False NO_MERGESPR c:/wks/cloaked/cloaked.conf False NO_MERGES
We added a new code, "HC", to the machine-readabl…
Command line client: We added a new code, "HC", to the machine-readable output of "cm status". It denotes files or directories included in the hidden_changes.conf filter. Example:c:/wks/hiddenchanges>cm status --hiddenchanged --machinereadableSTATUS 23 wwise localhost:8084CH+HC c:/wks/hiddenchanges/Ambience_hiddenchanged.wwu False NO_MERGES
Bug
Diff failed with no-data replicated branches
All platforms - Plastic: Diff failed with no-data replicated branches. You replicate a branch with no-data and then the diff failed because it wasn't able to locate the original data. Back in 8.0.16.3046 we made improvements in the diff to avoid showing "empty contents". It was a concurrency problem. Unfortunately, we broke the diff for nodata (data not downloaded to the repo, only metadata) and it refused to show the diffs loading missing contents from the original server.After disabling and re-enabling a button in the G…
Windows - Plastic: After disabling and re-enabling a button in the GUI, the icon color could denote that the button was still disabled. This color remained until an application restart. Now it's fixed!
Screenshot
If you tried to close the Sync view while it is l…
Windows - Plastic: If you tried to close the Sync view while it is loading, it could make Plastic to crash and close. Now it's fixed.8.0.16.3868
New
Incoming changes: The tool now converts pending c…
Windows - Gluon: Incoming changes: The tool now converts pending changes into checkouts before calculating the incoming changes. This allows detecting the files in conflict with your current changes.Incoming changes: the 'Incoming changes" view is…
Unity 3D plugin - Gluon: Incoming changes: the 'Incoming changes" view is now complete! It allows you to solve file conflicts when there are new changes in conflict. The "Resolve Conflicts..." context menu is now enabled. Now it is possible to resolve conflicts in assets individually. An asset will be in "conflict" state when you have local changes in an asset, and somebody else created a new revision of the same asset in the repository on the same branch you are working on. REMARK: Only available in Gluon mode!
Screenshot

Screenshot

Screenshot

Screenshot
%LocalAppData%\plastic4\client.conf<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>
Improved the [code]cm find[/code] examples by add…
Command line client: Improved thecm findBug
The Incoming Changes operation sometimes left wri…
All platforms - Plastic: The Incoming Changes operation sometimes left writable Xlinks as checked-out. This issue affected only Xlinks that pointed to a different changeset but without changes inside. How did it happen? Let's assume that our workspace is loading thecs:5-
Add the new file and check it in (
/doc/new.c).cs:6 -
Remove the file and check it in (
/doc/new.c).cs:7 -
Switch to the original changeset .
cs:5 -
Run the Incoming Changes operation to update the workspace to . Then, the xlink
cs:7appears as checked-out without changes./doc
Fixed the order in some checkin steps that caused…
All platforms - Plastic, Command line client: Fixed the order in some checkin steps that caused issues when abefore-checkinbefore-checkin8.0.16.3859
New
The Code Review is finally available for macOS us…
macOS - Plastic: The Code Review is finally available for macOS users! We still have some things to implement, but you can start using it in your day to day. You can access the code reviews from the sidebar. Creating a code review is as easy as one-two-three. Just right click a branch, and select "New Code Review for this branch...". It also works for changesets, both from the Branch Explorer and from the Query views. Once you open a new code review, you will see the following warning in the window:
Screenshot
A few releases back, we changed the default path…
All platforms - Plastic: A few releases back, we changed the default path of the Branch Explorer configuration file. It is now inside the.plasticplastic.branchexplorerallreposUntil this release, the client looked for the file only inlet SpecificRepo be the Repository your current workspace is pointing to.let SpecificRepServer be the Repository Server that hosts SpecificRepo.let DefaultRepServer be the Repository Server you have configured in client.conf.Search path goes as follows (to support legacy behavior too!): 1) globalconfig/SpecificRepServer/SpecificRepo [new] 2) globalconfig/SpecificRepServer/allrepos [new] 3) globalconfig/DefaultRepServer/allrepos [legacy]But we also support the following file names for Branch Explorerconfiguration: - branchexplorer.cfg [legacy Windows] - branchexplorer.conf [legacy Linux & macOS) - plastic.branchexplorer [new, all platforms] The search path goes as follows: 1) New filename, new path 2) Legacy filename, new path 3) Legacy filename, legacy pathWith this, the search path is as follows: 1.1) globalconfig/SpecificRepServer/SpecificRepo/plastic.branchexplorer 1.2) globalconfig/SpecificRepServer/SpecificRepo/branchexplorer.conf 1.3) globalconfig/SpecificRepServer/SpecificRepo/branchexplorer.cfg 2.1) globalconfig/SpecificRepServer/allrepos/plastic.branchexplorer 2.2) globalconfig/SpecificRepServer/allrepos/branchexplorer.conf 2.3) globalconfig/SpecificRepServer/allrepos/branchexplorer.cfg 3.1) globalconfig/DefaultRepServer/allrepos/plastic.branchexplorer 3.2) globalconfig/DefaultRepServer/allrepos/branchexplorer.conf 3.3) globalconfig/DefaultRepServer/allrepos/branchexplorer.cfg
3.23.3plastic.branchexplorerawesomeproject@remoteserver:9095localhost:8087globalconfig/remoteserver_9095/awesomeproject/plastic.branchexplorerglobalconfig/remoteserver_9095/awesomeproject/branchexplorer.confglobalconfig/remoteserver_9095/awesomeproject/branchexplorer.cfgglobalconfig/remoteserver_9095/allrepos/plastic.branchexplorerglobalconfig/remoteserver_9095/allrepos/branchexplorer.confglobalconfig/remoteserver_9095/allrepos/branchexplorer.cfgglobalconfig/localhost_8087/allrepos/plastic.branchexplorerglobalconfig/localhost_8087/allrepos/branchexplorer.confglobalconfig/localhost_8087/allrepos/branchexplorer.cfg
Incoming changes: we improved the check to determ…
Windows - Gluon: Incoming changes: we improved the check to determine if there are new changes available in order to show the notification bar only when there is any change that can be applied (e.g: the moves which cannot be applied are now filtered).Bug
Fixed two issues in the new Code Review System
Windows - Plastic: Fixed two issues in the new Code Review System:- .NET files (C#/VB.NET): When navigating to a comment, if the source file had code regions, they were collapsed by default. When this happened, the selected comment was lost.
- .NET files (C#/VB.NET): Sometimes, when navigating to a comment, the source file was not correctly scrolled to the line the comment was inserted. Now it's fixed.
The Incoming Changes displayed the message "[code…
All platforms - Command line client: The Incoming Changes displayed the message "Merging file 1 of 1: README.txtIf you cancel the merge (i.e. exit without saving), you'll see this instead:Merging file 1 of 1: README.txtMerged file 1 of 1: README.txt
Merging file 1 of 1: README.txtNot merged file 1 of 1: README.txt
The update operation could wrongly load a file/di…
All platforms - Gluon: The update operation could wrongly load a file/directory from a xlink inside its parent xlink. For this to happen, some kind of Plastic internal ids matching was needed (the item id of the revisions loaded by the xlinks should match) Let's see an example of what could happen. Having the following structure in the server tree:After the workspace update, the file '/game (xlink)/game/content/textures (xlink)/game/content/textures/texture_A.01 (file)
texture_A.01/game/game/content/textures/game (xlink)/game/texture_A.01 (file)/game/content/textures (xlink)
The updade operation didn't download the new item…
All platforms - Gluon: The updade operation didn't download the new items when they were located directly under the xlink and the xlink was changed. Fixed.8.0.16.3841
New
Now the socket connect has a default timeout of 3…
All platforms - Plastic, Gluon, Server, command line: Now the socket connect has a default timeout of 3 seconds, to avoid waiting forever on unreachable servers. Timeouts are good to avoid waiting forever when you have network issues. Now, if you try to reach an unreachable server that has a valid address, instead of waiting for 20 seconds (on Windows) it will throw an error in 3 secs:== How to configure == Default is 3 seconds, but you can configure it in several ways. For plasticprotocol (the default) just edit> cm repo list 192.168.221.218:8084Error: Can't connect to [192.168.221.218:8084] after 3000 ms. To increase the timeout set SocketConnectTimeoutMillisec in client.conf. Configure server.conf if the timeout happens during push/pull
client.confserver.confThe value is in milliseconds. If you set it to 0, it will be an infinite timeout. In case you are using remoting, edit yourSocketConnectTimeoutMillisec
remoting.conftimeoutMilliseconds="4000"channel type="PlasticPipe.Remoting.Tcp.PlasticTcpChannel, plasticpipe" name="normal" timeoutMilliseconds="4000"
Improved DNS name resolution during socket creati…
All platforms - Server and all clients: Improved DNS name resolution during socket creation. We've been working on introducing timeouts during socket connect. After doing that, we detected some issues during internal testing, where some connections timed out when they didn't before. This was because the BeginConnect we use to do the async is internally doing some wrong stuff with name to IP resolution. Framework code that sometimes doesn't work as expected. Anyway, we introduced some fixes so we now avoid unneeded translations when the name is already an IP, and we also cache resolutions (not needed normally, but when the underlying network has some glitches, and we saw it with VMWares we use, it can happen).Incoming changes: the notification bar for the ne…
Windows - Gluon: Incoming changes: the notification bar for the new 'Incoming changes' view is now available. When you are working in a single branch with other people, it is common to find they have checked in new changes. When this happens, Gluon will notify you on the top-right area of the window.- Scenario 1: You have no pending changes and new changes from other users appear. Gluon will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them.
- Scenario 2: You have pending changes. New changes from other users appear, but they don't affect any of the files you have changed. Gluon again will show you the green notification for the same purpose.
- Scenario 3: You have pending changes. New changes from other users appear, and there are changes in files that you have also changed. In this case you need to merge these changes. Gluon will show you a red notification in order to allow you to see the conflicts in the Incoming Changes view, and resolve them.

Screenshot

Screenshot

Screenshot
%LocalAppData%/plastic4<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>
Workspace Explorer navigation was slow because ev…
Windows - Plastic: Workspace Explorer navigation was slow because every key hit triggered a network call. Each time you selected a file in the Workspace Explorer, with the mouse or the keys, it wrongly triggered a network call to retrieve the global config and find external actions to add to the context menu. It happened for branches, labels and changesets too. We fixed it and now the external tools are only loaded when you switch workspaces, so navigation with keys is smooth again.All platforms - Command line client is now able t…
All platforms - Command line client is now able to do Incoming Changes both withcm updatecm checkin== What if there is a directory conflict ==> cm update .Processing directory conflictsProcessing directory operationsMerging file 1 of 1: README.txt
== During cm ci --update ==> cm update . Going to resolve the following conflict:Divergent move conflict: Source: Moved from /ConsoleApplication to /ConsoleApp Destination: Moved from /ConsoleApplication to /ConsApp Please choose a resolution for this conflict. Which operation do you want to keep?: 0. Skip 1. Destination 2. Source 2Processing directory conflictsProcessing directory operationsMerging file 1 of 2: README.txtMerging file 2 of 2: ConsoleApp\AssemblyInfo.cs
Remember, the Incoming Changes is an experimental feature. It allows you to get the latest changes from the server, rebasing your pending changes on the process. To enable this feature, simply add the following line to your client.conf configuration file:> cm ci -c "go in" --update The selected items are about to be checked in. Please wait... / Validating checkin data Processing directory conflicts Processing directory operationsMerging file 1 of 1: README.txt Validating checkin dataUploading file dataConfirming checkin operationModified README.txtModified ConsoleApp\AssemblyInfo.csCreated changeset cs:1150@br:/main@quake@localhost:6060 (mount:'/')
<EnableIncomingChanges>yes</EnableIncomingChanges>
Bug
[code]cm update[/code] was failing to show the an…
Command line client:cm updateFixed a null error during the exclusive checkout…
All platforms - Server: Fixed a null error during the exclusive checkout (lock) operation. It happened under not very clear conditions when the working branch was not valid (it doesn't appear on the branches view nor in the Branch Explorer).Views that for whatever reason failed to load lef…
Windows - Plastic: Views that for whatever reason failed to load left the GUI in an inconsistent state. It prevented you to open any other views. You had to restart the GUI and hope that the view initialization error didn't appear again. That's gone for good!Sometimes you got an warning message telling you…
Windows - Plastic: Sometimes you got an warning message telling you that the view state coudln't be saved inguivisualstate.xmlThe "Recent workspaces" menu (the one that appear…
Windows - Plastic: The "Recent workspaces" menu (the one that appears in the top left corner) used to contain the current workspace. That's not really useful, is it? We changed the menu so it will never contain the current workspace. Less noise to worry about!Improved Pending Changes UX. After deleting a fil…
Windows - Plastic: Improved Pending Changes UX. After deleting a file, the view was refreshed and the selection was lost. Now, when a file is deleted, Plastic selects the closest file in the list.The update operation couldn't download files when…
All platforms - CLI, Plastic: The update operation couldn't download files when there was a directory in the target path. Likewise, the operation wasn't able to create directories when files existed in the target paths. Now it's fixed.The new Code Review now sorts changesets by date…
Windows - Plastic: The new Code Review now sorts changesets by date when reviewing changeset by changeset. Before this fix, the changesets were sorted by their Changeset Id. This lead to an incongruent changeset list under scenarios involving replication. When replicating changesets, an older one can have a Changeset Id higher than a newer one. This is because the Id is not replicated - the server assigns the Ids in a "first-in, first-served" fashion. Using the old sorting method, an old changeset could appear after a newer one, making review difficult.The comment text in the code review window never…
Windows - Plastic: The comment text in the code review window never displayed the vertical scroll bars. This was problematic because you wouldn't know you could scroll down unless you tried it out. Now you'll see those scroll bars in the comment text box when the comment text is too long to be displayed in the text box.The bundled mergebots couldn't handle submodules.…
All platforms - server: The bundled mergebots couldn't handle submodules. You know, repos named likemainProject/assetsnewGame/tools/releaseBuilderhttp://my.plastic.server.net/api/v1/repos/mainProject%2Fassets/branches/mainFixed merge-to diff menus that we broke in 8.0.16…
Windows - Plastic: Fixed merge-to diff menus that we broke in 8.0.16.3749. Back in 8.0.16.3749 we broke the diff context menus when doing a merge-to. They are fixed now. We also cleaned up the old code, and made sure when you do diff src and dst in merge-to, the dst stays on the right, like you would expect. It went to the left before.Merge-to does not checkout local changes incorrec…
All platforms - Plastic: Merge-to does not checkout local changes incorrectly anymore. When we released 3673 we made merge calculation to apply local changes (a.k.a. checkout). But we incorrectly did it for merge-to, which doesn't make sense because your local changes are not involved at all in the merge.8.0.16.3816
New
We made the server combo box on the repository (a…
Windows, Linux - Plastic: We made the server combo box on the repository (and Cloud) view wider, so it shows long server address without truncating.Did you run into some cryptic error messages such…
All platforms - Plastic: Did you run into some cryptic error messages such as "find is not supported for object '19'" or "The method CreateCodeReviewComment is not supported"? It's likely coming from your outdated server! It doesn't support the new code review comment, but your shiny, up-to-date client does. We improved that so the client will output readable messages to let you that you need to upgrade your server.Incoming changes: the context menu for the new 'I…
Windows - Gluon: Incoming changes: the context menu for the new 'Incoming changes" view is now available. It allows you to perform the following operations:- Merge selected conflicts.
- Merge selected files keeping source.
- Merge selected files keeping destination.
- Diffs yours with incoming.
- Diff incoming changes.

Screenshot
%LocalAppData%\plastic4\client.conf<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>
We made the server more robust by fixing a couple…
All platforms, Server: We made the server more robust by fixing a couple of potential problems when timeouts happen.- Now, if the server detects a timeout while reading a request, it will close the connection. Before this change it kept the connection open and continued reading - which could lead to strange readings and logs. Not critical, but it is better now.
- The server could abandon connections that could stay idle until the client closed them. Now this is fixed. We are not sure this was ever find in production.
Diffing files with an external tool is now faster…
All platforms - Plastic & Gluon: Diffing files with an external tool is now faster. This applies to diffing 2 revisions of a file from the item history, file conflicts during a merge... This boost in performance comes from optimizing server calls. There was one in particular that could take even a few seconds when working with big trees (i.e. more than 100k items) in a server that uses a SQL-based backend. The server doesn't execute those calls anymore in this scenario. By the way, we recommend you to migrate your SQL backend to our Jet backend! It's really faster and our recommended choice. Take a look at 'The story of Jet: Plastic's super-fast repo storage'.We improved the 2D revision tree for revisions ad…
Windows - Plastic: We improved the 2D revision tree for revisions added in merge sources. Those displayed blank diagrams, not very useful. They'll now load the added revision and its related changes, just like any other revision in the merge!Socket receive timeout now defaults to 10 seconds
All platforms - Server: Socket receive timeout now defaults to 10 seconds. In case you need to change it: editremoting.confTo increase to 15 seconds:channel type="PlasticPipe.Remoting.Tcp.PlasticTcpChannel, plasticpipe" port="8084" name="normal" socketReceiveTimeout="15000"
socketReceiveTimeout="15000"socketReceiveTimeout="-1"Bug
The embedded diff/content view in the Pending Cha…
All platforms - Plastic & Gluon: The embedded diff/content view in the Pending Changes View sometimes failed with the errorCannot download revision XXX from server: Data cannot read/write to Plastic Cloud. There was an authentication issue...When you upgrade the Proxy using the installer, i…
Windows - Plastic Proxy: When you upgrade the Proxy using the installer, it removes the old version before copying the new one. But it was removing configuration files by mistake too! In particular,plasticcached.confplasticcached.remoting.confplasticcached.remoting.confCheckin operations could fail with the error [cod…
All platforms - Server. SQL backends: Checkin operations could fail with the errorThe object is currently locked...We disabled the two history-related items in the…
Windows - Plastic: We disabled the two history-related items in the workspace explorer context menu, applying only to added items. It doesn't make a lot of sense to display the history of items you are about to add, right?8.0.16.3799
New
Improved how we draw the selected comments in the…
Windows - Plastic: Improved how we draw the selected comments in the new Code Review system. Now, when you select a comment, the textbox draws a selection mark around the commented lines. Note that at the moment we only support single-line comments, but we'll support multi-line comments soon.
Screenshot
we improved the warning message when an operation…
Command line client: we improved the warning message when an operation can't run because another operation already locked the workspace - it now tells you which operation is locking the workspace. This is the old message:And this is the new one:The object is currently locked. Try later. Workspace: 'test_wk'.
An existing merge operation has locked the workspace 'test_wk'. Please wait for the merge operation to finish.
Incoming changes: the new 'Incoming changes" view\…
Windows - Gluon: Incoming changes: the new 'Incoming changes" view is now complete, so it allows you to preview, download and solve file conflicts when there are new changes.
%LocalAppData%\plastic4Current limitation:<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>
- There is no notification saying there are new changes available yet.
We added some new extensions to the default lock…
All platforms - Server: We added some new extensions to the default lock rules. We also tweaked a little bit the WebAdmin's Lock Rules webpage to better explain how global lock rules apply to repositories.Did you notice that you couldn't display the cont…
Windows - Plastic: Did you notice that you couldn't display the contents of added/deleted items in a merge preview? Well, this update will put that inconvenience in your rearview mirror. You'll notice that the "Diff ancestor with source contributor" item is now enabled in the merge view for those added/deleted source conflicts. Clicking them will display the revision contents in a new window. This applies to the Incoming Changes view, too. The menu item title changes: it's "Diff incoming changes" instead.Some customers asked for a way to show the old co…
Windows - Plastic: Some customers asked for a way to show the old code review window when opening a code review. This is now possible by adding a--oldcodereviewplastic.exe --oldcodereview
Bug
The History and Undelete panel tables didn't have…
Windows - Gluon: The History and Undelete panel tables didn't have the appropriate styles applied to them. Fixed!We fixed the error "Can't add an entry with the s…
All platforms - Client: We fixed the error "Can't add an entry with the same name" that could happen in operations that apply local changes. That might be the checkin, undo changes, or explicitly apply the local changes (convert local uncontrolled changes in checkouts). The issue happened when you locally moved a directory with one of their children checked out, and you locally moved another controlled file in the new destination of that checked out file. Let's see an example. Add the following structure, each file having different contents:Now, checkout file /dirA/file3.txt:/dirA/dirA/file1.txt/dirA/file2.txt/dirA/file3.txt/dirA/file4.txt/dirA/file5.txt/dirA/file6.txt/file.txt
Then, rename dirA to dirB outside Plastic. If you're using the Windows command prompt, this is what you'd type:co /dirA/file3.txt
After that, take the controlled file /file.txt and move it (using the shell or Explorer, not Plastic) to overwrite /dirB/file3.txt (which used to be /dirA/file3.txt and is checked out):move dirA dirB
Finally, run a global undo operation:move /Y file.txt dirB/file3.txt
At this point, the command above failed with the mentioned error "Can't add an entry with the same name". Please note that this issue happened while the command tried to apply the local changes to convert them to controlled ones. So, the same thing could happen if you right-clicked these changes in the Pending Changes view and clicked "Checkout" in the popup menu.cm unco --all
8.0.16.3785
New
Good news! Our SCC plugin now supports logging th…
All platforms - SCC Plugin: Good news! Our SCC plugin now supports logging the checkin results in your configured issue tracker. This was detected by a customer using PowerBuilder, so we can now proudly say that PB can log the checkins through SCC :-)increased the default width of the code review wi…
Windows - Plastic: increased the default width of the code review window. This way the controls aren't drawn on top of each other.fixed the vertical alignment of the label of the…
Windows - Plastic: fixed the vertical alignment of the label of the filter on the code review window.Bug
fixed "unable to cast object" error that appeared…
Windows - Plastic: fixed "unable to cast object" error that appeared when choosing "Only relevant" on the 2D history view.Added a few extra protections to the code to avoi…
Windows, Linux - Proxy: Added a few extra protections to the code to avoid deadlocking while downloading data. We increased the size of the buffer pool we use to download data, because we suspect it can be creating a deadlock. We are not 100% sure but we saw a proxy stalled and so far this is the only reason we can think of.Checkin failed when there are NuGet packages outs…
Windows - Visual Studio Package: Checkin failed when there are NuGet packages outside the solution directory. This could happen with Visual Studio 2019. Now it's fixed.Protected the new timers controlling cache clean…
Linux, Windows - Proxy: Protected the new timers controlling cache clean up from unexpected exceptions. We detected a bug in our internal proxy when one of the new timers (introduced a few releases ago to support auto-cleanup) threw an exception.We are more used to threads than timers, and we didn't protect them correctly. Now it's fixed.Application: plasticcached.exeFramework Version: v4.0.30319Description: The process was terminated due to an unhandled exception.Exception Info: System.IO.IOExceptionat System.IO.__Error.WinIOError(Int32, System.String)at System.IO.File.InternalDelete(System.String, Boolean)at Codice.CM.PlasticCacheServer.StoreProxyLeastRecentlyUsed.ToDisk(System.String, Codice.CM.PlasticCacheServer.ProxyLeastRecentlyUsed)at Codice.CM.PlasticCacheServer.CacheSystemRunner.StoreLruToDisk(System.String, Codice.CM.PlasticCacheServer.ProxyLeastRecentlyUsed)at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)at System.Threading.TimerQueueTimer.CallCallback()at System.Threading.TimerQueueTimer.Fire()at System.Threading.TimerQueue.FireNextTimers()
8.0.16.3772
New
The plugin now propertly deletes local, private a…
Unity 3D plugin: The plugin now propertly deletes local, private assets. If you want to know more about this: the underlying Version Control needs to delete private/local assets starting on Unity Editor 2019.X. Older Editor versions are still compatible with this plugin version.We improved the look and feel of the comment icon…
Windows - Plastic: We improved the look and feel of the comment icons in the Code Review bar. Hovered or selected comments weren't visible enough. Now you'll notice how comment icons change when you select them or you hover the mouse cursor over them: they'll grow larger and get a thicker, double-lined border. This is the aspect it has:
Screenshot
--cr-disable-high-contrast-colors> plastic.exe --cr-disable-high-contrast-colors
Incoming changes: There's a new view called "Inco…
Windows - Gluon: Incoming changes: There's a new view called "Incoming Changes". It previews what Gluon needs to download. This new view will eventually allow you to preview, download, and solve file conflicts when there are new changes. Right now this feature only does the first stage: previewing. To see its power in action, stay tuned for upcoming releases!
client.conf%LocalAppData%\plastic4<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>
The discarded Change Requests in a code review no…
Windows - Plastic: The discarded Change Requests in a code review no longer appear in the "Close change requested in review" combo-box in the Pending Changes view.The update operation handles better the moved cha…
All platforms - Gluon: The update operation handles better the moved changes in the following ways: = First scenario =-
Mark has the file checked-out in the workspace.
/action/member.c -
Steffy moves the file from to
/action/member.cand check it in./animation/member.c -
Mark runs an update and Plastic properly applies the movement, so he has checked-out now.
/animation/member.c
-
Steffy moves in her workspace the file to
/action/member.cbut she doesn't check it in./animation/member.c -
Mark modifies the file and checks it in.
/action/member.c -
Steffy runs an update and the new revision of is updated at her moved location
member.c./animation/member.c
Bug
Fixed a deadlock issue using an SQL backend. This…
All platforms - Server: Fixed a deadlock issue using an SQL backend. This deadlock happened on really corner scenarios under heavy load.Sometimes, in the new Code Review system, the 'Re…
Windows - Plastic: Sometimes, in the new Code Review system, the 'Review Comments Summary' appeared empty even though there were comments in the review. Now it's fixed!Some buttons ellipsized their captions if the tex…
Windows - Gluon: Some buttons ellipsized their captions if the text was long enough. This issue particularly hit those who use Gluon with Japanese localization. The GUI didn't calculate the button width correctly because the default font in Japanese is different from the one used in Western languages. Now it's fixed! A special shout out to our friend Hiroaki Nakano for letting us know about this problem.Fixed an issue with trigger filters where it was…
All platforms - Server: Fixed an issue with trigger filters where it was necessary to append '*' to the filter for it to work with repositories. For example, the trigger...:...is now equivalent to...:cm trigger create before-checkin MyTrigger c:\tmp\mytrigger.bat --filter="rep:repo2,*"
...without the ",*" at the end.cm trigger create before-checkin MyTrigger c:\tmp\mytrigger.bat --filter="rep:repo2"
The annotate view didn't disable the navigation b…
macOS - Plastic: The annotate view didn't disable the navigation buttons while the navigation operation ran. This left the door open to null reference errors if you clicked the navigation buttons quick enough. Not anymore!The annotate view didn't disable the navigation b…
Linux - Plastic: The annotate view didn't disable the navigation buttons while the navigation operation ran. It does now, so it's consistent with the general behavior of the GUI when any operation runs.The server will now upgrade any outdated reposito…
All platforms - Server (Jet backend): The server will now upgrade any outdated repository database on its startup stage. This could happen in the following scenario:- Create a backup of a repository database.
- Upgrade the Plastic Server to a newer version.
- Finally, replace the repository database with the backup.
Now the server upgrades any repository database a…
All platforms - Server (Jet backend): Now the server upgrades any repository database added usingcm repository add8.0.16.3760
New
We added triggers for object removal events!
All platforms - Server: We added triggers for object removal events! The goal is that you can set-up scripts to run automatically before and/or after objects are deleted. The objects handled are branches, changesets, labels and attributes. This is the complete list of new triggers:-
before-rmchangeset -
after-rmchangeset -
before-rmbranch -
after-rmbranch -
before-rmlabel -
after-rmlabel -
before-rmattribute -
after-rmattribute
rmbranch-
: The name of the branch
PLASTIC_BRANCH_NAME -
: Name including parent
PLASTIC_FULL_BRANCH_NAME
rmchangeset-
: The name of the branch
PLASTIC_BRANCH_NAME -
: Number of the deleted changeset
PLASTIC_CHANGESET_NUMBER -
: Owner of the changeset
PLASTIC_CHANGESET_OWNER
rmlabel-
: The name of the branch
PLASTIC_BRANCH_NAME -
: Number of the labelled changeset
PLASTIC_CHANGESET_NUMBER -
: Owner of the labelled changeset
PLASTIC_CHANGESET_OWNER -
: The name of the label
PLASTIC_LABEL_NAME
rmattribute- : The name of the attribute
PLASTIC_ATTRIBUTE_NAME
-
: The current user name
PLASTIC_USER -
: The machine name
PLASTIC_CLIENTMACHINE -
: Server address
PLASTIC_SERVER -
: The repository id
PLASTIC_REPOSITORY_ID -
: The repository name
PLASTIC_REPOSITORY_NAME -
: The object's comment
PLASTIC_COMMENT
We improved how the Merge View displays the contr…
Windows, macOS - Plastic: We improved how the Merge View displays the controlled errors. Before it did so using modal alerts. Now the errors are in a text view.Bug
This release ([code]8.0.16.3760[/code]) has a kno…
macOS - Plastic: This release (8.0.16.3760If there was an error refreshing the Pending Chan…
macOS - Plastic: If there was an error refreshing the Pending Changes or the Merge views, it appeared over and over. Now it's fixed!The Merge View's error messages had a wrong backg…
Windows - Plastic: The Merge View's error messages had a wrong background color. Now it's fixed!The Welcome dialog didn't look good in screens wi…
Windows - Plastic (Cloud Edition): The Welcome dialog didn't look good in screens with DPI scaling enabled. Now it's fixed!When there are no comments to show in a Code Revi…
Windows - Plastic: When there are no comments to show in a Code Review, we showed a message... that was not in perfect English. Now it's fixed!The Incoming Changes notification didn't appear i…
All platforms - Plastic: The Incoming Changes notification didn't appear if you had pending merge conflicts to resolve. Now it's fixed! Imagine the following scenario:- You are working with other teammates in the same branch.
-
You changed two files: and
foo.c. The Incoming changes notification will appear, warning about conflicts in those two files.bar.c - You open the Incoming Changes view and resolve only one file. Then you close the Plastic GUI.
- When you reopen Plastic, you can't see the Incoming Changes notification. Now it's fixed!
Fixed an issue where navigating rapidly through t…
Linux - Plastic: Fixed an issue where navigating rapidly through the annotations of an item and its parents could cause an unexpected error.8.0.16.3750
New
We felt that your life would be easier if the tru…
All platforms - trunkbot: We felt that your life would be easier if the trunkbot could define the expected status attribute values as the list of default values. So, we did that! The trunkbot will write a new line defining that list of default values when it creates the status attribute. Remember: this only happens if the status attribute doesn't exist on bot startup. The trunkbot won't update comments of existing attributes.Just as we did with the trunkbot, we improved the…
All platforms - multilinerbot: Just as we did with the trunkbot, we improved the multilinerbot so it write the list of expected status attribute values as the list of default values for the status attribute. Remember: this only happens if the status attribute doesn't exist on bot startup. The multilinerbot won't update comments of existing attributes. Oh, and this just applies to the status attribute, not the one to define the merge destination branches!We improved the update command startup time. Empt…
All platforms - Command line client: We improved the update command startup time. Empty or small updates are now 14% faster than before.We added the option '--skipchangedcheck' to the u…
All platforms - Command line client: We added the option '--skipchangedcheck' to the update command. The update checks for pending changes before starting. This option skips looking for locally changed files. This way you will save time using this option if you always checkout the files before you change them.the focus is now correctly set on the server fiel…
Windows - Plastic: the focus is now correctly set on the server field of the configuration panel when launched using "plastic --configure"We unified the contextual menus in the Pending Ch…
macOS, Linux - Plastic, Gluon: We unified the contextual menus in the Pending Changes view as much as possible - both for Plastic and Gluon. Now finding the features you use the most is easier when switching applications. But this change brings other goodies too! For example, now you can check a file's history, and annotate it, right from the Pending Changes. We also added support to change cloaked.conf in Plastic, and hidden_changes.conf in Gluon. Remember that Gluon and partial workspaces don't consider cloaked.conf file. That's why you can't configure it from Gluon.The Incoming Changes is now available for macOS!…
macOS - Plastic: The Incoming Changes is now available for macOS!The GUI now shows a notification in the toolbar w\…
macOS - Plastic: The GUI now shows a notification in the toolbar when the changeset you are working on no longer exists. This can happen if a colleague deletes that changeset. This helps users returning to a valid configuration by updating the workspace. The notification looks like this - click on "Update" and you are good to go!
Screenshot
We improved the message for the Incoming Changes…
macOS - Plastic: We improved the message for the Incoming Changes view. It now explains that you only need to update the workspace to synchronize the metadata when your changes match the ones in the new head of the branch.We added a tooltip in the notification bar for th…
macOS - Plastic: We added a tooltip in the notification bar for the incoming changes to explain the current scenario. The available scenarios are:- There are new changes in the branch that you can preview and download.
- There are new changesets that conflict with your current changes.
- The changeset you were working on no longer exists. Click the "Update" button to return to a valid configuration.
removed "Show hidden files" from the check-in opt…
All platforms - Gluon: removed "Show hidden files" from the check-in options, since it is only relevant to Plastic.The Similarity Percentage slider (in Pending chan…
All platforms - Plastic, Gluon: The Similarity Percentage slider (in Pending changes -> Options -> Move detection) now correctly disables when the Find Moved option is deselected.On-premises servers now support global lock rules…
All platforms - Server: On-premises servers now support global lock rules! Bear in mind that global lock rules will be used for all repositories unless there are repository-specific rules that apply to them. They aren't merged, but replaced! So, if you'd like to override the global lock rules for one of your repos, simply create lock rules for it. If you leave them empty, no rules will apply.We added a new block to store the global rules. A…
All platforms - WebAdmin: We added a new block to store the global rules. And now you'll have auto-complete features to enter the repository names for repository-specific rules! Isn't that nice?We added the caller IP and user name in the log l…
All platforms - Proxy server: We added the caller IP and user name in the log line after the GetObjectsData call. You can now see who's causing trouble! Now the log is as follows:Proxy - Request: 39. Type: downl. Files requested: 10. Cache misses: 10. Total time: 16 ms. Downloaded: 3.78 Mb from default@localhost:8084. Total returned: 3.78 Mb. IP: 127.0.0.1. User: 'pablo'.
The annotate pane could end up misaligned with th…
Windows - Plastic: The annotate pane could end up misaligned with the code pane by up to a line due to the way we were synchronising the two panes. We changed the way we do this, and now we have pixel-perfect alignment.
Screenshot
Bug
fixed a bug in Cloud Edition where issue tracker…
Windows - Plastic: fixed a bug in Cloud Edition where issue tracker settings were not being saved correctly.Fixed an issue downloading data from the cloud th…
All platforms – Proxy Server, Client: Fixed an issue downloading data from the cloud that impacts the performance. The issue was introduced on the release 8.0.16.3725. If you are using the release 8.0.16.3725, please upgrade.The Incoming Changes operation sometimes left wri…
All platforms - Client, Server: The Incoming Changes operation sometimes left writable Xlinks as pending changes. This issue only affected Xlinks with more than one expansion rule. It took place when the server changes contained the first changes in the current branch under the Xlink.The client didn't detect Xlink deleted-changed co…
All platforms - Plastic, Command line client: The client didn't detect Xlink deleted-changed conflicts in some merge scenarios. This happened when the current user had pending changes under a Xlink in their workspace. Additionally, the source contributor had deleted it. Now the Plastic clients do detect the conflict.The merge operation failed in a complex scenario.…
All platforms - Plastic, Command line client: The merge operation failed in a complex scenario. It involves merges whose source changes modify the Xlink path. At the same time, the merging user has pending changes in their workspace under that Xlink. This is an example scenario that reproduced the issue:- First, Alice is working in branch '/main'. She renames the '/physics' directory to '/effects' and adds a writable Xlink. She checks in these changes.
- Then, Beth checks out the file '/physics/water.cs' in her current workspace.
- Finally, using the same workspace, Beth starts a merge from '/main' into her current branch.
The Incoming Changes operation left the previous…
All platforms - Server: The Incoming Changes operation left the previous version as deleted when you replaced a Xlink in the server. Now it's fixed.8.0.16.3744
New
It is now able to monitor free space on disk and…
All platforms - Proxy: It is now able to monitor free space on disk and clean up the cache to avoid running out of disk. You'll see something as follows in the log when it runs out of disk:And, if there is enough room (twice the size of the cache) then something as follows:INFO Daemon - Disk is running out of space. 5.78 Gb available. Will delete 1.15 Gb from cacheINFO Daemon - Cleaning up 1.15 Gb (9576 entries)INFO Daemon - Cleaned up 1.15 Gb (9576 entries) in 2578 ms
INFO Daemon - Disk still has enough space: 19.53 Gb available.
Implemented a disk cache limit
All platforms - Plastic Proxy: Implemented a disk cache limit. Now the proxy can limit the size of its on-disk cache. == How to configure == Very easy: last use the new MaxCacheSizeInGb in the plasticcached.conf file. Example:And the Proxy will make sure its cache size doesn't exceed 20.5 Gb. A value of 0 means the clean is disabled. == How it works == The Proxy maintains a LRU (Least Recently Used list) and updates it on every data access. Every 10 minutes, it checks if the total cache size is bigger than the value configured. If the maximum size is exceeded, the Proxy retrieves the least recently used entries and removes them from disk. Every 3 minutes the Proxy saves the LRU info to disk. The LRU data is written to proxy-data-path/proxy-lru.dat. The data is also written on shutdown. On startup and then every 8 hours, the Proxy checks if it needs to walk the entire cache directory to rebuild the LRU and recover from possible inconsistencies. While the check runs every 8 hours, a rebuild will only happen once every 3 days. The date of the last rebuild is stored under proxy-data-path/proxy-last-cache-walk.dat. proxy-data-path is the directory where you configured the proxy to store the cache. For existing Proxy installations, the new version will rebuild the cache on the fly. == Some logs == During the startup of the Proxy you'll see:<PlasticCacheConf> <MaxCacheSizeInGb>20.5</MaxCacheSizeInGb></PlasticCacheConf>
You can see how the Proxy skips the rebuild and how it loaded 107k entries to the LRU. Then, every 3 minutes, and during shutdown:INFO LRU - Walking the disk to build the LRU (least recently used). c:\plastic\proxydataINFO LRU - Last LRU rebuild from disk happened less than 3 days ago. Skipping. 11/04/2019 16:50:00INFO Daemon - Load LRU info from c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info loaded in 656 ms. 107299 entries. 5.89 Gb total in cache
And during a clean up:INFO Daemon - Save LRU to c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info saved in 312 ms. 107299 entries. 5.89 Gb total in cache
INFO Daemon - Cleaning up 0.69 Gb (17564 entries) of cached data to enforce the 5.20 Gb limitINFO Daemon - Cleaned up 0.69 (17564 entries) Gb in 5110 msINFO Daemon - Save LRU to c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info saved in 265 ms. 89735 entries. 5.20 Gb total in cache
ConflictsBot was useless with MergeRules enabled…
DevOps: ConflictsBot was useless with MergeRules enabled (they are available since release 8.0.16.3433). From now on, ConflictsBot will be able to report merge conflicts again at earlier stages. (The fix is to skip the MergeRules check in the underlying dry-run merge operation the ConflictsBot runs).in the debug log for an update, the metadata down…
All platforms - Plastic, Command line client: in the debug log for an update, the metadata download and processing times were incorrectly calculated. This has been fixed.Multi-thread checkin and update enabled by defaul…
All platforms - Checkin & Update: Multi-thread checkin and update enabled by default now. Plastic can be super-fast, but historically we were to shy enabling the full power by default. But, smart defaults are key for usability, because nobody wants to dig into config files. So, that's what we are doing now. == Checkin == Plastic uses a pipeline to checkin as fast as possible. There are 3 phases:- Read from disk.
- Compress data.
- Send data.
- Read from disk. Controlled by UploadReadPoolSize in client.conf = 2
- Compress data. Configured by UploadCompressionSize in client.conf = 2
- Send data. Configured by Upload_SendDataThreadCount in client.conf = 3
Added support to cache data from Plastic Cloud
All platforms – Proxy Server, Client: Added support to cache data from Plastic Cloud. This is one of the long-awaited features for the Proxy: the ability to cache data from the Cloud. And it is finally there. No changes required, just install a proxy (and your client too if you use encrypted data in the Cloud) and start caching data.Replica data transfer can be 3 times faster now o…
All platforms - Server: Replica data transfer can be 3 times faster now on fast networks. In our tests, pushing 18Gb from a repo in Denmark to one in Oregon, went down from 30 minutes to 9. This is quite an speed up!
Screenshot
After: 534750 ms = 8.9 min>cm push /main@unity-game@localhost:8087 mirror4@34.xxx.xxx.xxx:8087 --timer[##############################################################]/ Finished OKFetching metadata [##############################]Pushing metadata [##############################]Introducing data [##############################]2180860 ms
>cm push /main@unity-game@localhost:8087 mirror3@34.xxx.xxx.xxx:8087 --timer[##############################################################]\ Finished OKFetching metadata [##############################]Pushing metadata [##############################]Introducing data [##############################]534750 ms
changes to the diff window comparison method…
All platforms - Plastic, Gluon: changes to the diff window comparison method{"Ignore EOL", "Ignore whitespaces", "Ignore EOL and whitespaces", "Recognize all"}after failing to save an attribute value change,…
Windows - Plastic: after failing to save an attribute value change, due to permissions for example, the GUI would be left displaying the wrong value. it now updated to show the correct attribute value in this case.Bug
we fixed an issue where the mutli-line progress f…
macOS, Linux - Command line client: we fixed an issue where the mutli-line progress for replication (clone, push & pull) would draw each frame of animation on a new line, rather than maintaining a fixed position in the console window.Incoming Changes. It failed when updating the fil…
Windows - Plastic: Incoming Changes. It failed when updating the filesystem protection of a file or directory. In the case of a file, it didn't fail if the content of the file was also changed. This filesystem protection change would come from a checkin in a Linux / macOs platform. Fixed. The filesystem protection changes are skipped by the Incoming Changes at the moment. This will be supported in further releases.The counter labels in Merge and Incoming Changes…
Windows - Plastic: The counter labels in Merge and Incoming Changes views appeared cut in high DPI screens. Now they look fine!Some customers reported an error that prevent the…
Windows - Plastic: Some customers reported an error that prevent them from creating branches from the GUI. It seems Plastic can't access a file in the "Theme" folder. Now it's fixed.We detected that working concurrently against the…
All platforms - Plastic: We detected that working concurrently against the same workspace using different plastic clients (e.g. Plastic GUI, Visual Studio Plugin, Unreal plugin) could potentially break the workspace metadata under certain circumstances. That left the workspace pointing to the changeset 0 and created files plastic.wktree.bak and plastic.changes.bak inside the workspace metadata folder ($workspace_root/.plastic). Now it's fixed.8.0.16.3725
New
It is now able to monitor free space on disk and…
All platforms - Proxy: It is now able to monitor free space on disk and clean up the cache to avoid running out of disk. You'll see something as follows in the log when it runs out of disk:And, if there is enough room (twice the size of the cache) then something as follows:INFO Daemon - Disk is running out of space. 5.78 Gb available. Will delete 1.15 Gb from cacheINFO Daemon - Cleaning up 1.15 Gb (9576 entries)INFO Daemon - Cleaned up 1.15 Gb (9576 entries) in 2578 ms
INFO Daemon - Disk still has enough space: 19.53 Gb available.
Implemented a disk cache limit
All platforms - Plastic Proxy: Implemented a disk cache limit. Now the proxy can limit the size of its on-disk cache. == How to configure == Very easy: last use the newMaxCacheSizeInGbplasticcached.confAnd the Proxy will make sure its cache size doesn't exceed 20.5 Gb. A value of 0 means the clean is disabled. == How it works == The Proxy maintains an LRU (Least Recently Used list) and updates it on every data access. Every 10 minutes, it checks if the total cache size is bigger than the value configured. If the maximum size is exceeded, the Proxy retrieves the least recently used entries and removes them from disk. Every 3 minutes the Proxy saves the LRU info to disk, to<PlasticCacheConf> <MaxCacheSizeInGb>20.5</MaxCacheSizeInGb></PlasticCacheConf>
proxy-data-path/proxy-lru.datproxy-data-path/proxy-last-cache-walk.datproxy-data-pathYou can see how the Proxy skips the rebuild and how it loaded 107k entries to the LRU. Then, every 3 minutes, and during shutdown:INFO LRU - Walking the disk to build the LRU (least recently used). c:\plastic\proxydataINFO LRU - Last LRU rebuild from disk happened less than 3 days ago. Skipping. 11/04/2019 16:50:00INFO Daemon - Load LRU info from c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info loaded in 656 ms. 107299 entries. 5.89 Gb total in cache
And during a clean up:INFO Daemon - Save LRU to c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info saved in 312 ms. 107299 entries. 5.89 Gb total in cache
INFO Daemon - Cleaning up 0.69 Gb (17564 entries) of cached data to enforce the 5.20 Gb limitINFO Daemon - Cleaned up 0.69 (17564 entries) Gb in 5110 msINFO Daemon - Save LRU to c:\plastic\proxydata\proxy-lru.datINFO Daemon - LRU info saved in 265 ms. 89735 entries. 5.20 Gb total in cache
ConflictsBot was useless with MergeRules enabled…
DevOps: ConflictsBot was useless with MergeRules enabled (they are available since release 8.0.16.3433). Now, ConflictsBot can report merge conflicts again at earlier stages! The fix is skipping the MergeRules check in the underlying dry-run merge operation the ConflictsBot runs.Metadata download and processing times in the upd…
All platforms - Plastic, Command line client: Metadata download and processing times in the update debug log were not correct. This is now fixed.Multi-thread checkin and update enabled by defaul…
All platforms - Checkin & Update: Multi-thread checkin and update enabled by default now. Plastic can be super-fast, but historically we were shy enabling the full power by default. But smart defaults are key for usability, because nobody wants to dig into config files. So, that's what we are doing now. == Checkin == Plastic uses a pipeline to checkin as fast as possible. There are 3 phases:- Read from disk.
- Compress data.
- Send data.
client.conf-
Read from disk. Controlled by . Default value is
UploadReadPoolSize.2 -
Compress data. Configured by . Default value is
UploadCompressionSize.2 -
Send data. Configured by . Default value is
Upload_SendDataThreadCount.3
UploadReadPoolSizeclient.conf2Added support to cache data from Plastic Cloud
All platforms – Proxy Server, Client: Added support to cache data from Plastic Cloud. This is one of the long-awaited features for the Proxy: the ability to cache data from the Cloud. And it is finally here! No changes required, just install a Proxy (and your client too if you use encrypted data in the Cloud) and start caching data.Replica data transfer can be 3 times faster now o…
All platforms - Server: Replica data transfer can be 3 times faster now on fast networks. In our tests, pushing 18Gb from a repo in Denmark to one in Oregon, went down from 30 minutes to 9. This is quite a speed up!
Screenshot
ReplicaDataTransferThreadsAfter: 534750 ms = 8.9 min>cm push /main@unity-game@localhost:8087 mirror4@34.xxx.xxx.xxx:8087 --timer[##############################################################]/ Finished OKFetching metadata [##############################]Pushing metadata [##############################]Introducing data [##############################]2180860 ms
>cm push /main@unity-game@localhost:8087 mirror3@34.xxx.xxx.xxx:8087 --timer[##############################################################]\ Finished OKFetching metadata [##############################]Pushing metadata [##############################]Introducing data [##############################]534750 ms
changes to the diff window comparison method…
All platforms - Plastic, Gluon: changes to the diff window comparison method Recognize all now persist. Before this change, you lost comparison method changes when closing the diff - you would need to change them again next time. That happened because the diff view loaded the global setting fromPreferences -> Diff and mergeThe GUI displayed the wrong value for an attribut…
Windows - Plastic: The GUI displayed the wrong value for an attribute if it failed to save a value change (due to lack of permissions, for example). In this case, now the GUI recovers and shows the right value for the attribute, along with the error message.Bug
We fixed an issue with the mutli-line progress fo…
macOS, Linux - Command line client: We fixed an issue with the mutli-line progress for replication (clone, push & pull). Sometimes, it would draw each frame of the progress animation on a new line, rather than maintaining a fixed position in the console window.The Incoming Changes failed when updating the fil…
Windows - Plastic: The Incoming Changes failed when updating the filesystem protection of a file or directory. In the case of a file, it didn't fail if the content of the file was also changed. This filesystem protection change might come from a checkin in a Linux / macOS platform. Fixed. The filesystem protection changes are skipped by the Incoming Changes now. This will be supported in further releases.The counter labels in Merge and Incoming Changes…
Windows - Plastic: The counter labels in Merge and Incoming Changes views appeared cut in high DPI screens. Now they look fine!Some customers reported an error that prevent the…
Windows - Plastic: Some customers reported an error that prevent them from creating branches from the GUI. It seems Plastic couldn't access a file in the "Theme" folder. Now it's fixed.We detected that working concurrently against the…
All platforms - Plastic: We detected that working concurrently against the same workspace using different Plastic clients (e.g. Plastic GUI, Visual Studio Plugin, Unreal plugin) could potentially break the workspace metadata under certain circumstances. That left the workspace pointing to the changeset 0 and created files namedplastic.wktree.bakplastic.changes.bak$workspace_root/.plastic8.0.16.3708
New
Happy to announce that we enabled the new Code Re…
Windows - Plastic: Happy to announce that we enabled the new Code Review system by default! You can find all the information about it in the following blogpost: Improving the new Plastic Code Review system. For more information on code reviews, refer to code reviews (GUI)A lot of users find the contextual help in the Pl…
All platforms - Plastic, Gluon: A lot of users find the contextual help in the Plastic and Gluon UIs very useful. But for our more advanced users the help panel was getting in the way without providing any real benefit. Now, each help item will appear at most once a day. The GUI will only show more help than that when it detects that you might be having difficulty with the tool. Also, the help panel will hide after a few minutes if it opened itself (instead of by clicking the help button). By the way, if you select "Got it, don't show me again" on the help panel, that help item won't appear ever again!Say hello to the new Attributes View! It allows y…
macOS, Linux - Plastic: Say hello to the new Attributes View! It allows you to list and manage the existing attributes in a repository. You'll be able to create new attributes, edit existing ones or simply delete them. This view was really necessary since we introduced the ability to define a list of default values in the attribute comments! Here it goes on macOS:
Screenshot

Screenshot
the merge now checks for locked files and directo…
All platforms - Plastic, Command line client: the merge now checks for locked files and directories before applying changes. Files and directories locked by third-party applications is a very common source of issues during a merge (Unreal users might be well aware of this!). Plastic might try to remove a file or a directory from your workspace, but because there is an application locking it, the operation fails - potentially leaving the workspace in an inconsistent state that is not obvious to recover. We have just fixed this by checking that the files and directories involved in a merge are not locked before applying a merge (and this affects the upcoming Incoming Changes that will be the default way to update changes in a workspace when working on a single branch). = How the detection looks like = Suppose Notepad.exe is locking a file you are trying to merge. You'll get a message that looks like this:And this is the message you get if what's locked is a directory:The operation cannot start because some files or directories are locked by another program. Please close the program and try again.e:/wks/actioncable/doc/cord/de_win.c (used by Notepad, notepad.exe, 4856)
= Going under the hood = How do we detect locked files and directories on each platform?The operation cannot start because some files or directories are locked by another program. Please close the program and try again.e:/wks/actioncable/doc/cord
- Windows and macOS: we open each file involved and try to move each directory involved to a temporary location.
- Linux: nothing, since Linux FS are quite friendly when it comes to applying changes to disk, so we don't have to worry about aborted operations by locked files or directories.
We are making a series of improvements to the sin…
Windows - Plastic: We are making a series of improvements to the single branch working workflow. When you are working in a single branch with other people, it is common to find they have checked in new changes. When this happens, Plastic will notify you on the top-right area of the window. = Scenario 1 = You have no pending changes and new changesets from other users appear. Plastic will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them. = Scenario 2 = You have pending changes. New changesets from other users appear, but they don't affect any of the files you have changed. Plastic again will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them. = Scenario 3 = You have pending changes. New changesets from other users appear, and there are changes in files that you have also changed. In this case you need a merge. Plastic will show you a red notification in order to allow you to see the conflicts in the Incoming Changes view, and resolve them. This is how the Scenarios 1 and 2 look like:
Screenshot


Screenshot
%LOCALAPPDATA%\plastic4\client.conf<EnableIncomingChanges>yes</EnableIncomingChanges>
Added support for Plastic Protocol
All platforms - Proxy: Added support for Plastic Protocol. The Plastic Proxy (a.k.a. cache server) now can handle requests using Plastic Protocol instead of just "remoting". The Proxy was already reaching remote servers using Plastic Proto, but it handled requests from clients using only remoting. Plastic Protocol is a binary protocol we developed a few years ago. On the other hand, remoting is the older, slightly less efficient protocol we used for years. Our goal is to stick to Plastic Protocol and deprecate remoting later on this year.Sometimes things are too easy. Like deleting a re…
All platforms - Plastic: Sometimes things are too easy. Like deleting a repository in Plastic. Two clicks and you can irreversibly delete your whole repository. We redesigned the "delete repository" dialog to eliminate accidental deletions. Now, the dialog initially looks like this...:
Screenshot

Screenshot

Screenshot

Screenshot
The Unity plugin now deletes files in batches. It…
Unity 3D plugin: The Unity plugin now deletes files in batches. It means when it has to delete thousands of files, it is much faster than before. Using a project with 1.000 files the delete time is:- Before: 65 s
- After: 10 s (reduction of 84,6%)
The log output encoding is now hard-coded to be "…
Jenkins plugin: The log output encoding is now hard-coded to be "utf-8".We implemented the Incoming Changes notification
macOS - Plastic: We implemented the Incoming Changes notification. When you are working in a single branch with other people, it is common to find they have checked in new changes. When this happens, Plastic will notify you on the top-right area of the window.- Scenario 1. You have no pending changes and new changesets from other users appear. Plastic will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them.
- Scenario 2. You have pending changes. New changesets from other users appear, but they don't affect any of the files you have changed. Plastic again will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them.
- Scenario 3. You have pending changes. New changesets from other users appear, and there are changes in files that you have also changed. In this case you need a merge. Plastic will show you a red notification in order to allow you to see the conflicts in the Incoming Changes view, and resolve them.

Screenshot


Screenshot
$HOME/.plastic4/client.conf<EnableIncomingChanges>yes</EnableIncomingChanges>
The GUI now shows a notification in the toolbar w\…
Windows - Plastic: The GUI now shows a notification in the toolbar when the changeset you are working on no longer exists. This can happen if a colleague deletes that changeset. This helps users returning to a valid configuration by updating the workspace. The notification looks like this - click on "Update" and you are good to go!
Screenshot
We improved the message for the Incoming Changes…
Windows - Plastic: We improved the message for the Incoming Changes view. It now explains that you only need to update the workspace to synchronize the metadata when your changes match the ones in the new head of the branch.We added the repository name to the error message…
All platforms - Plastic, Command line client: We added the repository name to the error message you get when you try to create a child branch and you don't have that permission. This is useful when you have a merge involving xlinked repositories, because now you can we which repository is causing the problem.We added a tooltip in the notification bar for th…
Windows - Plastic: We added a tooltip in the notification bar for the incoming changes to explain the current scenario. The available scenarios are:- There are new changes in the branch that you can preview and download.
- There are new changesets that conflict with your current changes.
- The changeset you were working on no longer exists. Click the "Update" button to return to a valid configuration.
Bug
A "Cannot access a disposed object" error showed…
macOS - Plastic: A "Cannot access a disposed object" error showed up when closing a merge that displayed a help panel. This could also happen when switching workspaces. Now it's fixed. This bug was critical on macOS - it forced you to exit the application doing a "force quit". It also affected Linux, but it was not critical there (just an error message). This doesn't affect Windows. To prevent further issues because of this bug, we unpublished the following releases: 8.0.16.3685 (10/30/2019) 8.0.16.3691 (10/31/2019) 8.0.16.3694 (11/04/2019)A few releases earlier we introduced new color fi…
Windows - Plastic: A few releases earlier we introduced new color filters for the Branch Explorer. But there was a bug on Windows! As you know, when there is more than one label in a changeset, we draw a split crown. When searching, the entire crown gets colored - even if only one of the labels matches the search. But none of the pieces got colored if a color filter matched another label different than the first one. That's now fixed. Thanks to forum user Wolfram for noticing and reporting this!We detected some scenarios where the 'mergeto' en…
All platforms - Server: We detected some scenarios where the 'mergeto' endpoint of the server REST API failed. This happened if the merge contained a multi-file conflict and changes under an Xlink, too. As a side note, the main consumers of this endpoint are our mergebots. It's now fixed.The Jira plug couldn't connect to some Atlassian…
Windows, Linux - DevOps: The Jira plug couldn't connect to some Atlassian Cloud servers because of the lack of support for TLS 1.2. Not it's fixed.The GUI did not re-enable the buttons in the Pend…
Windows - Plastic: The GUI did not re-enable the buttons in the Pending Changes view after an error during the checkin. This prevented you from using it again unless you restarted the application. Now it's fixed.The update workspace operation failed from the in…
Windows - Plastic: The update workspace operation failed from the incoming changes view when it took more than one minute to process. The view refreshed incorrectly before the operation finished.We noticed a visual issue in the list views (bran…
Windows - Plastic: We noticed a visual issue in the list views (branches, changesets, labels, etc.). The text of the first column overflows the column bounds if you scroll to the right. The GUI didn't calculate the text width correctly! It's now fixed.8.0.16.3694
New
The Unity plugin now deletes files in batches. It…
Unity 3D plugin: The Unity plugin now deletes files in batches. It means when it has to delete thousands of files, it is much faster than before. Using a project with 1.000 files the delete time is:- Before: 65 s
- After: 10 s (reduction of 84,6%)
Sometimes things are too easy. Like deleting a re…
All platforms - Plastic: Sometimes things are too easy. Like deleting a repository in Plastic. Two clicks and you can delete your whole repository forever. We have redesigned the delete repository dialog to help preventing accidental deletions. Now, the dialog looks like this:
Screenshot

Screenshot

Screenshot

Screenshot
Bug
The GUI did not re-enable the buttons in the Pend…
Windows - Plastic: The GUI did not re-enable the buttons in the Pending Changes view after an error during the checkin. This prevented you from using it again unless you restarted the application. Now it's fixed.8.0.16.3691
New
Happy to announce that the new Code Review system…
Windows - Plastic: Happy to announce that the new Code Review system is enabled by default. For more information, refer to the code reviews documentation.Incoming Changes. The following limitations descr…
Windows - Plastic: Incoming Changes. The following limitations don't apply anymore:- Not optimized after creating a new workspace. The Incoming Changes notification shows up when you create a new workspace saying there are tons of new changesets. This is because workspaces are created empty and pointing to the changeset zero of the main branch. Incoming Changes works well here, but it is more efficient to just launch a regular update. We'll get this one fixed asap.
- Incoming Changes is not refreshed after undoing local changes, which is not correct. We are working to fix it.
- Incoming Changes is closed when the update/conflict resolution finishes, but it is also closed incorrectly if a file is locked and the update can't happen.
- Plastic still doesn't launch Incoming Changes instead of a regular merge when invoked from the Update in Workspace Explore and there are conflicting changes in the workspace (behaves differently than Pending Changes and the new notification area).
- Plastic doesn't hide the new changes notification bar when switching workspace, which can create issues if you switch and click before it updates the status.
- The workspace status is not correctly updated. You are on cset 100, use Incoming to move to head (cset 200), but the status area still shows cset 100 incorrectly.
Bug
Jira plug was not able to connect to some jira cl…
DevOps: Jira plug was not able to connect to some jira cloud server instances, because the jira plug didn't have support for TLS 1.2. Fixed.8.0.16.3685
New
Incoming Changes, the new way to work on a single…
Windows - Plastic: Incoming Changes, the new way to work on a single branch, is finally here. How to enable it: Write this in your client.conf:<EnableIncomingChanges>yes</EnableIncomingChanges>
We are making a series of improvements to the sin…
Windows - Plastic: We are making a series of improvements to the single branch working workflow. When you are working in a single branch with other people, it is common to find they have checked in new changes. When this happens, Plastic will notify you on the top-right area of the window.- Scenario 1. You have no pending changes and new changesets from other users appear. Plastic will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them.
- Scenario 2. You have pending changes. New changesets from other users appear, but they don't affect any of the files you have changed. Plastic again will show you a green notification in order to allow you to see the changes in the Incoming Changes view, and update to them.
- Scenario 3. You have pending changes. New changesets from other users appear, and there are changes in files that you have also changed. In this case you need a merge. Plastic will show you a red notification in order to allow you to see the conflicts in the Incoming Changes view, and resolve them.

Screenshot


Screenshot
<EnableIncomingChanges>yes</EnableIncomingChanges>
the merge now checks for locked files and directo…
All platforms - Plastic, Command line client: the merge now checks for locked files and directories before applying changes. Files and directories locked by third-party applications is a very common source of issues during a merge (Unreal users might be well aware of this!). Plastic might try to remove a file or a directory from your workspace, but because there is an application locking it, the operation fails - potentially leaving the workspace in an inconsistent state that is not obvious to recover. We have just fixed this by checking that the files and directories involved in a merge are not locked before applying a merge (and this affects the upcoming Incoming Changes that will be the default way to update changes in a workspace when working on a single branch). = How the detection looks like = Suppose Notepad.exe is locking a file you are trying to merge. You'll get a message that looks like this:And this is the message you get if what's locked is a directory:The operation cannot start because some files or directories are locked by another program. Please close the program and try again.e:/wks/actioncable/doc/cord/de_win.c (used by Notepad, notepad.exe, 4856)
= Going under the hood = How do we detect locked files and directories on each platform?The operation cannot start because some files or directories are locked by another program. Please close the program and try again.e:/wks/actioncable/doc/cord
- Windows and macOS: we open each file involved and try to move each directory involved to a temporary location.
- Linux: nothing, since Linux FS are quite friendly when it comes to applying changes to disk, so we don't have to worry about aborted operations by locked files or directories.
Say hello to the new Attributes View! It will all…
macOS, Linux - Plastic: Say hello to the new Attributes View! It will allow you to list and manage the existing attributes in a repository. You'll be able to create new attributes, edit existing ones or simply delete them. This view was really necessary since we introduced the ability to define a list of default values in the attribute comments! Here goes in macOS:
Screenshot

Screenshot
default:one, two, "and three""and three"A lot of users have found the contextual help in…
All platforms - Plastic, Gluon: A lot of users have found the contextual help in the Plastic and Gluon UIs very useful. But for our more advanced users the help panel was getting in the way without providing any real benefit. Now, each help item will only be shown at most once a day, and we will only show more help than that when we detect you are having difficulty with the tool. Also, if the help panel opened automatically, rather than by pressing the help button, it will hide itself out of the way again after a few minutes. By the way, if you select "Got it, don't show me again" on the help panel, that help item won't appear ever again!Added support for Plastic Protocol
All platforms - Proxy: Added support for Plastic Protocol. The Plastic Proxy (a.k.a. cache server) now can handle requests using Plastic Protocol instead of just "remoting". The Proxy was already reaching remote servers using Plastic Proto, but it handled requests from clients using only remoting. Plastic Proto is a new binary protocol we developed a few years ago, and remoting is the older protocol we used for years, that is slightly less efficient, that's why our goal is to stick to Plastic Proto and deprecate remoting later on this year.Bug
A few releases earlier we introduced new color fi…
Windows - Plastic: A few releases earlier we introduced new color filters for the Branch Explorer. But there was a bug on Windows! As you know, when there is more than one label in a changeset, we draw a split crown. When searching, all of the pieces of the crown get colored even if only one of the labels matches the search - however, none of the pieces got colored if the filter matched another label different than the first one. That's fixed now. Thanks to forum user Wolfram for noticing and reporting this!We detected some scenarios where the 'mergeto' en…
All platforms - server: We detected some scenarios where the 'mergeto' endpoint of the server REST API failed. This happened if the merge contained a multi-file conflict and changes under an Xlink, too. As a side note, the main consumers of this endpoint are our mergebots. Now it's fixed.8.0.16.3673
New
All platforms – Pending changes are now converted…
All platforms – Pending changes are now converted into checkouts before calculating merges. This is a very important change to improve usability, but it might be surprising for Plastic long-term users. == Motivation == Suppose you have foo.c modified in your workspace and then you merge from main/task001 where foo.c was also modified. The merge didn't show foo.c as a conflict because the merge only considers the checkouts. If you checkout foo.c then the merge preview showed the conflict. The merge was still correct because changes were "promoted to checkouts" during the merge. But, let's see a different example now: suppose you moved art/ into game-art/ locally and there were changes inside art/ in main/task001. The merge didn't consider your local changes and it would end up causing trouble. We changed all this by simply "applying changes" before calculating the merge. This means any local "changed" will be converted into "checkout" and also that local moves, local deletes, will be put under control too (checkout for short). It is an important change to ensure consistency and avoid corner cases. == What are checkouts exactly == Plastic supports two ways of working:- You can directly modify foo.c, then go to Pending Changes and checkin.
- Or you can checkout foo.c first, then modify, then checkin.
A new built-in mergebot has just born! Its name:…
Windows, Linux - DevOps: A new built-in mergebot has just born! Its name:multiliner-botmultiliner-bot
Screenshot
-
The requires Plastic Server 8.0.16.3673 or higher to work.
multiliner-bot - No labeling support: to avoid label name collisions with several destination branches, this mergebot declines any labeling responsibility.
- The mergebot configuration still requires a 'status' attribute to define when a branch is 'ready', when it 'fails', or when it is 'merged'.
- If you specify several destination branches, and any of the merges fail (due to manual conflicts, or CI plan build), the bot rejects the source branch and marks it as 'failed'.
- If you specify several destination branches, the CI plan for each destination branch triggers sequentially. We will consider adding support for parallel plan triggering in the future.
- This mergebot allows triggering a CI plan after a branch successfully merges to several destination branches. But, if this post-checkin plan fails, it does NOT undo already confirmed merges. You just receive a notification about the post-checkin plan failing (if any notification plug is configured for this mergebot).
- You can configure several notifier plugs with this mergebot. All of them are optional. So far, there are up to two notification plugs in the mergebot configuration template.
- If any of the specified destination branches do not exist, the branch being processed by this mergebot is marked as 'failed'.
Server and Jenkins Plug: Added support to specify…
Windows, Linux - DevOps: Server and Jenkins Plug: Added support to specify a Jenkins job inside a Jenkins folder as the plan to execute by a mergebot (e.g. trunk-bot). Only top-level plan names were available before this release. Now, you can specify a Jenkins job inside a folder in your favorite mergebot as the plan to build. Example:- Your Jenkins server has a folder named "projects"
- Inside that folder, there is a job named "pipeline-debug".
- You can type "projects/pipeline-debug" in the "Continuous Integration" section, having a Jenkins plug available for it.
-
Internally, he Jenkins plug will try to access to the config.xml file that defines the job on the following Uri path as an example: .
job/projects/job/pipeline-debug/config.xml
support [at] codicesoftware [dot] comMerge now has file download progress! And it is r…
All platforms - Plastic: Merge now has file download progress! And it is ready for Linux, Windows, and macOS. An image is worth a thousand words:
Screenshot
When you run an update there are two client-side…
All platforms - Triggers: When you run an update there are two client-side triggers:before-updateafter-update-
: the ID of the changeset your workspace is (or was) pointing at when the update begins.
PLASTIC_INITIAL_CHANGESET -
: the ID of the changeset your workspace is (or will be) pointing at when the update finishes.
PLASTIC_FINAL_CHANGESET
A few releases earlier we introduced the "Locatio…
All platforms - Plastic, Gluon: A few releases earlier we introduced the "Location" column in the workspaces list. That column indicates the current object the workspace is pointing at. It included the full repository spec with the repository server, which is not useful, as it has a column of its own. Now, the location column shows the object spec without the repository. Check how it looks!
Screenshot
Rejoice! We fixed the tab order of the "Other opt…
Windows - Plastic: Rejoice! We fixed the tab order of the "Other options" preferences panel.A wrong SSL configuration won't prevent the serve…
All platforms - Server: A wrong SSL configuration won't prevent the server to startup correctly. We changed how the server starts up, so a wrong SSL configuration won't prevent the server to startup. The server will listen on the other ports and will ignore the failing SSL one. This is helpful when you wrongly configure a SSL port from the WebAdmin, because now you can go again to the WebAdmin and reconfigure instead of having to go to the command line. Before, the server simply refused to start if it had a wrong SSL cert password setup.we improved the usability of the Create Xlink dia…
All platforms - Plastic: we improved the usability of the Create Xlink dialog. Let me explain to you how: a xlink can be either "read-only" (Xlink) or "writable" (wXlink). Xlinks always point to the same changeset in the target repository, but wXlinks change according to the expansion rules. This means that expansion rules are useless for Xlinks - they only work for wXlinks. Yet when creating and editing Xlinks from the GUI, the expansion rules' list and buttons were enabled, which is confusing. No more! When creating or editing Xlinks, you can not create nor edit expansion rules.In the new Code Review system, when a requested c…
Windows - Plastic: In the new Code Review system, when a requested change was applied, if you double-clicked it, it navigated to the changeset where it was applied. But you couldn't navigate to the comment itself anymore. We changed that behavior so that, if you double-click the comment, you navigate to it. And, if the requested change is applied, you can navigate to the changeset where it was applied by clicking on its status.
Screenshot
Made some improvements as part of the effort of m…
All platforms - Proxy Server: Made some improvements as part of the effort of modernizing the proxy.- Improved request log:
Where the type is:INFO Proxy - Request: 1. Type: cache. Files requested: 332. Cache misses: 0. Total time: 109 ms. Downloaded: 0.00 Mb from quake@localhost:6060. Total returned: 1.17 MbINFO Proxy - Request: 3. Type: mixed. Files requested: 224. Cache misses: 16. Total time: 62 ms. Downloaded: 0.13 Mb from quake@localhost:6060. Total returned: 1.80 MbINFO Proxy - Request: 113. Type: downl. Files requested: 15. Cache misses: 15. Total time: 31 ms. Downloaded: 3.85 Mb from quake@localhost:6060. Total returned: 3.85 Mb
- cache => full cache hit, everything read from cache.
- downl => everything read remotely.
- mixed => some from network, some from cache.
<logger name="Proxy"><level value="INFO" /></logger>
- The Proxy server now dumps status every 30 seconds, just like a regular Plastic server does. This will help us diagnose problems.
2019-10-22 14:23:54,541 7 INFO ServerStats - PLASTIC SCM SERVER VERSION: 8.0.16.33432019-10-22 14:23:54,544 7 INFO ServerStats - PROCESS INFO2019-10-22 14:23:54,545 7 INFO ServerStats - Entry Value2019-10-22 14:23:54,545 7 INFO ServerStats - ======================== =======================2019-10-22 14:23:54,546 7 INFO ServerStats - Proc Id 146082019-10-22 14:23:54,554 7 INFO ServerStats - Handle count 3682019-10-22 14:23:54,555 7 INFO ServerStats - Thread count 152019-10-22 14:23:54,556 7 INFO ServerStats - Non paged system mem 00.02 Mb2019-10-22 14:23:54,558 7 INFO ServerStats - Paged mem size 21.31 Mb2019-10-22 14:23:54,582 7 INFO ServerStats - USER STATS2019-10-22 14:23:54,583 7 INFO ServerStats - Sent 518.43 Mb. Received 233.19 Kb
- Now you can optionally configure number of threads in plasticcached.conf. The following JUST configures the threads (although more settings are available):
>cat plasticcached.conf<PlasticCacheConf> <MaxThreads>4</MaxThreads></PlasticCacheConf>
Bug
We disabled a thread abort code that was potentia…
All platforms - Proxy Server: We disabled a thread abort code that was potentially causing problems and could make the proxy unstable and stop responding requests. The Proxy has a safety code to kill a request if it detects that the client aborted the connection. This typically happens when you CTRL-C a command line. When that happens, the Proxy aborts the thread handling the request, and under some circumstances this could make the server very unstable. We removed the abort code now.We detected that the server initialized and shut…
All platforms - Server: We detected that the server initialized and shut down its internal services several times. This scenario was under control and it didn't affect functionality or performance. Its downside was that it polluted log files. That's fixed now.In the Branch Explorer the "dynamic date filter"…
macOS - Plastic: In the Branch Explorer the "dynamic date filter" was reset to "A given date" when changing a display option, even if you didn't change the start date filter there! That's fixed now.We fixed the search text entries in the Plastic t…
All platforms - Plastic, Gluon: We fixed the search text entries in the Plastic toolbar and Gluon search dialog to properly protect regex-like characters. Before this fix, filenames such as 'file (new).txt' or 'file+15.txt' were really difficult to find because search patterns like '(new' or '+15.txt' wouldn't match anything.a null exception was thrown in the new Code Revie…
Windows - Plastic: a null exception was thrown in the new Code Review system when you tried to navigate to an applied change and the changeset where the change was applied didn't contain the file where the change was requested. Now it's fixed.There was a small issue while configuring a new m…
Windows, Linux - Server (DevOps): There was a small issue while configuring a new mergebot. The WebAdmin page did not reload the configuration template when changing mergebot type. Unless you tweaked the URL, you could not configure a mergebot different than the first one on the list. That's now fixed!8.0.16.3651
New
We're improving the Branch Explorer layout! Until…
All platforms - Plastic: We're improving the Branch Explorer layout! Until now, every developer would see the same chart when they open the Branch Explorer view. That's not entirely helpful because not everyone pays attention to the same things at the same time. That's why we decided to reorder the branches according to the current workspace status. Your current workspace branch (as well as their parents and children) will always appear at the top of the chart -this allows you to remove clutter and see your current branch in a more meaningful context. Integrated branches will sink to the bottom of the chart. Since those branches are already merged into main, they aren't likely to be active anymore. Finally, all branches will be sorted according to these criteria:- Branches that are higher up in the hierarchy will also be up in the chart
- Branches with a more recent activity will appear at the top
- Branches with a longer life span will appear at the top
We'd really appreciate your feedback! Let us know what would you want the Branch Explorer layout to look like in the forum thread.<DynamicBranchExplorerLayout>yes</DynamicBranchExplorerLayout>
Branch Explorer now stores configuration per work…
All platforms - Plastic: Branch Explorer now stores configuration per workspace! This is a huge change in usability, and something we should have done eons ago. This affects the GUIs in all platforms: Windows, Linux and macOS. Now every workspace remembers its Branch Explorer configuration, instead of it being global to all workspaces. This is a huge change and worth an upgrade :-) Let me tell you about the details if you are interested!- Branch Explorer configuration used to be stored in the standard application configuration folder. Typically, this is "%LOCALAPPDATA%\plastic4\branchexplorer.cfg" on Windows, "$HOME/.plastic4/branchexplorer.conf" on GNU/Linux and macOS.
- But now, it will be stored in ".plastic/plastic.branchexplorer" in the workspace root.
- The branch explorer settings that are affected are the date filters, the “Only relevant” flag, all the “Display Options” and everything under “Filters and conditional format”.
the before-mklabel and after-mklabel have two new\…
All platforms - Server triggers: the before-mklabel and after-mklabel have two new environment variables available: PLASTIC_CHANGESET_NUMBER and PLASTIC_CHANGESET_OWNER. The former indicates the number of the labeled changeset. The latter, the owner of that changeset. We hope you find it useful in your triggers!trunk-bot will pass a new property to the underly…
DevOps: trunk-bot will pass a new property to the underlying Continuous Integration system to clearly identify whether the CI job is triggered in the 'Plan for build & test a branch' stage or 'Plan to run after checking-in a branch' stage, if any. This is useful when the same CI job is used for both stages, but we need to identify which stage launched the job to perform different build actions. Example with Jenkins: when mergebot triggers a job in Jenkins, it will pass a new parameter to the Jenkins job called PLASTICSCM_MERGEBOT_STAGE. Its possible values are:-
-> the job was triggered in the 'Plan for build & test a branch' stage.
pre -
-> the job was triggered in the 'Plan to run after checking-in a branch' stage.
post
We added a new configuration check to trunk-bot b…
DevOps: We added a new configuration check to trunk-bot before it starts processing branches: If the 'Resolved' value for the Plastic status attribute is the same as the 'Merged' value, the trunk-bot won't start and it will log the error in the appropriate log file. We implemented this to prevent trunk-bot to enter in an infinite loop of branch polling, overloading plastic server's CPU. The same restriction applies to the 'Resolved' and 'Failed' values.The Jenkins mergebot plugin failed to build plans…
All platforms - DevOps: The Jenkins mergebot plugin failed to build plans if the Jenkins worskpace path contained whitespaces. This is fixed now!We removed the now unnecessary "Run fast update"…
Windows - Plastic: We removed the now unnecessary "Run fast update" option from Preferences > Other options. We need to do some rework on fast-update, and while it continues working, we consider it is best to simply hide it, so users don't select it without really knowing what it is about.
Screenshot
We improved the Undo Checkout operation when exec…
All platforms - Plastic: We improved the Undo Checkout operation when executed from the Workspace Explorer. Now:- You can undo changed files when you're working on a label.
- When the operation fails, the item is not left checked out anymore.
- You can undo a changed file under a readonly Xlink.
Bug
Sometimes concurrent check-in operations that aff…
All platforms - Server: Sometimes concurrent check-in operations that affected the same branch weren't aware of each other. This resulted in a two-headed branch. It happened in the following scenario:- Liam and Emma are working on branch /main/task1.
- Liam is working out of date on changeset 4.
- Emma is working on changeset 5, the branch head.
- Liam merged his changes with the head changes and checks everything in.
- At the same time, Emma checks in her changes (she doesn't need a merge since she's working on the branch head).
- The simultaneous check-in wasn't properly handled, leaving the branch with two head changesets.
Solved an issue in merge and locked files
Merge: Solved an issue in merge and locked files. Let's better explain it with an example:- We have 2 file conflicts to resolve during a merge.
- The first file is merged correctly.
- The second one fails because the file is being used by another process (locked).
- Then, the first file shows up again as pending to be merged.
Your preferred maximized toolbar width was lost i…
Windows - Plastic: Your preferred maximized toolbar width was lost if you closed the application with the toolbar minimized. We fixed it! The state is now correctly restored on application startup. We also increased the default toolbar width slightly, so that the main actions all fit on single lines.When you select a file with no changes in the new\…
Windows - Plastic: When you select a file with no changes in the new Code Review window, you get "An unexpected error has occurred". Now it's fixed.Fixed some issues to deal with failing proxy serv…
All platforms - Client core: Fixed some issues to deal with failing proxy servers. When a client is using a Proxy Server (a.k.a. cache server) and the proxy suddenly becomes unreachable, the client was unable to disable it and kept trying to reach it on every data call, making the resulting experience slow. We changed that, so that now proxies are properly disabled in each client session after the client detects the first failure. We also removed a retry in the calls to the proxies: to disable a proxy (that was not even working) 5 calls needed to fail. This was very old code that was not even needed anymore because now the network code can handle retries (more on this later). Finally, the proxies only support remoting protocol instead of plasticproto, but every single connection was trying to use plasticproto first, slowing down the whole thing. A note on retries: suppose you were successfully downloading data from a proxy, and a second later the proxy is no longer reachable. Then, the client will try to reconnect (provided there was a recent successful connection) up to 10 times as follows in the next log. It can take up to 30 seconds to complete.>tail -f plastic.log.txt |grep InvokeMethodRetry2019-10-18 13:34:44,334 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:34:44,342 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 2000 ms before retrying the connection2019-10-18 13:34:47,346 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:34:47,346 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 5000 ms before retrying the connection2019-10-18 13:34:53,349 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:34:53,349 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 1000 ms before retrying the connection2019-10-18 13:34:55,352 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:34:55,353 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 10000 ms before retrying the connection2019-10-18 13:35:06,358 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:06,359 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 1000 ms before retrying the connection2019-10-18 13:35:08,362 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:08,363 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 2000 ms before retrying the connection2019-10-18 13:35:11,365 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:11,365 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 1000 ms before retrying the connection2019-10-18 13:35:13,368 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:13,369 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 1000 ms before retrying the connection2019-10-18 13:35:15,374 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:15,374 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 5000 ms before retrying the connection2019-10-18 13:35:21,378 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:21,379 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData waiting 1000 ms before retrying the connection2019-10-18 13:35:23,382 21 (null) (null) (null) DEBUG InvokeMethodRetry - HasToHandleSocketException. SocketError: ConnectionRefused. Exception: No connection could be made because the target machine actively refused it 127.0.0.1:88882019-10-18 13:35:23,382 21 (null) (null) (null) INFO InvokeMethodRetry - plastic://localhost:8888/CacheHandler.GetObjectsData retried 10 times and still can't connect. Failing. No connection could be made because the target machine actively refused it 127.0.0.1:8888
8.0.16.3636
New
Update Workspace will now correctly update to lat…
macOS, Linux - Plastic: Update Workspace will now correctly update to latest when you have pending changes. Previously it would not allow the update if you had the "Allow to merge with pending changes" setting disabled. This setting ought not to have applied in this scenario, where the new changesets are on the current branch.now the before-clientcheckout and after-clientche…
All platforms - Plastic, Gluon, Command line client: now the before-clientcheckout and after-clientcheckout triggers won't run when undoing local changes. These triggers were being executed because of the way Plastic SCM undoes local changes - in order to do so, first local changes must be converted into controlled ones through the checkout operation (in order to apply not only modifications, but also to know which files were renamed, moved, or deleted). It really didn't make sense to get notified of checkouts that were going to be immediately undone, so we removed trigger execution in this scenario. This change affects CLI commands such as "unco --all" and "undo", but also operations such as "undo" and "undo unchanged" operations through the GUIs.Use the --automaticresolution option to choose wh…
All platforms - Command line client: Use the --automaticresolution option to choose whether the source or the destination contributor should be automatically selected to resolve the conflict. For example, imagine that you have to merge branch /main/task257. And you want "eviltwin" and "movedelete" conflicts to resolve automatically, but following these rules: the merge operation must resolve the "eviltwin" conflicts by keeping the source contributor and the "movedelete" conflicts by keeping the destination contributor:cm merge br:/main/task257 --merge --automaticresolution=eviltwin-src;movedelete-dst
Incoming changes: As you may have already noticed…
Windows - Plastic: Incoming changes: As you may have already noticed, we are making a series of improvements in the single branch working workflow. One of these improvements is the "Incoming Changes" view. The "Incoming Changes" view allows the developer to update your workspace to the latest changes in the working branch. You can launch the "Incoming Changes" view in two ways:- When the GUI detects new changes in the working branch, a notification bar is displayed in the "Pending changes" view, next to the checkin comment. When you click the view new changes, the "Incoming Changes" view is displayed.

Screenshot
- When you try to checkin changes, but there are new changes in the working branch, the "Incoming Changes" view is displayed. In this case, we display a help tip to help to understand that you need to first resolve incoming changes, before checking in your changes.

Screenshot
<EnableIncomingChanges>yes</EnableIncomingChanges>
Bug
In old macOS version such as 10.9.5, several unex…
macOS - Plastic, Gluon: In old macOS version such as 10.9.5, several unexpected error messages popped up when running both GUIs, Plastic and Gluon. The way we try to get macOS appearance (Light/Dark) failed. Now it's protected.Under some circumstances, the "Explore Workspace"…
Windows - Gluon: Under some circumstances, the "Explore Workspace" view didn't focus a file after using the search files dialog. Now it's fixed.8.0.16.3626
New
Merge view - Greatly improved UX!
macOS - Plastic: Merge view - Greatly improved UX! We've done a UX review and decided to change texts and explanations. We also removed some outdated icons to save vertical space. We updated the "Process all merges" button caption to make it a bit more descriptive:- If there are file conflicts pending to resolve, the caption is set to "Resolve conflicts". By clicking this button, the merge view will merge the pending file conflicts in batch (it will preserve the file conflict resolution of the already resolved conflicts). Note that all directory conflicts need to be resolved before clicking this button!
- If there aren't any file conflicts, it means the merge just needs to apply changes done in the source contributor (and selected directory conflict resolutions, if any). So, the button text is set to "Apply changes". Screenshot:

Screenshot
- Now the first directory conflict is automatically selected.
- There is a red counter telling the user the number of pending directory conflicts to resolve vs total directory conflicts.
- The "Resolve directory conflict" button for the selected conflict is moved to the top if the pane, to make it more visible (before this release, it was located at the bottom of the view, and sometimes it was invisible to the user!)
- When resolving all the directory conflicts, the merge view jumps to pending "file conflicts" tab (just if there are pending file conflicts to resolve).

Screenshot
- The counter turns green when no pending directory conflicts left.

Screenshot
- There is a red counter telling the user the number of pending file conflicts to resolve vs total file conflicts.
- The counter turns green when no pending file conflicts left.

Screenshot
- Apart from text changes and icon removal, the categories in this tab (deletes to apply, moves to apply, etc.) will be collapsed if the number of items is >= 10.

Screenshot
- Just text changes and icon removal.
we renamed the "Apply local changes" context menu…
All platforms - Plastic: we renamed the "Apply local changes" context menu option in the Pending Changes view to "Checkout". This way it is easier both for newcomers and experts to understand what that menu option really does! Long story: We refused to write "checkout" because for us it means "hey, tell plastic I'm going to work on a file and optionally lock it if the file is lockable", but for Git users it just means "update/download". But, yes, we were wrong. "Apply local changes" means nothing to most of you.After a UX review, we improved some texts and exp…
Windows - Plastic: After a UX review, we improved some texts and explanations in the merge view.- The "recalculate merge" button is now a standard "refresh" button. We moved it to the left-upper corner.
- We use red/green colors depending on how many conflicts remain to be resolved.
- We improved some help texts.
- The automatic merges in file conflicts tree (deletes to apply, moves to apply, etc.) are collapsed when the number of children is greater than 10.

Screenshot

Screenshot
8.0.16.3621
New
You can specify a default list of values for attr…
All platforms - GUI: You can specify a default list of values for attributes now! You just need to include a line like the following in the attribute comment:The GUIs will scan the attribute comment to find that line and then they'll parse that list of comma-separated values to populate the drop-down list of suggested values whenever you want to apply the attribute to an object. This is particularly useful when you use our Mergebots, to let all users know which are the expected values they're monitoring. Bear in mind that if you define a list of default values, you won't see other non-default values that the attribute might have in other objects being suggested in the GUIs.default: value_one, "value two", value3, "Final value"
you can now specify a comment when creating a new\…
macOS, Linux - Plastic: you can now specify a comment when creating a new Attribute, just like your Windows-using colleagues. Here is how it looks on macOS:
Screenshot

Screenshot
now a new help text explains how to enter default…
Windows - Plastic: now a new help text explains how to enter default values in attributes
Screenshot
We added a new 'cm attribute edit' command that e…
All platforms - CLI: We added a new 'cm attribute edit' command that enables you to change the comment of attributes. You can use it as follows:This is especially useful to edit the list of default values available for an attribute!cm attribute edit att:Status "This is the current status of the task branch in the CI pipeline. default: ready building failed merged"
We made the 'delete changeset' operation more fau…
All platforms - Server (Jet backend): We made the 'delete changeset' operation more fault-tolerant. You'll be able to keep working with the same branch even if it fails! Before these changes the branch was left unusable, pointing to the deleted changeset - which no longer existed.we added some help that explains how to do a grea…
Windows - Plastic: we added some help that explains how to do a great review in order to help users to discover how the new Code Review system works. Now you'll see how to add comments, add questions, request changes, apply or close a change request... The help button is placed in the right top corner of the code review window. Remember, right now, you need to launch the application with "plastic --codereview" to enjoy the new feature.We added a new column called "Location" in all Wo…
All platforms - Plastic, Gluon: We added a new column called "Location" in all Workspace Views. It will display the currently loaded branch, changeset or label in each workspace. This is useful if you have many workspaces or if you have multiple workspace for the same repository: this new feature will allow you to know at a glance what you will find if you open a given workspace. This is how it looks like in Windows:
Screenshot
Recently, we added a feature in the new Code Revi…
Windows - Plastic: Recently, we added a feature in the new Code Review system that allowed a developer to mark the changes requested by the reviewer, as resolved, from the pending changes view. The current mechanism did not allow to resolve several changes in one checkin, because when a change was selected, the text in the comment's TextBox was replaced. We fixed it by inserting the text in the comment's TextBox at the current caret position.the Pending changes view will let you know if new\…
All platforms - Plastic: the Pending changes view will let you know if new changes have appeared in your branch since you last updated. There used to be an option to disable this alert, but we think it's a useful feature for everyone, so we removed the option and made the feature always enabled.From now on, unattended installations of Plastic…
Windows - Installer: From now on, unattended installations of Plastic will update the system environment PATH variable with the client and server installation path. Example of command to run the Plastic installer on unattended mode:PlasticSCM-8.0.16.3621-windows-installer.exe --mode unattended --unattendedmodeui none
From now on, unattended installations of Plastic…
Windows - Installer: From now on, unattended installations of Plastic will configure the Plastic Server with default values and start it up. This is done just when no previous Plastic Server installation was detected in the system.We improved the message you get when your credent…
All platforms - GUI and CLI: We improved the message you get when your credentials are set to a user that doesn't exist. It was simply "User unknown", so now we ask you to check your credentials information. We also point out that the username check is case-sensitive.We changed the "Rename" context menu option in th…
Windows - Plastic: We changed the "Rename" context menu option in the attributes view to "Edit"! It will now allow you to change the name and the comment of the attribute. This will make your life easier if you want to change the list of default values for the attribute.Bug
When you configure Plastic SCM Team Edition for t…
macOS - Plastic: When you configure Plastic SCM Team Edition for the first time, a dialog shows up asking you your Plastic SCM server's address, and your credentials (if necessary). In that dialog, the Cancel and OK buttons were slightly cut out on the top. You didn't notice? Good! You did notice? That's now fixed!8.0.16.3606
New
New Code Review system: applied some usability im…
Windows - Plastic: New Code Review system: applied some usability improvements code review window layout:- The comments and summary panels are now collapsible in order to allow the user to increase the available size of the diff viewer.
- The summary panel is displayed as collapsed when there are no changes or questions to show.
- When the changes and questions lists are empty, we display an empty state message, instead of the empty list.
- The comment list will only appear when there are comments (old legacy review comments) to show. Note that the new Code Review system is designed to encourage users to use only 'Changes or Questions'.

Screenshot
we made adding files to source control even faste…
All platforms - Plastic, Command line client: we made adding files to source control even faster by making the file type determination more efficient. In our testing, adding 300,000 files is now twice as fast.we were generating excessive quantities of log in…
All platforms - Plastic, Command line client: we were generating excessive quantities of log information when adding files to source control. We pruned this a bit, and have achieved some significant improvements in the performance of "cm add" in the CLI and "Add directory tree to source control" in the GUI when logging is enabled. In our testing, adding 300,000 files is around 5 times faster.We've made it easier to filter the Branch Explore…
Linux - Plastic: We've made it easier to filter the Branch Explorer to show only those changesets you want. Now you can easily show changesets from the last week, 15 days, month, 3 months, or since any specific date. Here's how it looks:
Screenshot
The Branch Explorer got enhanced! We extended the…
All platforms - Plastic: The Branch Explorer got enhanced! We extended the conditional format capabilities -which were previously available only for branches- to changesets and labels. You'll find new menu options in the "Custom format" button menu to add rules for labels or changesets using find-like queries. Give some color to your Branch Explorer! Here is how it looks in Windows...
Screenshot

Screenshot

Screenshot
Bug
some users had issue where their internal databas…
Server: some users had issue where their internal database files has invalid versions. We added some code to detect and correct this issue.8.0.16.3594
New
You can now edit Xlinks in partial workspaces usi…
All platforms - CLI: You can now edit Xlinks in partial workspaces using the command line. You can always edit a read-only Xlink to change the content that you are loading using it. But you cannot do the same with a writable Xlink. You can only edit it to change the target branch and only until someone creates a change under the writable Xlink. This happens because partial workspaces always point to the branch head, including writable Xlinks. As a result, writable Xlinks only care about branches instead of changeset IDs... even if you still have to specify changesets to create them.New Code Review system: If users apply the reques…
Windows - Plastic: New Code Review system: If users apply the requested changes in a code review while having the code review window opened, the window will be updated correctly showing the requested changes as "Done", and the new changesets created as well.You can have multiple Branch Explorer windows ope…
Windows - Plastic: You can have multiple Branch Explorer windows open at the same time, showing different repositories. This means, if you're not paying full attention, you can switch to a branch or changeset that you didn't mean to and have to wait patiently while your workspace is overwritten by data from the wrong repository. You can switch back of course, but it can waste a lot of time. We've added extra warning text to the confirmation dialog when we see that you are about to switch to a different repository, to reduce the chance of this mistake occurring.We've added dynamic date filtering to the Branch…
Windows - Plastic: We've added dynamic date filtering to the Branch Explorer. You can easily set the Branch Explorer to show changesets from the past week, month or year. Most importantly, the filter updates dynamically so that it always only shows changesets within the specified time frame. Check it out in the gif below!
Screenshot
The Workspace Explorer did not display errors pro…
Windows - Plastic: The Workspace Explorer did not display errors properly. Now it's fixed.We've added dynamic date filtering to the Branch…
macOS - Plastic: We've added dynamic date filtering to the Branch Explorer. You can easily set the Branch Explorer to show changesets from the past week, month or year. Most importantly, the filter updates dynamically so that it always only shows changesets within the specified time frame. Check it out in the gif below!
Screenshot
Now the "cm licenseinfo" command prints the infor…
All platforms - Command line client: Now the "cm licenseinfo" command prints the information it was missing before for servers with Unlimited Users licenses. The information we omitted (because we considered it was somehow useless, sorry about that!) was the number of active users (the number of available users is useless if you have an unlimited number!) and the list of active and inactive users. Now, Unlimited Users licenses will see something like this:Remember that you have some useful flags to further filter the users list - for example:$ cm licenseinfoLicense information: server: very-secret-machine.home:8085License information: Licensed to: [c0d1c3]Personal license to test UnlimitedUsers Expiration date: Unlimited Edition: team Total licensed users: Unlimited Total active users: 2License usage: User Status ---------------------------------------------- sergio ACTIVE pedro ACTIVE borja INACTIVE (Not licensed) enrique INACTIVE (Not licensed)
Print only active users: $ cm licenseinfo --activePrint only inactive users: $ cm licenseinfo --inactive
Maybe you already know Plastic installation conta…
Windows - Plastic: Maybe you already know Plastic installation contains semantic merge tool feature out-of-the-box. However, in order to enable java files to be semantically merged, it is required a valid Java Virtual Machine (version >= 8). But, if no valid Java Virtual Machine is found, the merge operation for a java file will automatically fallback to regular, embedded text-based mergetool (a.k.a. XMerge tool).Added a dropdown button to the pending changes vi…
Windows - Plastic: Added a dropdown button to the pending changes view to resolve pending Code Review change requests. The new Code Review system allows the reviewer to request changes by the developer. Then, the developer can set those changes as resolved using pre-defined text in the checkin comment. We added a dropdown button next to the checkin comment textbox:
Screenshot

Now, the "cm lock unlock" command help shows an e…
Command line client: Now, the "cm lock unlock" command help shows an example about undoing an item lock on a cloud server.Code reviews: Changed the default title. Now, it…
Windows - Plastic: Code reviews: Changed the default title. Now, it always use the reviewed object in the title. Examples:Also, improved the alignment of titles and edit boxes in the header of the review, that were wrong before.Review of branch /main/scm15425 - Refactor FileSystem.csReview of changeset 88 - Improve performance in tree filtering
Bug
Pending changes data was not visible in the check…
Windows - Gluon: Pending changes data was not visible in the checkin changes view when the column names were modified in the localization files. Now it's fixed.A "key duplicated" exception was thrown if two Gi…
GitSync: A "key duplicated" exception was thrown if two Git tags were escaped to the same name and they were not listed in a consecutive order. Fixed. When pulling tags from Git to Plastic, the following characters in the tag are escaped: '~','^',' ', '' and '..'. It can happen that two tags are escaped to the same name (such as 'tag^3' or 'tag\3', both would be escaped to 'tag-3'). Now, the second one is skipped.fixed an issue related with the navigation keyboa…
Windows - Plastic: fixed an issue related with the navigation keyboard shortcuts of the Differences window that prevented navigating in second and later windows. The issue is quite easy to reproduce:- Open a first "sticky diff" from wherever - for example, the Branch Explorer, pressing the Shift key at the same time you double-click the object you want to diff.
- Open a second "sticky diff", doing the same.
- Try to navigate the files and differences on the second sticky diff using the sortcuts - before this fix you can't! You are navigating differences in the first diff window, regardless of it not having the focus!
The maximized state of the window was not correct…
Windows - Gluon: The maximized state of the window was not correctly remembered when closing and reopening Gluon. Now it's fixed.8.0.16.3576
New
We have removed an unnecessary warning message th…
All platforms - Plastic: We have removed an unnecessary warning message that was confusing a lot of users. It appeared if you clicked "Update Workspace" when you were already on the head changeset, and you had local changes. In this situation we used to show a message telling you that you have local changes that you might want to undo, and it looked like we were reporting an error, when of course there was no problem. We will introduce a better way to let you know that you're already on the head changeset in a future release.New Code Review system: Display a visual guide wh…
Windows - Plastic: New Code Review system: Display a visual guide when creating a new comment. Now, when you're creating a new comment, we highlight the line under the mouse when you're moving it. This guide helps to figure out the line number you're adding the new comment:
Screenshot
to help users discovering how the new Code Review\…
Windows - Plastic: to help users discovering how the new Code Review system works, we added some help to the review comments panel that explains what happens and how to proceed.- If the code review is empty, it will indicate to the user how to create a new comment.
- If the selected file has comments but no comment is selected, it will indicate how to view those comments.
Bug
As you might know if you are a power user, you ca…
macOS, Linux - Command line client: As you might know if you are a power user, you can use redirections with the "cm" command line client in order to get things done. For example, if we want to add all of the *.txt files in a given directory, we can do so as follows:However, this was not working good with the Checkin command because of the dynamic checkin progress. Now that's fixed! The following command should work as expected under macOS and Linux:$ cm ls *.txt | cm add -
$ cm ls *.txt | cm ci --private -
back in release 8.0.16.3400 we made the differenc…
All platforms - Plastic, Gluon: back in release 8.0.16.3400 we made the differences launched from the Item's History panel editable if the right revision was the one loaded in the workspace. But this had an undesired side effect! If the revision loaded in your workspace had local changes, you would see these local changes in the differences... which is weird, because if you are looking into the history, you probably expect the content at the selected changeset, not the one in your workspace. So we reverted that change. Launching a diff from the Item History panel will always show you the content at the given changeset - never from the workspace. And the diff won't be editable, even if you are diffing the revision currently loaded and unchanged in your workspace. Remember that if you want to diff your current workspace content, you can do so from the workspace explorer - right click on an item, then "Diff with previous revision". Pending Changes also works, of course :)Jenkins CI Plug: We detected that in some Jenkins…
DevOps: Jenkins CI Plug: We detected that in some Jenkins servers the anti-forgery crumb expires fast, preventing Jenkins plug to queue builds in Jenkins server. Fixed. Now the crumb is updated before performing any HTTP request to Jenkins server, if required.When undoing changes with dependencies, if an err…
All platforms - Plastic, Gluon, Command line client: When undoing changes with dependencies, if an error occurred whilst working through the chain of undo dependencies, we would sometimes leave some files in a temporary state. We now attempt to clean things up and put you back into a consistent state as you were before the undo operation. Specifically, when undoing a file that was moved from "oldName" to "newName" and that undo depends on another undo which fails, we used to leave the file "newName" in a temporary location. We now move it back to where it belongs.8.0.16.3568
New
We have implemented a new mechanism to avoid corn…
All platforms - Gluon: We have implemented a new mechanism to avoid corner cases where some new items were not downloaded after the user had configured the whole repository because he wanted to download always everything. Now, after a full configuration of the workspace happens, the workspace enters in a "full update" mode where every new item will be downloaded without relying in the granular directory configuration. If the file '$workspace/.plastic/plastic.fullupdate' exists, then the full update is enabled for the specified workspace.The new Code Review system now warns you when you…
Windows - Plastic: The new Code Review system now warns you when you try to change the status to 'reviewed' with required changes to apply or questions to answer.
Screenshot
The helpful download info message that lets you k…
All platforms - Gluon: The helpful download info message that lets you know in advance how much data your new workspace configuration will download now also updates in real-time when you select items from the search results. Here's how it looks in Windows:
Screenshot
Greatly improved the mergebots and plugs configur…
Windows, Linux - DevOps: Greatly improved the mergebots and plugs configuration forms in WebAdmin. We added collapsing to the different configuration sections, which radically simplifies use. This is how it looks like now, with sections collapsed so you can understand the whole thing at a glance.
Screenshot

Screenshot

Screenshot
Bug
When you run the 'cm undo' and 'cm unco' commands…
All platforms - CLI: When you run the 'cm undo' and 'cm unco' commands in a workspace and the loaded changeset doesn't exist anymore in the server (it was deleted elsewhere), you're prompted to confirm that you'd like all your current changes rolled back and your workspace switched to the last changeset in the current branch. The problem is that this interactive behavior produced an infinite loop when the standard input was redirected (e.g. 'cm shell' in plugins, CmdRunner, custom scripts...). We changed that so whenever the stdin is redirected, the client aborts the operation and returns an error to prevent unexpected loss of changes. To make this compatible with unattended/batch setups (e.g. plugins) we changed the behavior of the commands so that if you include both '--all' and '--silent' as CLI arguments, the client will automatically update the workspace to the last available changeset in the branch without any user interaction or output messages.We noticed that Spanish users couldn't type the '…
Windows - Plastic: We noticed that Spanish users couldn't type the ']' character if they had a Diff Window opened. This happened because that character is triggered by the combination of the special key 'AltGr' of the Spanish keyboard and the '+' key. The 'AltGr' key is translated to Control + Alt, and the Diff Window has Control + '+' as the shortcut for "Next file". Therefore, the ']' character in Spanish keyboards was triggering the shortcut, rather than getting written. Kind of obscure but annoying nonetheless.We fixed a corner-case scenario that prevented yo…
All platforms - CLI: We fixed a corner-case scenario that prevented you from removing changesets. This happened if four conditions were met: 1- You ran the command in a workspace 2- You had pending changes in your workspace 3- The head changeset of the branch loaded in the workspace had the same ChangesetID as the changeset you wanted to remove 4- The changeset you wanted to remove belonged to another repository (not the one loaded in your workspace) In this case, you were prompted with a message notifying you that you can't remove the changeset of the current branch while there are pending changes. That didn't make sense because the changeset you selected wasn't even in the same repository. Fixed!The Lock Rules and Merge Rules sections in the We…
All platforms - WebAdmin: The Lock Rules and Merge Rules sections in the WebAdmin Configuration area weren't displaying the appropriate information in multi-instance environments. They read/wrote config files in the server binaries directory instead of the expected shared directory for those special environments. Fixed!The "Browse" button in the first steps dialog (th…
macOS - Plastic, Gluon: The "Browse" button in the first steps dialog (the one we show when you don't have configured the client yet) didn't work if the path to open contained spaces. It's fixed now!Downloading revision contents failed if a proxy s…
All platforms - CLI: Downloading revision contents failed if a proxy server was configured and unreachable. It will automatically retry the download against the main server now. This wasn't failing in the GUI.Fixed a minor aesthetic issue in the "Create Labe…
Windows - Plastic: Fixed a minor aesthetic issue in the "Create Label" and "Create Attribute" dialogs. The issue was related to positioning the comment TextBox in HDPI monitors. It didn't look its best, but it does now! Just so you can appreciate the aesthetic nuisance I'm talking about, check in the picture below the before and the after - notice how the Comments TextBox is a little bigger than it should?
Screenshot
Fixed a nullref error that could happen on the fo…
Windows - Plastic: Fixed a nullref error that could happen on the following scenario:- Fresh start of Plastic GUI.
- Run a merge from another branch. On this merge, semantic merge resolves automatically a file conflict. But there is a text file conflict on another file that requires user intervention.
- Finish the merge and open the pending changes view.
- Show differences for the text file that required manual intervention causing a nullref error.
8.0.16.3552
New
we changed date format in XML output. It was inco…
All platforms - Command line client: we changed date format in XML output. It was inconsistent across different commands, so we unified it and made it compliant with ISO 8601 (without decimal places). These are the affected commands:If you use or develop any script or integration that rely on these commands, please make sure it still works before updating your production environment. You can still manually override the date format though. The 'cm find' command accepts a '--dateformat' flag. For other commands that do not accept the '--dateformat' flag, you can add the OutputDateFormat to your client.conf file. For example:findhistoryloglsstatusupdate
<OutputDateFormat>dd/MM/yy HH:mm</OutputDateFormat>
We got some important feedback about how many of…
All platforms - Plastic, Gluon: We got some important feedback about how many of our users add their files to source control. Emulating the usual initial steps in other popular VCSs, one of the first steps a Plastic SCM user does after creating a new repository is adding a ignore.conf file prepared for the project they are going to work with. Then, they start adding files to source control, but because private files are unchecked by default in the pending changes, this workflow is error prone. We have addressed that way of adding files adding a new preference - in the Pending Changes (Plastic) and Checkin (Gluon) views, under the Options dialog > What to show, now you can set private files (private and private-added, but not private-ignored) to be selected for checkin by default.
Screenshot
A few usability improvements applied to the new C…
Windows - Plastic: A few usability improvements applied to the new Code Review system, designed to encourage users to use the new 'Changes and Questions' system instead of the old regular review comments.- 'Request a change' is set as default option when adding a new comment.
- Allow users to choose the comment type in the replies too.
- The review comment summary at the bottom of the window shows only first level regular comments, not the replies. Except for 'Changes and Questions' that will continue appearing on their lists even if they are replies.
- The comment navigation now marks as selected the comment and scrolls to it in the comment panel in order to make it more visible.

Screenshot

Screenshot
No more surprise massive downloads when you confi…
All platforms - Gluon: No more surprise massive downloads when you configure your workspace. We've added a handy text box to the configuration window which tells you exactly how many files, and how many bytes, your configuration change will download. Here are some screenshots for Windows:
Screenshot

Screenshot

Screenshot
the subtractive and cherrypick merges can now use…
All platforms - Command line client: the subtractive and cherrypick merges can now use the --keepsource and --keepdestination flags to automatically choose a contributor! Before, the subtractive was ignoring these flags. Imagine that you want to undo a change in a file that was introduced in a changeset along with other changes. These flags are useful to pinpoint only the changes you want to undo. For example, imagine both file_A.txt and file_B.txt were changed in cs:4, and have more changes afterwards. We only want to undo changes introduced in cs:4 for file_A.txt, while preserving file_B.txt. How can we achieve that?$ cm merge --subtractive cs:4The file /file_A.txt needs to be merged from cs:3 to cs:5 base cs:4. Changed by both contributors.The file /file_B.txt needs to be merged from cs:3 to cs:5 base cs:4. Changed by both contributors.$ cm merge --subtractive cs:4 /file_A.txt --merge// Solve merge conflicts...$ cm merge --subtractive cs:4 /file_B.txt --keepdestination --merge// No merge conflicts to solve...$ cm merge --subtractive cs:4No merges detected$ cm ci -c="Subtractive keeping file_B.txt!"
Bug
Trunk-bot with Jenkins-plug: Since public release…
DevOps: Trunk-bot with Jenkins-plug: Since public release 8.0.16.3442, thecm undoThe mergetool contributor shortcuts (Ctrl+1, Ctrl…
Windows - Mergetool: The mergetool contributor shortcuts (Ctrl+1, Ctrl+2, Ctrl+3) didn't work as expected if you opened a diff window (e.g. double-clicking a branch in the Branch Explorer) and then you performed a merge. They were toggling the contributor change twice. It's fixed now.Saving changed files when the diff is editable (i…
Windows - Mergetool: Saving changed files when the diff is editable (i.e. the destination revision is the one loaded in the workspace) displayed a null reference exception message if there wasn't any selected items in the changed files tree. It's fixed now.8.0.16.3542
New
We have enhanced how exceptions are communicated…
All platforms - All clients: We have enhanced how exceptions are communicated from the server to the client. Now, if you are running against an updated server that has exception messages your client doesn't know about, your client will still be able to show you a helpful error message. The message will be localized to the server locale, rather than the client locale, but this is better than the previous behavior, which was to show an unhelpful generic message in this case.The new Code Review system (available on Windows…
All platforms - Plastic: The new Code Review system (available on Windows only at this point, when you launch the Plastic GUI with --codereview) allows you to request "changes". It is just a special comment where you request the author to make a change, and the system tracks if the change was really applied or not. Changes are identified with a GUID, to let you refer to them later when doing checkins. To mark a change as "done" you simply add a special comment to your checkin. Suppose you want to checkin code to fix the change request GUID c0d1ce00-b457-4424-99ff-a3f1c0fa2582. All you must do is to enter a comment like this:Or even in a shorter form:[apply-change:c0d1ce00-b457-4424-99ff-a3f1c0fa2582]
As you see, there is a long format and a short format. The long format requires specifying the whole GUID, whilst the short format only requires the first 8 bytes. If you specify a change request comment that doesn't exist, the checkin will fail. If you delete a changeset referenced by a change request through this method, the changeset id related to said change request will be reset.[apply-change:c0d1ce00]
Corrected the English text shown in the code revi…
All platforms - Plastic: Corrected the English text shown in the code review module when a file has no associated review comments.The new Code Review system now allows you to navi…
Windows - Plastic: The new Code Review system now allows you to navigate to the applied change when you double-click the change in the list.
Screenshot
We changed the Items view delete confirmation dia…
macOS, Linux - Plastic, Gluon: We changed the Items view delete confirmation dialog to be more consistent with the Windows version8.0.16.3533
New
All platforms - Installers. A new installer named "DVCS Edition" is born! This is the way to go if you are targeting the following layout for your Plastic servers:- Have a central, on-premise Plastic server in your company.
- Developers have their own, local Plastic server to work with, pushing/pulling from/to central, on-premise server.
- Some developers work directly with the central server.
my_personal_toolbox@local The new Code Review system now allows you to revi…
Windows - Plastic: The new Code Review system now allows you to review a branch, changeset by changeset. When a developer checks-in often, keeping reviewers in mind, it's helpful to review the branch walking through each changeset. You can read more about this here: https://www.plasticscm.com/book/#_checkin_often_and_keep_reviewers_in_mind So, we added a new tab that allows you to review a branch, stepping through changeset by changeset:
Screenshot
Now the server logs the inner exception of the fa…
All platforms - Server: Now the server logs the inner exception of the failed calls, so in case of error there is more info available.Bug
If you deleted a changeset in the plastic-global-…
All platforms - all clients: If you deleted a changeset in the plastic-global-config, every operation that needed a file from said global configuration could end up in a stack overflow. This is caused by the following sequence of events:- Every time the client needs to read a file from the global configuration a hidden, special-purpose workspace is updated to ensure that we have the latest config available.
- Said update operation is typically a fast-update, unless the changeset previously loaded in that workspace is missing from the server.
- If that happens, Plastic must run a full update.
- That full update requires Plastic to check the status of the workspace first.
- And to do so, it needs to read some configuration files from -you guessed it- the plastic-global-config.
- As you might have noticed, this would end up in an infinite loop only stopped by an application crash due to a stack overflow.
The Update Workspace operation wasn't working fin…
Windows - Plastic: The Update Workspace operation wasn't working fine if there was already another update operation running. It notified you about that and told you to wait until the current operation was finished, but then it continued anyway and the new update operation took over control of the progress panel. The side effect was that the original update operation could be running after the second one finished and you had no way to find out when it was completed. If you closed the GUI at that point you could abort the operation midway -without any warning messages- and the workspace could be left in an inconsistent state. It's fixed now!The dialog to resolve file conflicts (non-automat…
Windows - Plastic: The dialog to resolve file conflicts (non-automatic, with conflicts) sometimes failed with the following exception: "The calling thread must be STA". This only happened if you ran the "Update Workspace" operation in the Workspace Explorer and there were local changes that conflicted with the latest contents of the branch. Now it's fixed. Note: Users can proceed in three ways when they find themselves in this situation:- Solve the merge directly when they try to checkin their local changes.
- Solve the merge by clicking the 'View new changes' button in the Pending changes view.
- Solve the merge after clicking the 'Update workspace' button in the Workspace Explorer view.
8.0.16.3527
New
We updated the Merge Rules section to enable the…
All platforms - WebAdmin: We updated the Merge Rules section to enable the new Merge Rule types! You can now select the one that fits your needs best.External diff is now incredibly faster!
All platforms - Plastic, Gluon: External diff is now incredibly faster! This is because our diff tool is now launched within the same process instead of spawning a new one, which makes it start up super-fast. The diff window appears in 0 secs! Here goes the "before and after":
Screenshot

Screenshot
Bug
The Branch Explorer didn't update the repository…
Windows - Branch Explorer: The Branch Explorer didn't update the repository objects info on refresh. So, if a colleague renamed a branch while you were running the Windows GUI, you'd never get those changes no matter how many times you hit the Refresh button. That's fixed now. On top of that, if you tried to merge from the renamed branch, you'd get a "No objects selected" message. Funny, right? We changed that to let you know that the object you selected no longer exists in the server and suggesting you refresh the view and repeat the operation.You got an unspecified error when you tried to sh…
All platforms - Gluon: You got an unspecified error when you tried to show differences of a checked-out item in the "Checkin" view if the changeset of the loaded revision had been deleted somewhere else. We fixed it to show you an informative message letting you know what's going on.if any of your server's after-checkin triggers fa…
Windows - Plastic: if any of your server's after-checkin triggers failed, the Windows client did not log the checkin result to the configured issue tracker. This is because the client was re-throwing the exception originated in the server, rather than just displaying it, which was wrong - if your after-checkin trigger fails, is because the checkin already finished, and thus the client has valid checkin data to log into the issue tracker. That's fixed now. You'll still see the after-checkin trigger exception from the server, but that will not abort the next steps in the checkin workflow. The command line client did not have this issue.in the Pending Changes views the buttons were not…
Windows - Plastic: in the Pending Changes views the buttons were not disabled when an operation started, resulting in you being able to double click the button and maybe leave the GUI in an inconsistent state. We know you usually don't hit the Checkin button several times in a row (after all, it won't result in the checkin finishing faster!), but faulty mice are a thing and it is better to prevent the issue in the first place.the 'cm log' command returned a misleading error…
All platforms - Command line client: the 'cm log' command returned a misleading error message if you executed it outside a workspace with a changeset spec that didn't specify the repository. That's now fixed.We fixed an issue that caused builds to fail if t…
All platforms - Jenkins plugin: We fixed an issue that caused builds to fail if the last built changeset had been deleted elsewhere.Sorting code review comments by line didn't work…
Windows - Plastic: Sorting code review comments by line didn't work in the new CodeReview system. Now it's fixed.[code]cm status[/code] command is showing an "Err…
All platforms - Command line client:cm status<shelve_num>the 'cm applylocal' command was not printing loca…
All platforms - Command line client: the 'cm applylocal' command was not printing local changes dependencies. Fixed!8.0.16.3515
New
until now, if a user had the applyattr permission…
All platforms - Command line client, Plastic: until now, if a user had the applyattr permission denied at the repository level, said user could not apply an attribute on an object (branch, changeset or label) inside the repository even if the applyattr permission was overridden-granted for said object (changesets here have the same permissions of the branch they belong to). Now, the applyattr permission is only checked at the object level, and not at the repository level (which prevented Plastic from checking overridden permissions for this operation!). Remember that permissions are inherited, so if you deny said permission at the repository level, it will be denied for all objects inside it unless explicitly overridden.We improved the dark theme colors used in syntax…
macOS - Plastic, Gluon, Mergetool: We improved the dark theme colors used in syntax highlighting. We noticed that some of them (comments, keywords) made text difficult to read if it was inside a changed block, due to the highlighted background. Here's a before/after comparison:
the automation command "getworkspacefrompath" / "…
All platforms - Command line client: the automation command "getworkspacefrompath" / "gwp" now admits keywords in its format string argument. For example:For further information about the available keywords refer to the integrated help:$ cm gwp README.md --format="{wkname}{tab}{wkpath}"CHIPEIT c:\Users\sergi\wkspaces\chipeit
$ cm help gwp
We have new types of merge rules!
All platforms - Server: We have new types of merge rules!Let me walk you through them:1) restrict_merges_to_branch2) only_allow_merges_from_parent3) only_allow_merges_from_children
- works as follows: during a merge, if the destination branch matches the "to" restriction of a merge rule, the merge can only continue if the source branch of the merge matches any of the "from" restrictions in the same rule.
For the repository "codice", merges to branch "/fix3.0" are only allowed from branches named "fix3-*" (remember that you can use wildcards).// [{// "enabled": true,// "repositories": "codice",// "rule": "restrict_merges_to_branch",// "to":// {// "branchNames": ["/fix3.0"],// }, // "from": // { // "branchNames": ["fix3-*"],// }// }]
- and 3) are pretty similar. only_allow_merges_from_parent only allows a merge for a destination defined in the "to" restriction of a rule if the source is its parent. only_allow_merges_from_children will check the opposite - that the source is a direct child of the destination.
In the repositories with name "game*", branches with name "task*" can only receive merges from their parent branch. This way you can prevent merges across different task branches. However, branches with name "iteration*" can only receive merges from their child branches. So, for example, "/main/iteration-32/task23" can be merged into "/main/iteration-32", but it cannot be merged into "/main/iteration-15", as it is not a child of that branch. Right now you can edit these new kind of merge rules manually - the WebAdmin doesn't support them yet. The file is stored alongside server binaries, and its name is "mergerules.conf". This new merge rules are not available for Cloud yet, but will be soon!// [{// "enabled": true,// "repositories": "game*",// "rule": "only_allow_merges_from_parent",// "to":// {// "branchNames": ["task*"],// }// },// {// "enabled": true,// "repositories": "game*",// "rule": "only_allow_merges_from_children",// "to":// {// "branch_names": ["iteration*"],// }// }]
Bug
The GUI was not able to restart the file system w\…
Windows - Plastic: The GUI was not able to restart the file system watcher if it stopped due to an internal watcher error. In that eventuality, the pending changes calculation would take a noticeable amount of time more because it would need to check the disk contents instead of using the cached contents. This affects the auto-refresh feature as well, because it would trigger a refresh of the pending changes view whenever the GUI is focused, even when the workspace doesn’t contain any changes. Now, the file system watcher errors are properly handled and the watcher is correctly restarted afterwards. This issue appeared first in version 8.0.16.3281.Semantic multifile - We addressed several usabili…
Windows - Plastic: Semantic multifile - We addressed several usability issues in the case that we detect that code has moved between files and the displayed file is either added or deleted:- The semantic outline panel didn't keep the selection.
- The option 'Go to moved code', that you can find under the 'M' icon, didn't go to the right location for multi-file moves.
- Sometimes the moved icon for the multi-file moves was not shown.

Screenshot
There was an issue when moving an older repositor…
All platforms - Server: There was an issue when moving an older repository to be a submodule of a newer one. Imagine the following scenario:The repository myProject/webpages is older than myProject/doc (as determined by the moduleId, which is 1 for webpages and 2 for doc). Now, we are going to move doc to be a submodule of webpages:$ cm repo list --format="{repid}{tab}{repname}1 default2 myProject2_1 myProject/webpages2_2 myProject/doc3 otherWork
Everything looks sort of right (doc should be listed before webpages, but all of the repos are there). But see what happened when you restarted the server:$ cm repo rename myProject/webpages myProject/doc/webpages$ cm repo list1 default2 myProject2_1 myProject/doc/webpages2_2 myProject/doc3 otherWork
What happened to all of the repositories that should be after myProject? Well, we had an issue in the way we load repositories from the backend, which is now fixed:$ cm repo list1 default2 myProject
$ cm repo list1 default2 myProject2_2 myProject/doc2_1 myProject/doc/webpages3 otherWork
A few releases ago, we changed the order of the s…
macOS - Plastic: A few releases ago, we changed the order of the sidebar items. However, if you opened views using the View menu, or using the shortcuts, the views showed up corresponded to the old ordering. Fixed!The "create replication package" command failed w\…
All platforms - Plastic: The "create replication package" command failed with the error "Can't create a replication package from a repository with data replicated using the --nodata flag. Please hydrate the source repository first." if there was an empty file revision (i.e. its size is 0 bytes) without a related empty data object. Now it's working, as empty file revisions don't really need data objects.We fixed an issue in the polling results parser t…
Jenkins: We fixed an issue in the polling results parser that prevented the SCM Polling from returning the appropriate results.symlinks pointing to directories or to themselves…
Linux - Plastic: symlinks pointing to directories or to themselves had a wrong status and icon in the workspace explorer. Fixed.Users with spaces in their username were not able…
Windows, Linux - DevOps: Users with spaces in their username were not able to configure a profile for DevOps using the GUIs. They'd receive an error message that said something in the lines of:That's now fixed.Cannot retrieve the profile from localhost:7178. Details: The user 'Sergio+Luis' does not exist.
The fast update was not able to switch to a diffe…
All platforms - Server: The fast update was not able to switch to a different branch when the user cannot perform a merge from that branch because they don't have the mergefrom permission or because there is a merge rule that restricts it. Now it's working.The new Code Review system allowed you to comment…
Windows - Plastic: The new Code Review system allowed you to comment xlink changes but, later, it would fail when trying to visualize them. For now, we have disabled comments on files under xlinks (same as in the old system). We will work to add this functionality and much more soon! Remember, right now, you need to start with plastic --codereview to enjoy the new feature.We fixed some serialization issues that prevented…
All platforms - Jenkins Plugin: We fixed some serialization issues that prevented the REST API output from working.Builds failed if your selector targeted a cloud r…
Jenkins: Builds failed if your selector targeted a cloud repository. Fixed.8.0.16.3496
New
All platforms - Team Edition, Enterprise Edition…
All platforms - Team Edition, Enterprise Edition and Cloud Edition. Now you can manage your merge rules from the WebAdmin! As our friend Unai Landa from Digital Legends likes to say: "It is not a feature until it has a GUI". So, the awesome merge rules now can be configured from a GUI:
Screenshot

Screenshot

Screenshot
All platforms - Server - Now the replication is m…
All platforms - Server - Now the replication is more resilient to errors. If the parent revision cannot be found on the destination, the revision is replicated without parent instead of aborting the full replication operation.The displayed name of Plastic SCM Server service…
Windows - Installer: The displayed name of Plastic SCM Server service has been updated to "Plastic SCM Server". This is just an aesthetic change, since the internal service name is still "Plastic Server 6", to avoid breaking any scripts you may have to start/stop/status your Plastic server.Improved the error message shown in the replicati…
macOS - Plastic: Improved the error message shown in the replication progress panel to correctly use the available space. We saw that for long messages the text was cropped. Here goes the "before and after":
Screenshot

Version 3.0 is out! You can have a look at the im…
Jenkins plugin: Version 3.0 is out! You can have a look at the improved Wiki page to see the new features: https://wiki.jenkins.io/display/JENKINS/PlasticSCM+plugin Enjoy!We wrongly documented that 'n weeks ago' was a va…
All platforms - Command line client, Plastic, Gluon: We wrongly documented that 'n weeks ago' was a valid WHERE clause for date fields. For example:Instead of fixing the documentation, we implemented the feature.$ cm find changesets where date > "3 weeks ago"
Bug
An unexpected error was thrown when the mergetool…
Windows - Plastic: An unexpected error was thrown when the mergetool is configured without the progress command line option and semanticmerge is launched to solve the merge. Now it is fixed.Fix the following failing scenario
Server merge multifile: Fix the following failing scenario:- You move a method to a different file.
- Meanwhile someone else modifies the method in the original location in a different branch and also modifies other method in the other file, where the method was moved.
We had some GUI components too narrow for the Spa…
Windows - Plastic: We had some GUI components too narrow for the Spanish translation of the Windows GUI. The detected aesthetic issues are now fixed - don't hesitate to contact us if you see something out of place!All platforms - GUI and command line. Fixed an is…
All platforms - GUI and command line. Fixed an issue trying to merge moved paths that were already in use in the workspace. When merge failed to apply a move because the path was in use, it updated the metadata but not the filesystem, creating an inconsistency. Now the merge doesn't apply the move to the metadata if it can't be done on disk. Now you can also continue the merge if you release the path that was in use and click on "process all merges" again. You no longer need to undo all the changes and restart the merge after releasing the path.We fixed the "File explorer" navigation link in t…
All platforms - WebUI: We fixed the "File explorer" navigation link in the top bar. It was always redirecting to the tree of br:/main, but users that renamed their main branch to something else were getting Not Found results.Imagine the following scenario - you are working…
All platforms - Command line client, Plastic: Imagine the following scenario - you are working in a changeset, and somebody else deletes it! Apart from your colleague being a little disrespectful towards you and your work, Plastic warned you in the Pending Changes view that there were new changesets in the repository, which is not true... if any, there are only older changesets for your branch! Now, Plastic won't show that misleading message. Instead, it will warn you that the changeset you are working on was deleted when you try to checkin your changes.The undo operation left checked-out xlinks pendin…
All platforms - Plastic: The undo operation left checked-out xlinks pending -you needed to undo them again- sometimes when trying to undo all changes. This happened if the checked-out xlink was part of the targeted changes and under it there was a moved item with dependencies (e.g. a moved directory whose source is in use by a copied directory). Now all changes are undone the first time, as expected.8.0.16.3480
New
improved the embedded semanticmerge to take into…
Windows - Plastic: improved the embedded semanticmerge to take into account the preferences related to the merge conflict resolution (manual or automatic when possible).some users reported that, in Gluon, the purpose o…
Windows - Plastic, Gluon: some users reported that, in Gluon, the purpose of the checkin comments textbox wasn't obvious. Our bad! Luckily, that's what hint texts are for - so now both Plastic and Gluon have a hint text so you never leave a checkin comment empty ever again!
Screenshot
Bug
All platforms - Fixed the checkin error 'There ha…
All platforms - Fixed the checkin error 'There has been an unexpected error "The item should be found on the server tree. Child [readme.txt]. Parent [doc]". For more information check the server log.' trying to checkin a merge result on a workspace with cloaked items under some special circumstances. Let's see a simplified case that reproduces the error that now is fixed: 1- Create a new workspace pointing to a new repository. 2- Add and checkin the following content: /src /src/foo.c 3- Cloak /src (the items remains loaded but as cloaked). 4- Create a child branch task from cset:0 5- Merge from main to task 6- Checkin the merge result -> The checkin failed with the following error: 'There has been an unexpected error "The item should be found on the server tree. Child [foo.c]. Parent [src]". For more information check the server log.'. Now it's fixed8.0.16.3476
New
Now update always goes to latest
All platforms – Plastic, Gluon, command line: Now update always goes to latest. Suppose you switched your workspace to a particular changeset, then decided to update. You were stuck on that changeset, by design. We thought (for a few years already) that if you had switched to a given changeset, why would you want to jump to latest during an update? But then we realized it was a true UX pain. Why wouldn't you want to switch to latest? So, we just changed the behavior. Now, when you update, you'll always go to latest in the branch, even if you were working on a given changeset or label before.The new Code Review system now displays questions…
Windows - Plastic: The new Code Review system now displays questions in the comments list.
Screenshot

Screenshot
Small refactor and cleanup of the merge code to g…
All platforms - Plastic: Small refactor and cleanup of the merge code to get ready for the "incoming changes" feature that will hopefully simplify working on single branch and will make all Perforce users rush to Plastic.With the performance improvements we made some re…
macOS - Plastic, Gluon: With the performance improvements we made some releases ago, we introduced a change in how the autoexpanded items in the Pending Changes (Plastic) and Checkin (Gluon) views were handled. When you refreshed the view, the only category that got expanded was the one you had an item selected in. This didn't like some users, so we reverted it - autoexpansion saving will work for less than 5000 items (whilst it won't for 5000 items or more, for performance reasons).The new CodeReview system supports outlining
Windows - Plastic: The new CodeReview system supports outlining. When a comment was placed in a line that was collapsed due to outlining, it was rendered in a wrong line. Now the comment is hidden when the line is collapsed and visible when the line is not collapsed. We also improved the comments navigation. When navigating to a comment, we always ensure that the line that contains the comment is always expanded. Otherwise, in some scenarios a comment could be not visible. Remember, right now, you need to start with plastic --codereview to enjoy the new feature.Bug
Improved declaration matching mechanism to detect…
Windows - SemanticMerge tool: Improved declaration matching mechanism to detect properly the conditional inclusion in the following 'merge' scenario: Source contributor:Destination contributor:ifndef MY_VARinclude "MyInclude1"include "MyInclude2"int my_field1;int my_field2;endif
Wrong Result:ifndef MY_VARinclude "MyInclude1"endif
Result from now on:include "MyInclude1" (Moved)
include "MyInclude2" (Deleted)int my_field1; (Deleted)int my_field2; (Deleted)
After installing .net 4.8, the Plastic SCM views…
Windows - Visual Studio package: After installing .net 4.8, the Plastic SCM views were not visible in Visual Studio 2019. Now it's fixed. .NET Framework 4.8 comes with several enhancements to support Per-Monitor V2 DPI Awareness (PMv2) and Mixed-Mode DPI hosting in both Windows Forms and Windows Presentation Foundation (WPF). Unfortunately, tool windows created in Windows Forms were not render correctly when its Per-Monitor Awareness (PMA) setting is enabled. We made changes in the code to address this issue.we had a bug in the new code review that resulted…
Windows - Plastic: we had a bug in the new code review that resulted in some branch reviews showing an empty GUID for the branch, instead of its actual GUID. Now that's solved!The preferences dialog displayed duplicated ok an…
Linux - Plastic, Gluon (Cloud Edition): The preferences dialog displayed duplicated ok and cancel buttons. Now it's fixed.8.0.16.3458
New
We enabled multi-file semantic merge by default i…
Server - macOS, Linux, Windows: We enabled multi-file semantic merge by default in mergebots. For more information, refer to the mergebots documentation.The new Code Review system now allows to visualiz…
Windows - Plastic: The new Code Review system now allows to visualize comments that are located in revisions that are not loaded by the diff window. This happens when, for example, you applied revision comments, and created new revisions for a file in the branch. When this happens, we display a panel with three actions:- Diff revision with comments: This action allows to visualize the revision with the comment on the right diff pane, and the base revision on the left diff pane.
- Last in branch: This action displays the last revision in branch on the right diff pane, and the base revision on the left diff pane (the same as when you select a file in the top tree).
- Diff with head: This action the revision with the comment revision on the left diff pane, and the last revision in branch on the right diff pane.

Screenshot
The new Code Review system now allows to visualiz…
Windows - Plastic: The new Code Review system now allows to visualize change `sts in the comments list. Remember, right now, you need to start with plastic --codereview to enjoy the new feature.The new Code Review system now allows to choose t…
Windows - Plastic: The new Code Review system now allows to choose the comment type when adding a new comment. You can 'request a change', 'ask a question' or simple write a regular comment.
Screenshot
Our built-in mergebot that implements trunk-based…
Server - DevOps: Our built-in mergebot that implements trunk-based-development cycle (a.k.a. trunk-bot) is now able to use embedded Plastic code reviews to drive the CI/CD lifecycle. Enable the following "Process reviewed branches only" toggle button in trunk-bot configuration to activate this feature:
Screenshot
- When a code review of a tracked branch (those that starts with the configured branch prefix in trunk-bot config) is created, or its status changes, the task branch is queued in trunk-bot.
- Then, trunk-bot will eventually dequeue this task branch. But before continue its processing in the CI cycle, trunk-bot will check whether there is at least an "Approved" code review for this branch. Otherwise, the branch processing is skipped but enqueued.
- If there are more than a code review linked to this task branch, all of them need to be approved before processing the task branch.
- If all the code reviews are approved, the task branch continues its processing by the trunk-bot:
- a)If the merge fails (manual conflicts detected), or the branch build in the configured CI system fails, the status of the linked code reviews of the branch will be set to "Pending".
- b)If the merge succeeds and the branch build succeeds too, the task branch is merged, and the "status" attribute of the branch is set to "merged" (these fields must be filled in the trunk-bot configuration).
Bug
Merge: corrected the merge behavior for scenarios…
macOS, Linux - Plastic: Merge: corrected the merge behavior for scenarios involving writable xlink conflicts. The merge is one of the strongest and key features about Plastic SCM so we can't afford failures on it.A 'Value cannot be null. Parameter name: source'…
Windows - SemanticMerge tool: A 'Value cannot be null. Parameter name: source' exception was thrown when the destination file of the merge was empty. Fixed.The Merge-to was wrongly showing the merge finish…
All platforms - Plastic: The Merge-to was wrongly showing the merge finished status if a file was individually solved under a writable xlink conflict but there were more conflicts pending to solve. Now it's fixed.we fixed a bug which meant that the help wasn't d…
All platforms - Command line client: we fixed a bug which meant that the help wasn't displayed for some "cm partial" subcommands. For example, "cm partial update --help" now works as expected.Sometimes, when closing the diff window, an unexp…
Linux - Plastic, Gluon: Sometimes, when closing the diff window, an unexpected "Index out of range" error appeared. Now it's fixed."Checkin Changes" view: Sorting files by "Date mo…
Windows, Gluon: "Checkin Changes" view: Sorting files by "Date modified" was not working as expected. Now it's fixed. We broke this by mistake when we reorganized the columns a few releases ago.A 'Value cannot be null. Parameter name: source'…
Windows - SemanticMerge tool: A 'Value cannot be null. Parameter name: source' exception was thrown when the destination file of the merge was empty. Fixed.8.0.16.3442
New
The new Code Review system now allows to start co…
Windows - Plastic: The new Code Review system now allows to start conversations, using the "Reply" functionality. Remember, right now, you need to start with plastic --codereview to enjoy the new feature. You can check how it looks here, dealing with a conversation with several threads.
Screenshot
Improved the progress text shown in the workspace…
macOS - Plastic: Improved the progress text shown in the workspace window toolbar to correctly use the available space and adapt it when the window is resized. We saw that sometimes the progress text was cropped even when there was plenty of space available to display it. Here goes the "before and after":
Screenshot
New Merge Rules system
All platforms - Server: New Merge Rules system. We added a Merge Rules system (mergerules.conf). Use it to make branch reviews mandatory prior to merge. This is a good equivalent to the popular "pull request restrictions" that force to review branches before merge. The Merge Rules define what branches must be reviewed when merged to certain branches. If a merge can't happen, you'll receive an error like this:Here is an example of a very simple mergerules.conf forcing all branches QUAK-* to be reviewed prior to be merged to main.Cannot perform the merge. Review the branch '/main/QUAK-00' to merge it to '/main'.
The new mergerules.conf is a JSON file that must be placed in the server directory (where plasticd.exe is located). You will find a mergerules.conf file with some examples in your server directory, inside config_samples, and alongside the binaries for clean setups (on Windows using the installer, and GNU/Linux using the official packages) so you can directly modify it. You don't need to restart the server for changes to take effect! Each rule defines source and destination branch matching as well. Branch matching is done using name patterns (with '*' to represent any substring), attribute matching, and you can specify multiple rules of each kind, too. Finally, when you're about to merge a branch, the server will check whether there are any rules that apply to that source/destination pair. We plan to support different kinds of mergerules in the future, but right now there is only one: 'only_allow_merges_if_reviewed'. If both source and destination branches match a rule of this kind, the server will only to merge source branches that have an Approved review. It is also possible to filter branches by attributes, instead of names. Check the example mergerules.conf to find all the filtering options.>cat mergerules.conf[{ "enabled": true, "repositories": "*", "rule": "only_allow_merges_if_reviewed", "to": { "branchNames": ["main"] }, "from": { "branchNames": ["QUAK-*"], }}]
Added notifications of "code review changed" even…
Server, DevOps: Added notifications of "code review changed" events through the web socket channel the DevOps mergebots use. This means the mergebots will now be able to implement filters to avoid merging branches that don't have an approved code review. We will enable this filter for our built-in "trunk-bot" really soon. Stay tuned! To enable this notification on custom mergebots you may have written, your mergebot will have to subscribe to these events by sending a message to the Plastic Server websocket endpoint (e.g.ws://<SERVER_IP_HOSTNAME />:7111/plug(The "eventlist" array could also contain "newChangesets" and "branchAttributeChanged" trigger types to subscribe to these events too). Once the subscription is completed, your mergebot will be able to receive "code review changed" messages when a code review is created, when the code review status is changes, when the code review title is changed, and when a code review is deleted. The message sent this way through the web socket looks like the following json:{ "action": "register", "type": "trigger", "eventlist": [ "codeReviewChanged" ]}
REMARK: The code review notifications are sent only if the code review is bound to a branch.{ "type": "trigger", "event": "codeReviewChanged", "properties": { "branchComment": "HDP-122 - implement stats tool", "branchFullName": "/main/HDP-122", "branchId": "682", "branchOwner": "JesusManuel", "codeReviewId": "684", "codeReviewStatus": "Approved", "codeReviewTitle": "Review HDP-122", "repository": "tooling" }}
we have added an "--ignored" option to the "cm rm…
All platforms - Command line client: we have added an "--ignored" option to the "cm rm private" command. By default, ignored files are skipped during the delete. The "--ignored" option allows you to include ignored files. Note: this is a change from the previous default behaviour. Previously, ignored files were included by default.Bug
Sometimes, when switching workspaces, users got t…
macOS - Plastic: Sometimes, when switching workspaces, users got the following error: "cannot access a disposed object". Now it's fixed!Disable the 'Diff changeset' context menu in anno…
macOS, Linux - Plastic: Disable the 'Diff changeset' context menu in annotates for lines changed locally.
Screenshot
We improved the behavior when you have local chan…
All platforms - Plastic, Gluon: We improved the behavior when you have local changes and the changeset loaded in your workspace is deleted by a different user. Before these improvements, this meant that you got stuck: at that point you were unable to checkin, shelve or undo your local changes. We modified the client behavior to enable you to undo your local changes, letting you out of that loophole. Shelving or checking them in will still be unavailable, as they wouldn't have a parent changeset. The 'undo' behavior will be slightly different depending on the client you use: Gluon will always allow you to undo the local changes. If the original contents aren't available anymore, the head contents of the current branch will be used instead. Plastic, on the other hand, will notify you about the inconsistency and then ask you for confirmation to undo all your local changes and update the current workspace.The sync view was failing with the error 'Error:…
Server: The sync view was failing with the error 'Error: There has been an unexpected error "Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.". For more information check the server log.' on the following case:- We have the servers A and the server B
- On both servers we have the repository myrep
- On myrep@B, we create the branch main/task and perform 2 checkins on it (changeset 4 & 5).
- We create a sync view with source myrep@A and destination myrep@B
- We pull all changes -> We pull main/task
- On myrep@B, we delete the changeset 5.
- We try to sync, and the sync view fails with the error ''Error: There has been an unexpected error "Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.". For more information check the server log.'
Right-clicking in the Workspace Explorer view bef…
macOS - Plastic: Right-clicking in the Workspace Explorer view before the view is loaded triggered an unexpected error. Now it's fixed!Include missing JAR files necessary to show the s…
Windows - Visual Studio integration package: Include missing JAR files necessary to show the semantic history of java and c++ files.8.0.16.3417
New
We added on the Jet backend a mechanism to verify…
Server: We added on the Jet backend a mechanism to verify that all files are on the right version. This mechanism will be needed by the future upgrade on the Jet backend.More improvements in the prototype of the upcomin…
Windows - Plastic: More improvements in the prototype of the upcoming Code Review system. Now you can change the assignee directly in the code review window. As we already announced, it is not yet functional but you can give it a try if you start your Plastic this way:Let's see it in action:plastic --codereview

Screenshot
as requested by users, we now append a newline ch…
All platforms - Command line client: as requested by users, we now append a newline character to the end of xml output, so the output plays more nicely when fed into xml parsers. Bonus: we fixed the xml output of the "ls" command. It used to incorrectly append the standard output to the xml.When you create a branch with a name that already…
Windows - Plastic: When you create a branch with a name that already exists, the error message will be shown in the dialog and the dialog won't be closed. Before, the error was displayed in an additional popup window (more clicks for users) and the dialog was closed.
Screenshot
Evolved prototype of the upcoming Code Review sys…
Windows - Plastic: Evolved prototype of the upcoming Code Review system. Now, the prototype manages real data. You can give it a try if you start your Plastic this way:You can create new reviews, and edit existing ones. Feel free to share your feedback.plastic --codereview
Bug
Under some circumstances, the label that shows th…
Windows - Gluon, Plastic: Under some circumstances, the label that shows the metadata info is cut in the diff and changeset explorer windows.suppose you move a file, and then you move anothe…
All platforms - Command line client: suppose you move a file, and then you move another file to where that first file used to be, and then you "cm undo" those two moves. Of course, the first move can only be undone after the second move, and, of course, Plastic takes that kind of dependency resolution in its stride. However, the cli, being modest, would only tell you that it successfully undid the second move. We've now fixed the output so it tells you about the first move too.improved handling of occupied paths
All platforms - Plastic, Command line client: improved handling of occupied paths. You may have noticed that when Plastic needs to write a controlled file to disk, but the path is occupied by another file, it moves the existing file out of the way (to "file.private.0") so that you don't lose any data. The same for directories. There were a couple of cases we weren't handling so gracefully, and would produce an error message. We have fixed the handling for these cases. Specifically, you can now undo the move or remove of a file when the path is occupied by a directory, and undo the move or remove of a directory when the path is occupied by a file, and your local data is preserved in all cases.Udt wasn't working to do replicas between servers…
Windows - Server: Udt wasn't working to do replicas between servers unless you forced Remoting protocol using plasticpipeprotocol.conf. It is now fixed.8.0.16.3400
New
Pending Changes will now fly when you have files…
All platforms - Plastic, Gluon: Pending Changes will now fly when you have files with timestamp but not content changes. Many Unreal and Unity users face this issue: their IDEs modify timestamps of files "randomly" but not content. Plastic finds them as changed. Then they check this preference in Plastic: "Check the content to determine files as changed, not only timestamp" and the fake changes disappear but... at a cost. Pending Changes starts getting slower and slower because it has to calculate the hash of each "fake change". Now this is fixed because Pending Changes (on GUI, CLI, plugins, everywhere) will update the timestamp of its metadata to avoid having to rehash next time.From now on, fresh installs of Plastic SCM Team o…
From now on, fresh installs of Plastic SCM Team or Enterprise editions will be packed with a 5 days free trial license for 5 users (before this version, the free trial license only allowed 1 user).More improvements in the prototype of the upcomin…
Windows, Plastic: More improvements in the prototype of the upcoming Code Review system. We removed the initial dialog to create the code review. Now it will be created directly and users will be able to edit anything (title for now) in the code review window. As we already announced, it is not yet functional but you can give it a try if you start your Plastic this way: plastic --codereview And then go to create, edit and delete a Code Review.
We improved the error message you get when you tr…
All platforms: We improved the error message you get when you try to undo some locally moved files but their original directory cannot be found. This usually happens because you aren't allowing plastic to detect locally deleted directories, so the client can't restore them. The error message now suggests you to enable deleted item detection. For instance, let's say you transform this workspace tree:Into this:/a`- /b (1) |- fileA.txt (2) `- /c `- fileC.txt (3)
/a/b is detected as locally deleted in this scenario. At that point, if you run 'cm undo --moved -r' the client can't restore the moved files because directory /a/b can't be found (it's detected as locally deleted). You'd need to include the --deleted argument. In the GUI you'd normally get a dependencies warning before the undo; however, if you don't check the "Show deleted files and directories" option in the "What to show" tab of the Pending Changes view, the operation can't properly calculate the dependencies and it will fail./a`- /x (1) (LM from /a/b/c) |- fileB.txt (2) (LM from /a/x/fileA.txt) |- fileA.txt (3) (LM from /a/x/c/fileC.txt) `- /c (private)
When diffing from the history view, when the load…
All platforms - Plastic, Gluon: When diffing from the history view, when the loaded revision was the right revision, the diff was not editable. Now we detect that case, and make it editable.We improved the error message generated when 'cm…
All platforms - Command line client: We improved the error message generated when 'cm undo' can't undo a change because there is a dependency. It now advises you to include the depended upon item in the set of paths passed to the command.Bug
merging a change to a binary file (when only the…
All platforms - Plastic, Command line client: merging a change to a binary file (when only the source has changed) used to fail if file in the destination branch was read-only. You used to get an error about "Access to the path" being denied. We fixed this, and the merge now completes successfully.The checkin operation did nothing (and displayed…
macOS, Linux - Plastic: The checkin operation did nothing (and displayed no feedback) if you performed a merge that created no changed files. That can happen e.g. if the only merge conflict is a readonly-xlink modified in both contributors (a directory conflict) and you select "Keep destination" to solve it.The external tools failed to launch for items tha…
Linux, macOS - Plastic: The external tools failed to launch for items that were not in the workspace (for example, opening an external tool on a file when browsing the repository in other cset different than the current one). That's now fixed!The update was not able to download new items in…
All platforms - Gluon: The update was not able to download new items in a very specific scenario with delete, add and move operation related among them. The error shown in the report was the following "The new item cannot be loaded in the workspace. Probably, the path is already used. Please unload the item (from the configuration view) and retry the operation." The specific scenario was the following: Having this repository structure:One user loads in the workspace (wk1) the following content (the whole repo except for /bar.c)./src/src/code/src/code/foo.c/bar.c
Another user that loads the whole repo, make the following changes and checkin them:/src/src/code/src/code/foo.c
When the user (wk1) run an update, he got the "The new item cannot be loaded..." error. Now, the /src/code/qux.c is correctly download.add /src/code/qux.cadd /sourcemove /src/code /source/coderm /src
8.0.16.3388
New
Here goes a prototype of the upcoming Code Review\…
Windows, Plastic: Here goes a prototype of the upcoming Code Review system. It is not yet functional but you can give it a try if you start your Plastic this way: plastic --codereview And then go to edit an existing Code Review.
Screenshot

Screenshot

Screenshot
From now on, missing client-side triggers won't m…
All platforms - Client-side triggers: From now on, missing client-side triggers won't make trigger execution fail: the next trigger in the list will be executed instead. Bear in mind that by "missing client side trigger" we mean "when the executable of the trigger is not accessible by Plastic process" (CLI or GUI). If the trigger executes, but fails, will make trigger chain execution fail as before. This is useful when you store triggers in a repository: on first update, the trigger is not present, and thus it is skipped, instead of making update operation fail (forcing you to remove the trigger, run the update, restore the trigger...)We changed the cherry-pick link color when the Da…
macOS - Plastic: We changed the cherry-pick link color when the Dark Theme is enabled. They were extremely difficult to notice until now, so we're dragging them out of the shadows! Take a look at how it looks:
Bug
Fixed a couple of scenarios where the user couldn…
Xlinks: Fixed a couple of scenarios where the user couldn't perform changes inside an xlink due to the "Can't perform a checkout in an edited xlink" error. FIRST SCENARIO The first one was related to checking-in partial changes inside an xlink. Having the following structure in the workspace, where /xlink is an xlink :)If we add a couple of files:/xlink/foo.c
But we only checkin one of them:cm add /xlink/bar.ccm add /xlink/qux.c
cm ci /xlink/bar.c[code]We will not be able to checkout /xlink/foo.c or add a new file /xlink/aux.cSECOND SCENARIOThis happens also when checking-in changes inside an xlink but in a different way.Let's suppose that we are committing some changes inside and xlink and there are not new changes in the xlinked repo so it can be correctly completed. BUT, someone created a new changeset in the parent repo so a merge is needed in order to complete the checkin for the parent repo although the changes inside the xlink where correctly checked-in.At this point, we are in the same situation than in the previous scenario. We are not able to checkout or add any new file inside the xlink.
When undoing complex locally moved changes, you c…
All platforms - Plastic, Command line client: When undoing complex locally moved changes, you could get the error "The item XYZ already exists!". That's been fixed. If you want a deeper explanation of the problem, continue reading! Imagine this scenario - you have a deep tree structure and you do the following operations outside of Plastic SCM:- Rename a directory.
- Rename a file inside said directory (from name A to B).
- Move up a file deeper in the tree structure to be alongside the recently renamed file.
- Rename the file you just moved to have the same previous name as the other file you renamed (from name C to A).
Into this:/a|- /b (1)| |- fileA.txt (2)| |- /c| | |- fileC.txt (3)| | |- some.txt| | |- more.txt| | |- files.txt\ \ \- here.txt
...where numbers (1), (2) and (3) indicate the item correspondence (directory or file), and (LM) indicate the new status from said item. Now, before doing further operations (undo, checkin, and so on), Plastic SCM needs to convert local changes to controlled ones. The problem was that, because of how Plastic SCM calculates precedence between local changes, it was trying to apply first the LM on item (3) instead of on item (2). An item with the same name and path already existed in the metadata (because changes on (2) were still to be applied), and the command execution failed. Now, Plastic SCM correctly calculates locally moved changes precedence in order to apply them in the right order. This is a good moment to remember you that, for doing complex restructurings, you can use the GUIs or the command line client. Plastic SCM will update the metadata with each move, delete, and rename operations, which makes the process much less error-prone./a|- /x (1) (LM from /a/b)| |- fileB.txt (2) (LM from /a/x/fileA.txt)| |- fileA.txt (3) (LM from /a/x/c/fileC.txt)| |- /c| | |- some.txt| | |- more.txt| | |- files.txt\ \ \- here.txt
8.0.16.3379
New
We improved the error message generated when a ch…
Server: We improved the error message generated when a changeset is unexpectedly not found in the database. Rather than a generic message, we now return a message specific to the scenario, with appropriate advice for the user where applicable.We all know you can easily merge a branch or chan…
All platforms - Plastic: We all know you can easily merge a branch or changeset into your workspace from the branch and changeset context menu. Did you know you can also merge a branch or changeset into another branch, essentially performing a "workspace-less merge"? That feature has been available for a while, but users couldn't find it because we hid it in an "Advanced" submenu. We've moved the "Merge from this changeset/branch to..." menu option up to the primary menu so make it easier to find.
Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot
the "Replication" submenu item in the branch cont…
All platforms - Plastic: the "Replication" submenu item in the branch context menu has been renamed to "Push/Pull" so it's a bit easier to find when you're looking for the various Push and Pull options. Here's how it looks:
Screenshot

Screenshot

Screenshot
Until now, cancelling an update worked as follows…
All platforms - Gluon: Until now, cancelling an update worked as follows: if Plastic was downloading a block of files (the server sends small files together in a block to improve performance), the GUI would finish downloading said block, and then cancel the update. However, if instead of a block of small files Plastic was downloading a huge file, the operation would not cancel until said file finished downloading. For files in the megabytes range this is not that much of an issue, but for files of several gigabytes having to wait didn't make much sense. That's why we changed how cancelling an update works: the update will stop right away, and the big file in progress will be left incomplete - it will show up as changed in the pending changes / checkin views.we have improved the error message you get if you…
All platforms - Plastic: we have improved the error message you get if you try to delete a changeset that can't be deleted. There are a number of reasons why a changeset could not be deleted. Ideally we would tell you the specific reason in your case. At some point we will, but until then, we have updated the error message to tell you the possible causes. For reference, a changeset cannot be deleted if: It is the parent of another changeset It is the source of a merge link There exists a shelveset created from the changeset There is a label on the changesetWe improved the confirmation dialog you get when…
All platforms - Plastic and Gluon: We improved the confirmation dialog you get when you Lock and Checkout an item and there aren't any existing lock rules that match its path. It allows you to choose between these kinds of rules:- Extension rule ('*.db')
- Name rule ('Database.db')
- Directory path ('/Library/Assets')
- Full exact path ('/Library/Assets/Database.db')
- Or write your own!

Screenshot

Screenshot

Screenshot

Screenshot
Great news! The Workspace explorer now includes a…
Windows - Gluon: Great news! The Workspace explorer now includes auto-refresh! Now, every time Gluon becomes the key window you'll notice that the Workspace Explorer view is automatically refreshed if there are new changes in the workspace since the last time it was refreshed. Additionally, we improved the Status column to display whether a file or directory is ignored, not on disk or added.Bug
Sometimes automatic merges produced joint lines a…
All platforms - Mergetool: Sometimes automatic merges produced joint lines at the end of files. This happened if the base file didn't end with a newline character, comparison method was set to "Ignore EOL" and automatic merge was enabled (manual merges were OK). For example, having this base file base.txt (no EOL at the end):This source file src.txt (ends with EOL):line1line2line3
and this destination file dst.txt (ends with EOL):line1line2line3line4
If you ran 'mergetool.exe -s=src.txt -d=dst.txt -b=base.txt -r=result.txt -i=eol -a', you got this in the result file result.txt (ends with EOL):line1line2line2-1line3
line1line2line2-1line3line4
there were a couple of issues in the 2D revision…
Windows - Plastic: there were a couple of issues in the 2D revision tree (when you browse the history of an item as a 2D tree). The first one was considering changesets that were the source of shelves with merge traceability (used in DevOps operations by the mergebots) as relevant. The second one was not discovering the destination of a merge involving an item if no new revisions of the item were originated in the destination branch of the merge. Both of them are fixed, so you shouldn't see "Unchanged" changesets without mergelinks.Windows agents couldn't update their workspaces i…
Jenkins plugin: Windows agents couldn't update their workspaces if the master ran in Linux and the agent root directory was defined with forward slashes instead of windows-like backwards slashes. Fixed!Installing Plastic using the client-only installe…
Windows installer: Installing Plastic using the client-only installer, and then upgrading to a cloud edition was causing the local server component not to be installed. Now it's fixed.8.0.16.3361
New
The ability to force Lock and Checkout in the Wor…
All platforms - Plastic, Gluon: The ability to force Lock and Checkout in the Workspace Explorer context menu is now available!
Screenshot

Screenshot
We have tweaked the column width and order in sev…
macOS - Gluon: We have tweaked the column width and order in several tables across the application. Now, the relevant information should be more accessible. Explorer:
Screenshot

Screenshot

Screenshot
$ rm -rf /Users/your_username/Library/Preferences/com.codicesoftware.*
When diffing a file from the "Workspace Explorer"…
All platforms - Gluon: When diffing a file from the "Workspace Explorer" or the "Checkin changes" views, the diffs was not editable. Now it's fixed.the mergetool used to show the full path and bran…
All platforms - Mergetool: the mergetool used to show the full path and branch or changeset specification for each of the 3 contributors to the merge (or 2 contributors for a diff). Of course, if the path is the same for all the contributors there is no point showing multiple times. In this case, we now display the file path in the title bar, and only show the unique specification of each contributor above each file pane. This makes it much easier to see all the relevant information, especially for long paths.
Screenshot
We replaced text entries for editable comboboxes…
macOS, Linux - Plastic, Gluon: We replaced text entries for editable comboboxes in many of the places we ask you to type in a server. Those comboboxes are filled with the servers you use frequently - this way, there is no need to remember a server address. What's even better, if you are a Cloud Edition user, the comboboxes actually have ALL of the organizations you are part of! Check out how it looks in macOS:
Screenshot
Gluon and Plastic. Added the edit comment operati…
Linux and MacOs: Gluon and Plastic. Added the edit comment operation to the diff window. Let's see it in action! For Linux:
Screenshot

Screenshot
Implemented two new options in the history view
macOS, Linux - Plastic: Implemented two new options in the history view:- Diff changeset -> Launches the diff window for the changeset the revision belongs to.
- Revert to this revision -> Checkouts the file on disk and replaces the file content with the content of the selected revision.

Screenshot
Bug
there was a bug that could crash the application…
macOS - Plastic, Gluon: there was a bug that could crash the application if it tried to display a dialog when hidden. Now it's fixed - the dialog will appear as soon as the application is in the foreground again.A deserialization error could be shown when creat…
CodeBeamer Issue Tracker extension: A deserialization error could be shown when creating a new branch in Plastic SCM with this extension enabled. This could happen if the CodeBeamer server API response contained "assignedTo" field values different than an array (e.g. a single object). Fixed: now the CodeBeamer extension supports "assignedTo" responses as arrays and as single objects.The 'Search files' dialog in the 'Explore workspa…
Linux - Gluon: The 'Search files' dialog in the 'Explore workspace' view could return wrong results when typing while a previous search was running. Fixed.running "cm status" with both the "--head" and "-…
All platforms - Command line client: running "cm status" with both the "--head" and "--cset" options set resulted in a null reference exception being thrown. We fixed this and these two options can now be used together. "--head" prints the details of the head changeset on the branch "--cset" gives you the output in the legacy format8.0.16.3347
New
Plastic, Gluon: Added actions to semantic diffs b…
macOS, Linux: Plastic, Gluon: Added actions to semantic diffs buttons. Now changed (C) and moved (M) buttons allow to diff changed code and go to moved code. This is how it looks like in macOS:
Screenshot

Screenshot
We added support for job parameters in Pipeline c…
Jenkins plugin: We added support for job parameters in Pipeline checkout selectors.The cm path setting in the global plugin settings…
Jenkins plugin: The cm path setting in the global plugin settings has now a validation action.JiraPlug: The JiraPlug will now be able to connec…
DevOps: JiraPlug: The JiraPlug will now be able to connect to Jira Cloud servers using Basic Authentication with an API token instead of user's password. The related configuration field in JiraPlug will now be more descriptive about this fact:
Screenshot
JiraPlug: Improved check connection on plug start…
DevOps: JiraPlug: Improved check connection on plug startup. If the entered credentials are not valid, a proper error message will be logged insidedevops/logsBug
Changes in release 2.21 altered how workspace nam…
Jenkins plugin: Changes in release 2.21 altered how workspace names are set. This was disruptive for some setups that rely on workspace names to build. It's fixed now.Pipeline checkouts always checked the "use multip…
Jenkins plugin: Pipeline checkouts always checked the "use multiple workspaces" option. Fixed!Sometimes the switcher window appeared behind the…
Windows - Gluon: Sometimes the switcher window appeared behind the Gluon window where you clicked "Switch workspace". We modified how we display the switcher window to ensure it is displayed in the right place, i.e. over the Gluon workspace window.the application could come into an unresponsive s…
macOS, Linux - Plastic, Gluon: the application could come into an unresponsive state for a few minutes when trying to download the Plastic global configuration from an inaccessible server. This was because of a thread interlocking issue. One easy way to reproduce this problem was as follows: open Plastic SCM in a workspace whose repository server is not available (maybe because it is in another network), and try to change to another workspace. The second Plastic SCM window won't be able to load the Workspace Explorer view until the first one finishes trying to download the inaccessible global configuration. This is now fixed!8.0.16.3339
New
SemanticMerge is now part of Plastic SCM!
Windows - Plastic: SemanticMerge is now part of Plastic SCM! Yes, you read it right: now you get the full power of SemanticMerge bundled with Plastic, no extra purchase, everything included. It means if you are merging C#, Java, C, C++, VB.net or any other language supported by Semantic... you get the extra power of code-aware merges.
Screenshot
Conflict resolution is now incredibly faster!
Windows - Plastic: Conflict resolution is now incredibly faster! This is because our merge tool is now launched within the same process instead of spawning a new one, which makes it start up super fast. For automatic file conflicts, the resolution is immediate. Before this improvement, the conflict resolution speed is normal but now it flies!
Screenshot

Screenshot
Gluon and Plastic. Added the edit comment operati…
Windows: Gluon and Plastic. Added the edit comment operation to the diff and changeset explorer windows. Let's see it in action!
Screenshot
We improved how ignore.conf rules are processed t…
Pending changes: We improved how ignore.conf rules are processed to improve the performance of the Pending Changes view refresh operation in the GUIs and the 'cm status' command. Now, ignored directories will be entirely skipped if there aren't any ignore exclusion rules (you know, those that start with the '!' character) that might apply to a child item. These are the rules that, if present, automatically mean that any ignored directory could have any of its child items excluded from being ignored:- Extension rules: '!.exe', '!.pdb'
- "Ends with" rules: '!.exe.config', '!/log/results.txt'
- "Contains" rules: '!bin'
- Name rules: '!Debug', '!parameters', '!package.json'
The mere existence of the last rule (!/cfg/keys_default.cfg) caused the complete tree under /Library to be processed, even if none of its children could be excluded! Fortunately, we changed that now. The last rule, the exclusion one, will only affect items directly under /cfg. If you had some directory like /cfg/db, it won't be processed either: there aren't any rules that might exclude one of its children from being ignored./Library/cfg!/cfg/keys_default.cfg
Bug
The diff viewer did not draw the current differen…
Windows - Plastic: The diff viewer did not draw the current difference border for moved regions, when the changed lines in the moved regions were the first or the last. Now it's fixed:
Screenshot
The sync command failed with the message "The use…
GitSync / fast-export: The sync command failed with the message "The user xxxx appears as an inactive user because his/her license has been deactivated. Please activate it and then try again." when the user who launched the operation didn't exist in the repository used by the command. The same happened with the fast-export command.8.0.16.3332
New
We have tweaked the column width and order in sev…
macOS - Plastic SCM: We have tweaked the column width and order in several tables across the application. Now, the relevant information should be more accessible. This change affects only Plastic SCM newcomers - if you already use Plastic SCM for macOS, the order and width of the columns in the applications are stored in a preference. If you want to reset this preference, you can execute the following command:Here is how it looks: Workspace Explorer:$ rm -rf /Users/your_username/Library/Preferences/com.codicesoftware.*

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot
we've added a Repository column to the "Checkin c…
Windows - Gluon: we've added a Repository column to the "Checkin changes" view, and we've changed the default column order of the Changesets view to make it consistent across all 3 platforms.We enhanced our Jira issue tracker extension to d…
Jira Extension: We enhanced our Jira issue tracker extension to disable it when it detects that the entered credentials are invalid. This prevents the extension from performing many unauthorized requests. That would lock users out of their accounts, needing to reset them using CAPTCHAS in some organizations.The differences viewer did not show a mark for ad…
macOS, Linux - Plastic, Gluon: The differences viewer did not show a mark for added/deleted differences. This is how it looks like in macOS:
Screenshot
We have tweaked the column width and order in sev…
Linux - Plastic SCM: We have tweaked the column width and order in several tables across the application. This change will only affect new users of the tool. Existing users of the tool have their view configuration stored in a preferences file. To reset your views to the new default values, close the application and delete the preferences file as follows:Here's how it looks:$ sudo rm /home/your_username/.plastic4/gtkgui.conf

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot
On the repositories lists (Repositories view, Clo…
Windows - Plastic, Gluon: On the repositories lists (Repositories view, Cloud view, and repository list dialog), the Refresh button has been moved to the right of the server entry field, to make it clearer that we are refreshing the view based on the content of that field. Same goes for Gluon's "Available Plastic SCM repositories" dialog.
Screenshot
On the Repository switcher dialog, and the Cloud…
Linux - Plastic, Gluon: On the Repository switcher dialog, and the Cloud view in Plastic, the Refresh button has been moved to the right of the server entry field, to make it clearer that we are refreshing the view based on the content of that field. What? A screenshot? Oh, go on then!
Screenshot

Screenshot
Suppose you've switched your workspace to a past…
All platforms - Plastic, Command line client: Suppose you've switched your workspace to a past changeset. You edit a file. Then you switch to the head. You wouldn't want your edit to be overwritten would you? And if you tried to checkin that file, you definitely wouldn't want that, because you'd be losing all the changes between that past changeset and the head. Good news - Plastic (and the CLI) handle all this perfectly. However, the error message we displayed if you tried to checkin in this situation wasn't very clear. More good news - we changed the text to make it clearer what the issue is, and more importantly, how you can resolve the issue. Incidentally, the solution in this case is to temporarily back out your local changes, update the file to the head version, and reapply your changes.Added the "similarity" column to the Pending Chan…
macOS, Linux - Plastic, Gluon: Added the "similarity" column to the Pending Changes view as in the Windows counterparts. For locally moved files, you can see the similarity percentage that determined that the file was indeed moved. Remember that you can change this threshold from the Pending Changes options.
Screenshot
We changed the default order of the columns in th…
Windows - Plastic: We changed the default order of the columns in the Shelvesets view to make the most relevant data more prominent. New users will see this change when the run Plastic for the first time. Existing users can reset all their view settings to the new default values by deleting the preferences file, located here:Here's what the new layout looks like:%LOCALAPPDATA%\plastic4\guivisualstate.xml

Screenshot
We improved diff rendering. Now the colors are st…
Plastic, Gluon - macOS: We improved diff rendering. Now the colors are stronger and easier to spot the differences. Check how it looks like in the clear theme, before and after:
Screenshot

Screenshot
Bug
All platforms - The checkin operation sometimes f…
All platforms - The checkin operation sometimes failed due to a duplicate key error while checking in the results of a merge. This happened if path permissions were applied, the merge included at least one moved+changed change and the user chose to keep the sources in a "loaded twice" conflict. Now it's fixed.Changes in release 2.21 altered how workspace nam…
Jenkins plugin: Changes in release 2.21 altered how workspace names are set. This was disruptive for some setups that rely on workspace names to build. It's fixed now.The directory conflict resolution was not working…
macOS, Linux - Plastic: The directory conflict resolution was not working on the merge-to operation. After resolved the conflict, the process all failed with this error: "There are X directory conflict(s) that must be resolved before processing the merge.". Now it's fixedIn some setups, depending on the GTK icon theme e…
Linux - Plastic, Gluon: In some setups, depending on the GTK icon theme enabled in the computer, Plastic GUIs could flood the user with the error message "Icon 'unknown' not present in theme". Apparently, this error is more common after an Operating System upgrade (for example, from one version of Ubuntu to the next one). The error is now protected - if an icon is not present in your GTK theme, Plastic and Gluon will display an empty one instead. Tip: you can force a GTK icon theme creating a file with name ".gtkrc-2.0" in your $HOME with the following content:Replace "Humanity" for one of the icon names you have installed at /usr/share/icons. For changes to take effect you must restart Plastic and Gluon after changing .gtkrc-2.0.gtk-icon-theme-name="Humanity"
The update operation was failing when the "Update…
macOS, Linux - Plastic, Gluon: The update operation was failing when the "Update and checkin operations set files as readonly" & "Update operation sets repository timestamp on files" options are both enabled. Now it's fixed.8.0.16.3310
New
To make the mac GUI Branch Explorer more usable w\…
macOS - Plastic: To make the mac GUI Branch Explorer more usable we have added a date filter and an "Only relevant" toggle button. Now you can more easily configure your Branch Explorer view to show only the information you want. The date filter works as follows: only changesets created after the date chosen will be displayed on the canvas. This can reduce clutter in the view, and aid performance. The "Only relevant " toggle button also reduces clutter in the view, by only showing initial and final changesets on branches. Here is a look at the new Branch Explorer:
Screenshot
If you have a Plastic SCM workspace in your files…
Create workspace: If you have a Plastic SCM workspace in your filesystem but it got removed from the list for some reason (the list is stored in the file plastic.workspaces, in your config directory) you can now safely add it back using the CLI or any Create Workspace GUI dialog. We changed the behavior to avoid overwriting the workspace name and repository.We finally have auto-refresh in Plastic Pending C…
Plastic, Gluon - macOS: We finally have auto-refresh in Plastic Pending Changes and Gluon Checkin views. Now, when the Plastic/Gluon window becomes the key window, the Pending Changes view is auto-refreshed if there are new changes in the workspace since the last time it was refreshed. This was one of the top usability missing features in macOS! :-)Conflict resolution is now incredibly faster!
macOS - Plastic: Conflict resolution is now incredibly faster! This is because our merge tool is now launched within the same process instead of spawning a new one, which makes it start up super fast. For automatic file conflicts, the resolution is practically immediate. Before it used to be as slow as 4 seconds per file.
Screenshot

Screenshot
We have updated the column ordering for the Works…
Windows - Plastic: We have updated the column ordering for the Workspace Explorer, Pending changes, Changesets and Labels views to make the more logical, and present the more useful information first. They are also consistent across all 3 platforms now. We also updated the default column widths, so, out of the box, users should no longer need to resize columns to see the full content. Pending Changes:
Screenshot

Screenshot

Screenshot

Screenshot
The Visual Studio integration was only compatible…
Visual Studio Integration - Windows: The Visual Studio integration was only compatible with some Visual Studio 2019 versions (v16.0 - Preview). Now, we extended the compatibility to support all Visual Studio 2019 versions. As a side effect, the code base is not compatible with Visual Studio 2010 anymore. If you need support for Visual Studio 2010, please contact support@codicesoftware.com and we'll help you get it going.Conflict resolution is now incredibly faster!
Linux - Plastic: Conflict resolution is now incredibly faster! This is because our merge tool is now launched within the same process instead of spawning a new one, which makes it start up super fast. For automatic file conflicts, the resolution is immediate. Before this improvement, the conflict resolution speed is normal but now it flies!
Screenshot

Screenshot
We added a small panel under the Workspace Window\…
macOS - Plastic: We added a small panel under the Workspace Window toolbar to show you the branch/changeset /label (and its repository) of the current workspace, the current workspace name and path and the current user's name. This info previously appeared next to the "Switch workspace" button and was hard to see sometimes. Enjoy!Added a new option in the pending changes/checkin…
Plastic, Gluon - macOS: Added a new option in the pending changes/checkin view, to enable or disable the auto-refresh feature.concerned about wasting mouse clicks? We've got y…
Windows - Plastic: concerned about wasting mouse clicks? We've got your back. Now, when you push a branch to a remote repository, and everything goes fine, we don't pop up an additional dialog to tell you this. Of course, we still let you know if anything goes wrong during the replication. Say goodbye to this:
Screenshot
We have improved the default column widths for th…
Linux - Gluon: We have improved the default column widths for the "Explore workspace" view, and made the "Details" pane of the "Checkin" view a bit smaller, so it doesn't hide so much of the changelists table. Existing users can reset their view configuration, and enjoy all our recent changes to column order and widths, by deleting the following configuration file:Here's how the GUI looks now:/home/your_username/.plastic4/gluon.conf

Screenshot

Screenshot
Bug
there was an unexpected exception when committing…
Linux, macOS - Plastic: there was an unexpected exception when committing the results of a merge-to operation if the source changes already existed in the destination and there was nothing to do. This case is now handled nicely.Jenkins mergebot plugin (the plugin installed on…
DevOps: Jenkins mergebot plugin (the plugin installed on jenkins server side): The jenkins job using mergebot could fail with "Workspace already exist" error when the Jenkins server is a Linux machine but the job runs in a Windows agent. This could happen if the configured Windows agent "Root directory" has a different drive letter case than the registered existing plastic workspace paths. Now it's fixed.There were issues with shared libraries when two…
Jenkins Plugin: There were issues with shared libraries when two or more projects were consuming a single shared library. They were related to the workspace names assigned to the shared library workspace for each project, which turned out to be always the same. We fixed that to make every shared library workspace have its own self-generated workspace name.When a check-in operation fails against the cloud…
When a check-in operation fails against the cloud due to a client network issue, if the same client is used to perform a new check-in under some corner circumstances a file content could be wrongly updated to the cloud. Although the issue is pretty rare and hard to reproduce, we strongly recommend updating your clients to this version.An exception was thrown when you try to open a fi…
macOS - Plastic: An exception was thrown when you try to open a file or directory with whitespaces in the path using the 'Open > Reveal in Finder' context menu option. Now it is fixed.The "merge selected files" action in the Merge vi…
macOS, Linux: The "merge selected files" action in the Merge view failed with an error ("The path{file_path}Fixed window rendering error. The various selecti…
macOs - Mergetool: Fixed window rendering error. The various selection colours and strikeouts would disappear and reappear when scrolling the merge window, so it looked like the merge was wrong, but in reality it was just the UI rendering that was wrong.8.0.16.3282
New
We have tweaked a little bit difference navigatio…
Text differences in all GUIs: We have tweaked a little bit difference navigation. Previously, if you restored or deleted the current selected difference, the new current one was the next difference, but the diff didn't jump to it. This way, if you clicked on "next", the diff jumped to the next difference of the new one, making you feel you skipped one. Is a little bit complicated to explain, but we hope that differences navigation feels more natural now that these skips are prevented.The refresh of the 'Explore workspace' view is no…
All platforms - Gluon: The refresh of the 'Explore workspace' view is now instant even with big repositories. Using a repository of almost 700.000 items the refresh time is:- Before: 9200 ms
- After: 150 ms
We modified the installer to be downloaded when c…
Windows installers: We modified the installer to be downloaded when clicking in the "Download" button when "A new version available" message is notified:
Screenshot
If you initially installed Plastic using the "Cli…
Windows installers: If you initially installed Plastic using the "Client + Server" installer, and then you upgrade to a new version using the "Client only" installer, a warning message will be shown telling that the server component will be removed (although databases, logs and config will be kept). Before this version, the installer didn't want about this fact.
Screenshot
Calculating the pending changes in the GUI is rem…
macOS - Plastic, Gluon: Calculating the pending changes in the GUI is remarkably faster now! The Pending Changes view is now capable of detecting changes by monitoring the filesystem using the OS events API (FSEvents) instead of simply walking the workspace directory structure. This way the client only walks down the workspace directory tree the first time (on GUI this means the first time the user refreshes the Pending Changes view). After that, only directories with changes under them will be checked. Just to share some numbers: calculating the pending changes in a workspace with 600k files went down from 180s to 5.75s. This is a first step to implement the auto-refresh you all need in macOS. :-)Until now, you could try to annotate binary files…
All platforms - Plastic: Until now, you could try to annotate binary files - it wasn't working well, was it? The annotate is meant for text files! Now, we detect if the file can be annotated, and if not, we display an alert. Worry not! In the (unlikely) scenario of we detecting as a binary what is really a text file, we tell you in that very same alert how to force the type on an item.Bug
Fixed several issues related to the pending chang…
macOS - Plastic, Gluon: Fixed several issues related to the pending changes view/checkin view:- The UI hung when displaying some files, especially those that had very long lines or were big. Now it's fixed.
- The syntax highlight was slow with long lines. Now we skip coloring long lines.
- The UI thread was locked displaying big files (>~2MB). Improved the performance by a 50%.
- When displaying added or private files, the width of the line numbers view was not correctly calculated. Now it's fixed.
- The progress spinner and text saying "Calculating diffs..." was overlapped. Now it's fixed.
8.0.16.3274
New
Improved checkin changes view performance when th…
Windows - Gluon Performance: Improved checkin changes view performance when there are a large number of items. For a workspace with 220k items, the gui got stuck around 20s after refreshing the view before showing the list of changes. Now it's much better, the time has reduced to 4s. More than 5 times faster!!As part of an ongoing series of gradual usability…
Plastic GUI (all platforms): As part of an ongoing series of gradual usability improvements in the Plastic GUI we made a small change to the order of the items in the sidebar. "Branch Explorer" now appears before "Changesets" and "Branches" as it is generally the more commonly used item.
Screenshot
improved the progress for the partial checkin ope…
Command line client and Plastic GUI: improved the progress for the partial checkin operation adding the operation status (starting, uploading, confirming, restoring file access, finished). You can see it in the following image:
Screenshot
The performance of the Pending Changes view is no…
Plastic GUI and Gluon: The performance of the Pending Changes view is now 5 times faster when searching for tons of private items in the workspace. Let us give you a real example: we used the 3 copies of the 'gcc', 'mono', 'linux' and 'node' repos (that can be found in GitHub) - 632,555 files and 42,096 Folders, 4.76 GB. And then opened the Pending Changes view in Plastic GUI or Gluon.- Before: 40 s
- Now: 8 s
- Before: 16 s
- Now: 8 s
Improved checkin changes view key handling in the…
Windows - Gluon Performance: Improved checkin changes view key handling in the tree when there are a large number of items. Before you couldn't navigate with keys because it was terribly slow. Now it's much better!sometimes we say hello, and sometimes we say good…
Windows - Plastic SCM: sometimes we say hello, and sometimes we say goodbye. The "Change statistics" view is gone, and with it, the "Review & Stats" section. You can find now the Code Review below Sync Repositories (for regular users), or below Shelves (for Cloud Edition users).
Screenshot
We made the Pending Changes view a bit prettier b…
Mac Plastic: We made the Pending Changes view a bit prettier by moving the "Checkin comments" drop-down list to the same line as the other buttons.
Bug
a null exception was thrown when you type a filte…
Plastic GUI for Linux: a null exception was thrown when you type a filter during the load of the browse repository view. Now it is fixed.Corrected the window title when performing an ima…
Plastic GUI: Corrected the window title when performing an image diff from the History view using the built-in image diff tool. It used to show a temporary file path, now it shows the path of the item in the workspace.we fixed an issue where "cm find" wouldn't work i…
Command line client: we fixed an issue where "cm find" wouldn't work if you had extended characters in your object names. We were using the wrong encoder in the query parser. You can now do this:Reminder: if you're using the cm shell, then you can pass in the correct code page for the character set you are using like this:c:\mcga>cm find changeset where branch='©®™'27 3 /©®™ 27/05/2019 22:39:39 gwynt testTotal: 1
c:\mcga>cm shellfind changeset where branch='/©®™'Total: 0CommandResult 0exitc:\mcga>cm shell --encoding=windows-1250find changeset where branch='/©®™'27 3 /©®™ 27/05/2019 22:39:39 gwynt testTotal: 1CommandResult 0
The progress bar for the "switch", "update" and "…
Command line client: The progress bar for the "switch", "update" and "setselector" commands was accidentally disabled in build 8.0.16.3140. We have reinstated it to its former glory.a null exception was thrown when you click to the…
Plastic GUI: a null exception was thrown when you click to the cancel button for the checkin operation. Now it is fixed.8.0.16.3257
New
When creating a new branch, the "Switch workspace…
Plastic - all platforms: When creating a new branch, the "Switch workspace to this branch" checkbox is now checked by default.We greatly improved the checkin progress
Plastic GUI: We greatly improved the checkin progress:- Now the GUIs only show the details bar with slow operations. There was a small bug that made them appear when they shouldn't.
- Also, now the GUI shows the correct size unit when the upload operation for a 4MB block finishes.
- The GUI displays the checkin status when there is no info about the current file in the header.

Screenshot
We improved the update progress
Plastic GUI: We improved the update progress:- Now the GUIs only show the details message when the total files to update is calculated. There was a small bug that made them appear when they shouldn't.
- Also, the details message is not shown when there are no files to update.
Bug
fixed an "unexpected error" that occurred if you…
macOS - plastic: fixed an "unexpected error" that occurred if you double clicked on a group header in the changeset diff view.The progress shown when pushing a branch to an em…
Cloud Edition: The progress shown when pushing a branch to an empty cloud repository was incorrect on some stages of the push operation. Maybe you were seeing progress values > 100%, or abrupt progress decreasing inside the same stage. Now it's fixed. Remark: This bug also affects on-premise plastic servers configured with a database backend different than Plastic Jet backend.while configuring Gluon, the workspace path could…
Linux - Gluon: while configuring Gluon, the workspace path could not be changed exploring the filesystem through the "Choose..." button. Now that's fixed.Performance improvement: Pulling a branch from Cl…
Cloud Edition: Performance improvement: Pulling a branch from Cloud Server to a local on-premise server were taking more than 2 minutes on fetching items to be pulled. The operation progress seemed to be hung on this stage (altought it wasn't). This could happen when the branch to be pulled contains several thousands of items on its tree. Now it's fixed, and these extra 2 minutes were removed. Remark: This improvement also affects on-premise plastic servers configured with a database backend different than Plastic Jet backend.8.0.16.3250
New
MergeBot engine: Now the merge the mergebot API u…
DevOps: MergeBot engine: Now the merge the mergebot API uses won't ignore whitespaces when resolving conflicts automatically. More info about DevOps Mergebots can be found hereyou can now use all the wonderful functionality o…
Command line client: you can now use all the wonderful functionality of the new "undo" command on your Gluon workspaces, by calling "cm partial undo".improved the checkin progress to show the correct…
Plastic GUI: improved the checkin progress to show the correct size units when the uploading operation is finished.Improved the "add directory tree to source contro…
macOS - Plastic Performance: Improved the "add directory tree to source control" operation from the workspace explorer view. When adding a directory with a large number of items, the gui got stuck for several seconds before showing any progress. For a workspace with 220k items, nearly 40s without a response :( Now it's much better!The data transfer is now 3 times faster when uplo…
Cloud Edition: The data transfer is now 3 times faster when uploading or downloading tons of small files to Plastic Cloud. Let us give you a real example: we used the 'gcc' repo (https://github.com/gcc-mirror/gcc): 96423 files - 517 MB. And then we ran a checkin to Cloud from Windows using a standard connection (100Mbps download - 60Mbps upload):- Before: Upload time - 478 s (total checkin time - 564 s)
- Now: Upload time - 143 s (total checkin time - 223 s)
Improved pending changes view performance when th…
macOS - Plastic Performance: Improved pending changes view performance when there are a large number of items. Loading, sorting and filtering times have been improved significantly. For a workspace with 220k items, the pending changes refresh time has improved from 58447 ms to 3469 ms. Nearly 17 times faster!!Bug
Items search box: The search box lost the focus w\…
macOS - Plastic, Gluon: Items search box: The search box lost the focus when the user stopped writing (e.g. to let the results list be updated). Now it's fixed. We also improved the key navigation in the file search of the Workspace Explorer view. Now you can navigate the search results using the following keys: Up, Down, Home, End, PgUp, PgDn).The Plastic SCM Cloud Edition local server threw\…
Plastic SCM Server, Linux/macOS: The Plastic SCM Cloud Edition local server threw an exception in the shutdown process on Linux or macOS. This prevented some of the shutdown routines from running, and that in turn could prevent some resources from being freed. It's now fixed.When the diff window had unsaved changes and it w\…
Windows - Plastic: When the diff window had unsaved changes and it was closed, it failed with a "File not found" exception. Now it's fixed.The diff window did not update the diffs when edi…
Windows - Plastic: The diff window did not update the diffs when editing the right content. Now it's fixed.the progress bar for the checkin operation was no…
Windows GUI: the progress bar for the checkin operation was not completely filled. Fixed.the help panel in the Merge View prompted an erro…
GTK Plastic: the help panel in the Merge View prompted an error message when you clicked the "OK" button to close it, making it impossible to dismiss. Fixed.When focusing main window, the pending changes vi…
Linux - Plastic, Gluon: When focusing main window, the pending changes view was auto-refreshed while a checkin operation was performed. Now, it's fixed.When pressing 'End' key in the pending changes vi…
Windows - Gluon: When pressing 'End' key in the pending changes view, the files tree scrolled more than allowed, leaving half of the control blank. Now it's fixed.after some time stalking the NSInternalInconsiste…
macOS - Plastic: after some time stalking the NSInternalInconsistencyException that our customers kept getting in the mac client when trying to open a diff window, we finally caught it and fixed it. Sorry for the inconvenience.8.0.16.3231
New
the 'cm undo' command has arrived! It unifies the…
Command line client: the 'cm undo' command has arrived! It unifies the three (now deprecated) commands we had for undoing changes in a workspace: 'undocheckout', 'undochange' and 'uncounchanged'. One Command to rule them all, One Command to find them, One Command to bring them all and in the darkness undo them The best thing is, the new undo it is smart enough to undo a change whether it be a local change (changed, locally moved, locally deleted) or a controlled change (added, checkout, moved, deleted). For more in-depth help and examples refer to the documentation ('cm help undo'), but let me quickly highlight how it replaces the old commands: undocheckout:uncounchanged:$ cm add file.txt$ cm undo file.txt$ cm co file.txt$ cm undo file.txt$ cm mv file.txt file-moved.txt$ cm undo file-moved.txt$ cm rm file.txt$ cm undo file.txt
undochange:$ cm co file1.txt file2.txt file3.txt$ echo content >> file1.txt$ cm undo --unchanged *
The cm undo command also has flags to take into account only checked-out items (--checkout), or certain kinds of changes (--changed, --moved, --deleted and --added). It is automation-friendly too: with the --machinereadable flag and the format options, the output is easy to parse. Limitations: the cm undo can undo deletions, but they are not detected automatically. If you want to undo a deletion, you have to either undo all of the changes in its directory recursively, or specify the full path of the deleted item. This will work:$ echo content >> file.txt$ cm undo file.txt
This won't:$ rm dir/file.txt$ cm undo dir -r$ rm dir/file.txt$ cm undo dir/file.txt
$ rm dir/file.txt$ cm undo dir/*
"cm remove" has a brand new subcommand, "private"…
Command line client: "cm remove" has a brand new subcommand, "private", for deleting private files in your workspace. Note: files are permanently deleted and are not recoverable. Use with caution! It is recommended that you perform a dry run of any delete operation (using the "--dry-run" option) before permanently deleting files. The command has a "--verbose" option if you want to see all the paths of deleted items. You can recursively delete private files and directories within controlled directories by using the "-r" option. Enjoy! Here are some examples of how to use the command:dir_c-----file_p-----file_c-----dir_p----------file2_p-----dir2_c-----------file3_pTo remove private file "file_p":cm rm private dir_c\file_pTo remove private directory "dir_p":cm rm private dir_c\dir_pTo remove all private and directories in tree:cm rm private -r dir_c
We changed the position of the link "... branches…
WebAdmin: We changed the position of the link "... branches processed today" in the DevOps dashboard. It's now aligned right and underlined to make it easier to notice!We updated the README description to let you know\…
IntelliJ IDEA plugin: We updated the README description to let you know from which URL you can download the old version, compatible with IntelliJ IDEA 15.x or older.Bug
The credentials dialog appeared every time you sw\…
Windows - Visual Studio Package - Cloud Edition: The credentials dialog appeared every time you switch from using any Plastic GUI to Visual Studio plugin in Cloud Edition installations. Now it's fixed.8.0.16.3221
New
Using Cloud Edition? Upgrade!
Using Cloud Edition? Upgrade! You need to upgrade to this release to unlock the new "Activity reports". You will receive an email like this every week:
Screenshot

Screenshot

Screenshot
we improved the error message you get when you pa…
Command line interface: we improved the error message you get when you pass a shelveset specification to command, like setowner or showacl, that doesn't accept shelveset specs.the error message when trying to run acl operatio…
Command line client: the error message when trying to run acl operations on workspaces wasn't very nice. We made it more user friendly.we corrected some faulty indentation in the help…
Command line client: we corrected some faulty indentation in the help text of the "showfindobjects" command.We improved the form layout of the "New/Edit merg…
WebAdmin: We improved the form layout of the "New/Edit mergebot" page to make a better use of space.we improved the phrasing of the help for commands…
Command line client: we improved the phrasing of the help for commands that take piped input.Bug
After changing the color configuration in mergeto…
Windows - Mergetool: After changing the color configuration in mergetool, selecting/unselecting a manual conflict contributor caused the application to crash. Now it's fixed.when using JIRA Cloud, now you can't login with a…
JIRA extension: when using JIRA Cloud, now you can't login with a password, as that authentication method is deprecated. You need to use your email address and a personal token generated here . This caused the assignee field of the tasks query to be your email instead of your name, returning zero tasks. That is fixed now. If you have to login using the email, the extension will solve your name before querying for tasks.8.0.16.3219
New
we improved the error message you get when you pa…
Command line interface: we improved the error message you get when you pass a shelveset specification to command, like setowner or showacl, that doesn't accept shelveset specs.the error message when trying to run acl operatio…
Command line client: the error message when trying to run acl operations on workspaces wasn't very nice. We made it more user friendly.we corrected some faulty indentation in the help…
Command line client: we corrected some faulty indentation in the help text of the "showfindobjects" command.We improved the form layout of the "New/Edit merg…
WebAdmin: We improved the form layout of the "New/Edit mergebot" page to make a better use of space.we improved the phrasing of the help for commands…
Command line client: we improved the phrasing of the help for commands that take piped input.Bug
After changing the color configuration in mergeto…
Windows - Mergetool: After changing the color configuration in mergetool, selecting/unselecting a manual conflict contributor caused the application to crash. Now it's fixed.when using JIRA Cloud, now you can't login with a…
JIRA extension: when using JIRA Cloud, now you can't login with a password, as that authentication method is deprecated. You need to use your email address and a personal token generated here . This caused the assignee field of the tasks query to be your email instead of your name, returning zero tasks. That is fixed now. If you have to login using the email, the extension will solve your name before querying for tasks.8.0.16.3209
New
we made a few minor improvements to the inline he…
Command line interface: we made a few minor improvements to the inline help for the "branch" command. Remember, you can get help for any command by running "cm help" followed by the command name.out-of-date items are now easier to identify! The…
Gluon: out-of-date items are now easier to identify! They now have a warning overlay icon to prevent you from modifying them before an update. Check it out (pun intended)!
Screenshot
In the Windows branch explorer, the "Show exclude…
Plastic - Windows: In the Windows branch explorer, the "Show excluded replication sources" checkbox was not persisted when you close and re-open the GUI. Now it's persisted.we made some minor improvements to the help for t…
Command line interface: we made some minor improvements to the help for the diff command. Hopefully, it should be a bit clearer what the 'revid', 'baserevid' and 'parentrevid' fields are when you get the results of a diff.We've updated our plugin and it supports IntelliJ…
IDEA Plugin: We've updated our plugin and it supports IntelliJ IDEA 2019.x now! On the other hand, we dropped support for IntelliJ IDEA 15 and older. Please have that in mind when upgrading the Plastic SCM plugin.
Great news, people! Our IntelliJ IDEA plugin can…
IDEA Plugin: Great news, people! Our IntelliJ IDEA plugin can be installed as well in any other JetBrains IDE! Rejoice!
Screenshot
we updated the help for commands which take an "o…
Command line client: we updated the help for commands which take an "object_spec" argument to explicitly say which objects are valid for the command. Affected commands are "cm attribute", "cm acl", "cm showacl", "cm setowner" and "cm showowner".did you know you can pipe directory listings to t…
Command line client: did you know you can pipe directory listings to the "add" command like this:Cool, huh? This also works for checkin, checkout, getstatus, remove, undocheckout, uncounchanged and undochange. We updated the help with some more details about this.>dir /S /B *.cs | cm add -The selected items are about to be added. Please wait ...Item c:\mcga\file.cs was correctly addedItem c:\mcga\dir\anotherfile.cs was correctly added
Bug
When diffing a branch, changeset or label, the di…
Windows - Visual Studio Package: When diffing a branch, changeset or label, the diff window did not answered properly to some command keys (backspace, control, arrow keys, etc ...). The problem was that we were displaying the diff window as a non-modal window. The window was not getting messages, events, accelerators, etc... We fixed it displaying the diff window as a modal window.8.0.16.3200
New
back by popular demand, "cm status" has regained…
Command line client: back by popular demand, "cm status" has regained the "--all" option. "--all" is a handy shorthand for "--controlledchanged --changed --localdeleted --localmoved --private" when using the "status" command. We removed "--all" in build 8.0.16.2999, but, to be honest, we probably shouldn't have, as it is actually pretty useful. Sorry about that.Logging subsystem: The [code]loader.log.conf[/cod…
Server: Logging subsystem: Theloader.log.conf%property{NodeName}REMARK: To use this property in the file name value, the file type has to be set to<file type="log4net.Util.PatternString" value="plastic.errors.log.%property{NodeName}.txt" />
log4net.Util.PatternStringwe've made it easy to run queries against all you…
Command line client: we've made it easy to run queries against all your repositories. Just use '*' as the repository name parameter:In fact. you can use any wildcard expression:c:\mcga>cm find branch on repositories '*'4 03/05/2019 15:46:50 /main all default T4 03/05/2019 16:00:39 /main gwynt testrepo T13 03/05/2019 16:02:17 /bugfix gwynt testrepo T4 03/05/2019 16:00:48 /main gwynt anothertestrepo T4 03/05/2019 16:01:00 /main gwynt productionrepo T13 03/05/2019 16:02:31 /newbranch gwynt productionrepo T
c:\mcga>cm find branch on repositories '*test*'4 03/05/2019 16:00:39 /main gwynt testrepo T13 03/05/2019 16:02:17 /bugfix gwynt testrepo T4 03/05/2019 16:00:48 /main gwynt anothertestrepo TTotal: 3c:\mcga>cm find branch on repositories '*production*'4 03/05/2019 16:01:00 /main gwynt productionrepo T13 03/05/2019 16:02:31 /newbranch gwynt productionrepo TTotal: 2
Bug
When you use the items search to find a private i…
Plastic, Gluon - all platforms: When you use the items search to find a private item that is on disk, but is not present in the items view, because the items view is not refreshed, the item was not focused properly in the items view. Now it's fixed.8.0.16.3189
New
GitSync. Applies both to the command line (all pl…
GitSync. Applies both to the command line (all platforms) and Windows GUI. Suppose you have a repo "quake" synced tohttps://github.com/psantosl/quakefromplastic.githttps://github.com/psantosl/newquaketest.gitError: The settings you've introduced don't match with the stored ones for branch/repo quake. Stored are:cm sync quake\@localhost:6060 git https://github.com/psantosl/newquaketest.git --user=psantosl --pwd=my-personal-token
https://github.com/psantosl/quakefromplastic.gitC:\Users\pablo\AppData\Local\plastic4\sync\git\fbcb3273-0371-4821-92ac-01e380200c5awe have improved the formatting of the ls command…
Command line client: we have improved the formatting of the ls command output so that the columns are nicely aligned even when you have a mixture of long and short branch names. Before:After:c:\mcga>cm ls -r0 30/04/2019 11:15 dir br:/main#CO CO .0 30/04/2019 11:18 dir br:/branchWithVeryLongName#1 A6 30/04/2019 11:21 txt br:/bugfix#2 bug.cpp7 30/04/2019 11:19 txt Private file.cs4 30/04/2019 11:18 txt br:/branchWithVeryLongName#1 a.txt0 30/04/2019 11:18 dir br:/branchWithVeryLongName#1 AA
c:\mcga>cm ls -r0 30/04/2019 11:15 dir br:/main#CO CO .0 30/04/2019 11:18 dir br:/branchWithVeryLongName#1 A6 30/04/2019 11:21 txt br:/bugfix#2 bug.cpp7 30/04/2019 11:19 txt Private file.cs4 30/04/2019 11:18 txt br:/branchWithVeryLongName#1 a.txt0 30/04/2019 11:18 dir br:/branchWithVeryLongName#1 AA
improved progress messages for one of the stages…
Plastic SCM GUI and Command Line Client: improved progress messages for one of the stages of the merge. When performing a merge with many added files on source, processing the copied files and directories can take a while (depending on the number of files and the performance of your computer), giving the impression that the tool hanged. Now, Plastic gives more granular progress messages, so you know what's going on under the hood.Refactor part of the "find changes" code. Yes, no…
Refactor part of the "find changes" code. Yes, no new features, just code clean up. But, since if you are reading this you are probably a developer, we're sure you appreciate we spend time in refactors too ;-)Bug
we had a couple of bugs in the plastic.php file w\…
Mantis integration: we had a couple of bugs in the plastic.php file we distribute alongside the Plastic SCM client to integrate it with the Mantis issue tracker. Now it is fixed. If your Mantis integration works OK, you don't need to do anything unless you update your server's PHP version to 7 or greater. In that case, you will have to replace the plastic.php file in your Mantis install directory with the new one. For further info regarding Plastic SCM and Mantis extension configuration, please visit the following documentation pageVisual Studio 2019 crashed when displaying some P…
Windows - Visual Studio Package: Visual Studio 2019 crashed when displaying some Plastic SCM views. Now it's fixed.Uploading data to the cloud (through a checkin or…
Linux and macOS: Uploading data to the cloud (through a checkin or push operation) with network issues make the operation fail due to the "Cannot access a disposed object" error. Now, the error is handled and the upload retried like it is done with the rest of network issues.8.0.16.3177
New
we have renamed the "remove" subcommand of "cm ch…
Command line client: we have renamed the "remove" subcommand of "cm changeset" to "delete" to make the naming consistent with the other commands.Avoid weird "Invalid value for registry" errors w\…
Windows GUI and Gluon: Avoid weird "Invalid value for registry" errors when opening an URL from plastic or gluon. Some of them were causing the tool to crash. In this case, Plastic or Gluon will just log the error with the requested URL. REMARK: The "Invalid value for registry" error is not caused in any case by Plastic or Gluon. Contact Microsoft support if you are experiencing such errors when opening URLs from outside your web browser. It will fail not only from Plastic or Gluon, but also from other tools, or even shortcuts to web pages.Bug
some fields of the 'cm status' XML output were ob…
Command line client: some fields of the 'cm status' XML output were obfuscated. Instead of their actual name ("MovedPath", "Size", "LastModified" and so on) all you could see was "a", "b", "c"... Now it is fixed. Additionally, there are "printable" fields now. They contain redundant information, but in a human-readable format.- "Type" contains a couple of characters to indicate the type of the change, but "TypeVerbose" uses the full word.
- "PrintableMovedPath" shows both "Path" and "OldPath" for moved files and directories, separated by an arrow.
- "Size" is the size of the file in bytes, but "PrintableSize" represents the size in the best suitable unit measure.
- "LastModified" field is a parseable DateTime, but "PrintableLastModified" is a human-friendly string of the type "9 hours ago".
<Change> <Type>MV</Type> <TypeVerbose>Moved</TypeVerbose> <Path>README-moved.md</Path> <OldPath>README.md</OldPath> <PrintableMovedPath>README.md -> README-moved.md</PrintableMovedPath> (...) <Size>952</Size> <PrintableSize>952 bytes</PrintableSize> (...) <LastModified>2019-04-25T12:13:18.7890246+02:00</LastModified> <PrintableLastModified>1 hours ago</PrintableLastModified> (...)</Change>
multi-instance and heavy load. There was a bug th…
Server: multi-instance and heavy load. There was a bug that was reporting that all threads were busy (more than 10 seconds attending a request) when in reality only a few threads were.8.0.16.3170
New
Great improvements in the Cloud Edition onboardin…
GUIs and Web: Great improvements in the Cloud Edition onboarding process. We changed the first steps in Cloud Edition, so joining to an organization and creating a new one is now much easier. Here is a summary of the improvements:- All GUIs: New signup/login dialogs to help new users getting aboard.
- All GUIs: Links with relevant information during evaluation.
- The old cloud.plasticscm.com has been replaced by https://www.plasticscm.com/dashboard/cloud. The new dashboard has been redesigned too.
- Plastic Cloud Edition subscription information has been improved.
- New signup/login dialogs

Screenshot

Screenshot
- Links with relevant information

Screenshot
- A message saying how many days are left to evaluate Cloud Edition.
- If you are the owner of the subscription, then a button will open the web-dashboard directly. This is the option to check your usage, invite new team mates, etc.
- Finally, a button helps you contact support in case you have any questions or found a problem.
- New Cloud dashboard

- Improved subscription information

Screenshot

the 'cm clone' command can now clone a repository…
Command line client: the 'cm clone' command can now clone a repository to a replication package. This is useful for moving data across servers when there is no direct connection between them. To clone a repository to a replication package, do the following:You can then import that package using the pull command:> cm clone myRep@localhost:8084 --package=myRep.plasticpkg
> cm mkrep myNewRep@mordor.home:9095> cm pull --package=myRep.plasticpkg myNewRep@mordor.home:9095
PowerShell receives autocompletion support! It on…
Command line client: PowerShell receives autocompletion support! It only completes command names for now, but expect future improvements. To install it, just run (from your Windows PowerShell):Remember that command autocompletion also works in Bash. Do you use another shell and you want to have cm autocompletion support? Let us know!> cm autocomplete installC:\Users\sergi\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 modified.You need to restart PowerShell for changes to take effect.
GitSync won't fail anymore if for whatever reason…
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 an old issue.Windows will be maximized first time you open the…
Windows, linux - Plastic, Gluon: Windows will be maximized first time you open them. After that, their size, status and position will be restored when you close and reopen them. Please note that this doesn't apply to macOS since it's not usual to work with maximized windows in that OS.We added a new context menu action in the diff wi…
Windows - Gluon: We added a new context menu action in the diff window called "External diff". It's available when you right click a file in the diff window, i.e. the one that appears when you run a diff action. This is really useful when you have a specific diff tool that is best suited to diff a particular kind of files.Bug
When using parameters in view filters,
Windows - Plastic: When using parameters in view filters, the parameter was not working ok for the first column. Now it's fixed. You can use "columnName:value".A "The item {id-value}
cannot be found on tree" e…
Linux/macOS GUI: A "The item {id-value}{id-value}The '--keepsource' option in the 'cm merge' comma…
CLI: The '--keepsource' option in the 'cm merge' command didn’t work for files that were modified on source and locally changed in the workspace at the same time, if they had to be checked out exclusively (locked). Now it's fixed.The window title in the Windows task bar was not…
Windows - Gluon: The window title in the Windows task bar was not visible. Now it's fixed.If the Plastic client didn't have access to a giv…
Linux/macOS, all GUIs and CLI: If the Plastic client didn't have access to a given directory (e.g. the current user doesn't have read/execute permissions), no error appeared in the pending changes view. It's now displayed including the failing path.The update of an out-of-date file failed and disp…
Gluon: The update of an out-of-date file failed and displayed the error message "Could not find a part of the path{filepath}The second column title in the repository list wa…
Linux - Plastic: The second column title in the repository list was wrong. It's not "Repository"; it's "Server". Now it's fixed.Windows GUI: Fixed a bug that caused Plastic GUI…
Cloud edition: Windows GUI: Fixed a bug that caused Plastic GUI to be immediately closed after login with your cloud edition account and creating a workspace on a new install. This issue just happened in release 8.0.16.3165, which was published just for a few hours and then unpublished due to the described failure.8.0.16.3148
New
When updating a single item, the cm update comman…
Command line client: When updating a single item, the cm update command now forces the --cloaked flag by default. If you specify the item you want to update, then you know for sure what you are doing, so having to add the --cloaked flag is just a hassle. This means that, for the following directory structure:Then:src (controlled)|- file1.txt (controlled / cloaked)\- file2.txt (controlled)
> cm update . (Won't update file1.txt)> cm update src/* (Won't update file1.txt)> cm update src/file1.txt (Will update file1.txt)> cm update src/* --cloaked (Will update file1.txt)
Command line. The progress of the cm push/pull/cl…
Command line. The progress of the cm push/pull/clone commands has been improved so that it shows the number of objects being fetched, like the GUI does, which gives a much better idea of what is going on. In the example below, you see the tree count together with "fetching trees".>cm push main@codice@localhost:6060 --package=codice.pkgEnter credentials to connect to server [localhost:6060][#.............................................................]/ Fetching trees (35735)Fetching metadata [###...........................]Pushing metadata [..............................]Introducing data [..............................]
Bug
We have fixed an error in the display of progress…
Plastic GUI Windows: We have fixed an error in the display of progress messages during replication. A bug was introduced in release 8.0.16.3114 which caused the tool to display some internal strings rather than the nice display strings you are used to.8.0.16.3140
New
Performance: We implemented a new log4net appende…
Server: Performance: We implemented a new log4net appender in the server that performs a 38% better (overall server response time) when the server is stressed with requests. New installations of Plastic will already take advantage of these improvements. Regarding existent installations, it's a matter of changing each log4net appender inloader.log.conf1- change the appender name as follows, from:<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <file value="plastic.errors.log.txt" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=".yyyyMMdd" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %property{UserId} %property{ClientMachine} %-5level %logger - %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"><levelMin value="ERROR" /><levelMax value="FATAL" /></filter></appender>
toappender name="ErrorAppender"
2- Create a new appender on top of previous one as follows:appender name="ErrorInternalAppender"
3- Do the same with other appenders. Full example can be found on the following snippet<appender name="ErrorAppender" type="Codice.LogWrapper.BackgroundForwardingAppender, logwrapper"> <appender-ref ref="ErrorInternalAppender" /></appender>
We moved the selection of the client application…
Windows Cloud Edition installer: We moved the selection of the client application to start to the last page of the installation wizard. Now, the last wizard page of the cloud edition installer looks like the following screenshot:
Screenshot
Bug
The Diff control showed the message 'Value cannot…
Plastic GUI: The Diff control showed the message 'Value cannot be null. Parameter name: key' when it loaded text files > 2MB. Fixed!The rejected references (if they existed) were no…
GitSync: The rejected references (if they existed) were not always properly printed after a sync operation This could happen pushing big packages (>500 MB) with hundreds of references. Instead of printing the failed references, the sync command just failed with the error 'Stream terminated early'. Remarks: Pushing a Plastic repo to GitHub through the 'cm sync' command will fail if the repo contains some file bigger than 100 MB. The error returned by GitHub is 'pre-receive hook declined'. This happens due to the GitHub disk quota policies: https://help.github.com/en/articles/what-is-my-disk-quotaPermissions were not properly updated when the gr…
Server: Permissions were not properly updated when the group members of the authentication provider were changed. The server should automatically update this information every 5 minutes, but it was only done after a server restart. Fixed.we noticed that commands that update the workspac…
Command line client: we noticed that commands that update the workspace would tell you "Searching for changed items in the workspace..." lots of times when there were changes in the workspace. We fixed that so it only prints once.8.0.16.3125
New
We modified the "cm objectspec" command so that i…
Command line client: We modified the "cm objectspec" command so that it prints out lots of useful help on defining object specifications, without you having to specify the "help" option.the obsolete findchanged, findcheckouts and findp…
Command line client: the obsolete findchanged, findcheckouts and findprivate commands have been hidden, although they still work if invoked. Then why bother you with this? Just to tell you that if you use them in any automation script, you should migrate to cm status:The reason to hide these commands is because they offer a redundant functionality. Moreover, the status command is way more powerful than findchanged, findcheckouts, and findprivate. Just check its documentation to find out the possibilities. In any case we will warn you when these commands cease to exist.1) findchanged $ cm findchanged /path/to/search -r $ cm status path/to/search --changed --compact --short2) findcheckouts $ cm findcheckouts path/to/search -r $ cm status path/to/search --checkout --compact --short3) findprivate $ cm findprivate path/to/search -r $ cm status path/to/search --private --compact --short
The 'cm partial checkin' command now shows dynami…
Command line client: The 'cm partial checkin' command now shows dynamic progress, just like its regular 'checkin' sibling! Check it out (pun intended) the next time you checkin something in a Gluon workspace from the CLI!it is with great joy that we announce the arrival…
Command line client: it is with great joy that we announce the arrival of the latest addition to our command family. We are sure "shelveset" will bring as much happiness to your daily coding life as it does to ours. To create a shelveset:To apply a shelveset:cm shelveset [paths]
To delete a shelveset:cm shelveset apply shelveset_spec
Simples! Note: the old "shelve" command is still available in the tool but is considered deprecated.cm shelveset delete shelveset_spec
8.0.16.3112
New
the cm label command now comes with added subcomm…
Command line client: the cm label command now comes with added subcommand goodness. Check out these examples:Sets the label BL001 on the latest changeset in the current workspace.cm label create BL001
'create' is the default subcommand for 'label', so this works too!cm label BL001
Rename the labelcm label rename BL001 BL002
Delete the labelcm label delete BL002
Some other ways to set labels. Note: 'makelabel', 'removelabel' and 'renamelabel' are now deprecated, but remain available in the tool.cm label BL003 cs:1 -c="Label on changeset 1"cm label BL004 cs:2@myrepo -c="Label on changeset 2 of repository 'myrepo'"cm label BL005 \workspace_path - c="Label on current changeset of specified workspace"
the new 'clone' command joins the family! You pro…
Command Line Client: the new 'clone' command joins the family! You probably already imagine what it does: the clone command clones a source repository (all of its branches, changesets, labels, code reviews, and so on) into a destination repository. If the destination repository does not exist, it is created automatically. If it does, it must be empty, or the clone is cancelled. These are a few examples of how to use the clone command:Like its push and pull siblings, the clone command also supports authentication and owner translation options:cm clone codice@skull.home:9095(Clones codice repository from skull.home:9095 into a repository also named codice in my default repository server.)cm clone codice@skull.home:9095 codice-local(Clones codice repository into a repository called codice-local in my default repository server.)
You can also use the clone command to clone repositories from your Plastic Cloud organization:cm clone codice@skull.home:9095 --authmode=UPWorkingMode --user=sergio --password=pwd(Clones codice repository using a user and a password to authenticate against skull.home:9095.)cm clone codice@skull.home:9095 --trmode=table --trtable=table.txt(Clones codice repository, translating the users using the content of the table defined in table.txt.)
For further information, you can execute:cm clone myRepo@tardis@cloud(Clones the myRepo repository from Plastic Cloud tardis organization into a repository with the same name in my default repository server.)
Hope you find it useful! (This closes the UserVoice request Simple repository clone operation).cm help clone
The trunk-bot CI Integration plug selection is no…
DevOps: The trunk-bot CI Integration plug selection is now optional. This is done this way to ease the evaluation of the DevOps mergebot cycle for a repository without actually having to configure a CI system and its related plug. Therefore, no builds in any CI system will be triggered when merging a task branch.DevOps: trunk-bot configuration for fixed recipie…
Server: DevOps: trunk-bot configuration for fixed recipients in the "notifications" section now allows entering a comma-separated list of values, where these values could be either a raw value (such as an email address) or a plastic user. In case of the latter, the actual value will be resolved with the defined user profile field, if possible. Consider the following example, where a trunk-bot is configured with an email notifier:
Screenshot
-
An actual email address:
developers@plasticscm.com -
Three plastic users: ,
jemagoandwill-> their actual email addresses will be calculated getting their configured "email" profile value:andrea

Screenshot
No need to checkout a changed file before checkin…
Command line client: No need to checkout a changed file before checkin. Before, to checkin a locally changed file, you had to do one of the following actions:Now the flag is not necessary if you specify the files you want to checkin:1) Check out the file, then check it in: $ echo foo >> file.txt $ cm co file.txt $ cm ci file.txt2) Checkin the file with the --applychanged flag: $ echo foo >> file.txt $ cm ci --applychanged file.txt
We think that if you explicitly specify the file then you know what you're doing, and forcing you to checkout the file first is just a hassle. However, this does NOT work with directories nor wildcards, as it might be dangerous (we humans tend to overlook things!):3) Just change the file and check it in:$ echo foo >> file.txt$ cm ci file.txt
All of these changes also apply to the 'cm partial ci' command, the checkin command for partial (Gluon) workspaces.a) This does NOT work: $ echo foo >> src/file.txt $ cm ci srcb) This does NOT work either: $ echo foo >> src/file.txt $ cm ci src/*.txtc) This DOES work: $ echo foo >> src/file.txt $ cm ci src/file.txtd) This ALSO works: $ echo foo >> src/file.txt $ cm ci --applychanged src/*.txt
Bug
After trying to process a merge conflict involvin…
Linux/macOS GUI: After trying to process a merge conflict involving a readonly xlink, the operation never finishes and the user is stuck (the merge cannot be processed). Now it's fixed.The issue "The revision for the git reference 000…
GitServer: The issue "The revision for the git reference 0000000000000000000000000000000000000000 cannot be found" during the git push operation was fixed. It could happen when the same (or similar) directory structure was added to the local repo, committed and pushed to the central server multiple times.8.0.16.3100
New
Improved the window default size (make it bigger)…
All platforms - Plastic, Gluon: Improved the window default size (make it bigger). Also, adjust the window size to the screen size if it doesn't fit.Added the "undo changes" option in the context me…
All platforms - Gluon: Added the "undo changes" option in the context menu. Now you can select several files in the checkin view, right click and select "undo changes" for the selected (highlighted) items, regardless of the files are checked or not.the '--parents' option of the 'cm add' command ha…
Command Line Client: the '--parents' option of the 'cm add' command has been deprecated. Now, it is the default behavior. For example, let's say that you have the following (private) directory structure, and you want to add 'file.txt' to source control:Now, you can do so by executing:src|- 01plastic| - client| |- file.txt| - code.cs- 02thirdparty
...which we hope feels more natural :-)$ cm add src/01plastic/client/file.txt
We have introduced a new "workspace" command (sho…
Command line client: We have introduced a new "workspace" command (short form, "wk"), for all workspace related activity. Here are some usage examples (using the short form):Lists workspacescm wk
Create a workspacecm wk MyNewWorkspace workspacePath
Rename the current workspacecm wk rename NewWorkspace
Move the current workspacecm wk mv newWorkspacePath
Delete a workspace As always, you can check out the inline help (cm workspace --help) for full details and more examples. Note: the existing workspace commands ("mkwk", "lwk", "rmwk" and "renameworkspace") are deprecated but will still work.cm wk rm NewWorkspace
We have introduced a new trigger command for mana…
Command line client: We have introduced a new trigger command for managing triggers. It has the following subcommands: create, delete, edit, list and showtypes.Note: the old trigger commands are deprecated but are still available in the tool for backwards compatibility.Usage: cm trigger | tr command [options]Commands: create | mk delete | rm edit list | ls showtypescm tr mk before-mklabel new "/path/to/script" --server=myserver:8084cm tr edit before-mklabel 7 --position=4 --server=myserver:8084cm tr ls before-mkbranch --server=myserver:8084cm tr rm after-setselector 4cm tr showtypes
A wizard step allows selecting which application…
Windows installer: A wizard step allows selecting which application should be started after the installation finishes. This application could be either Plastic SCM (classic GUI for developers) or Gluon (for documentation and game-dev artists). We improved the description of these apps to help choosing the desired app wisely. Note that both applications will be installed and available for you, regardless of this initial selection!Bug
The 'unco --all' was failing with the error "Sele…
CLI: The 'unco --all' was failing with the error "Selector can't locate a revision for the item<path>We perform the following local changes:/Assets/a.txt/Assets/Scripts/s.txt/Assets/Scripts/s1.txt/Assets/Scripts/s2.txt/Assets/Scripts/s3.txt/Assets/Scripts/s4.txt/Assets/Scripts/s5.txt/Assets/Scripts/s6.txt/Assets/Scripts/s7.txt/Assets/Scripts/s8.txt/Assets/Scripts/s9.txt/Assets/Scripts/MainMenu/Testing/Editor/b.txt/Assets/Scripts/MainMenu/m.txt/Assets/Scripts/MainMenu/Testing/t.txt
- Create directory /Assets/Editor/MainMenu/Testing
- Move /Assets/Scripts/MainMenu/Testing/Editor to /Assets/Editor/MainMenu/Testing/Editor
- Move /Assets/Scripts to /Assets/Runtime
But before they were:cm status/main@default@localhost:8084 (cs:1 - head)Moved Status Size Similarity Path Moved locally 100% Assets/Runtime/MainMenu/Testing/Editor -> Assets/Editor/MainMenu/Testing/Editor Moved locally 91% Assets/Scripts -> Assets/RuntimeAdded Status Size Last Modified Path Private 5 seconds ago Assets/Editor Private 5 seconds ago Assets/Editor/MainMenu Private 5 seconds ago Assets/Editor/MainMenu/Testing
cm status/main@default@localhost:8084 (cs:1 - head)Deleted Status Size Path Removed locally Assets/Runtime/MainMenu Moved Status Size Similarity Path Moved locally 100% Assets/Scripts/MainMenu/Testing/Editor -> Assets/Editor/MainMenu/Testing/Editor Moved locally 91% Assets/Scripts -> Assets/Runtime Moved locally 4 bytes 100% Assets/Scripts/MainMenu/m.txt -> Assets/Runtime/MainMenu/m.txt Moved locally 4 bytes 100% Assets/Scripts/MainMenu/Testing/t.txt -> Assets/Runtime/MainMenu/Testing/t.txtAdded Status Size Last Modified Path Private 7 seconds ago Assets/Editor Private 7 seconds ago Assets/Editor/MainMenu Private 7 seconds ago Assets/Editor/MainMenu/Testing Private 9 seconds ago Assets/Runtime/MainMenu Private 7 seconds ago Assets/Runtime/MainMenu/Testing
8.0.16.3088
New
the following cm commands related to repository h…
Command line client: the following cm commands related to repository handling are now deprecated:- lrep, replaced by 'repository' (without any arguments) or 'repository list'.
- mkrep, replaced by 'repository [repname]' or 'repository create'.
- rmrep, replaced by 'repository delete'.
- rnrep, replaced by 'repository rename'.
- addrep, replaced by 'repository add'
The arguments and flags supported by the old commands are supported by the new ones as well, in the same order (if applies) and of the same type as before. The deprecated commands are still available if you call them, but we recommend you to migrate any automation or script that relies on them to the repository command. In any circumstance, we will warn you through the release notes when the deprecated commands cease to exist.cm lrepcm repositorycm repository listcm mkrep myNewRepocm repository myNewRepocm repository create myNewRepocm rmrep myOldRepocm repository delete myOldRepocm rnrep myOldRepo myOldRepoRenamedcm repository rename myOldRepo myOldRepoRenamedcm addrep rep_2 myRemovedRep repserver:localhost:8087cm repository add rep_2 myRemovedRep repserver:localhost:8087
There is now a single command for all your attrib…
Command line client: There is now a single command for all your attribute management needs. We've called it ... attribute. Here is some example usage:Note: the beautifully named commands mkattr, rnatt, rmatt, statt and rmattr are deprecated, but still available in the tool for the more masochistic amongst us.cm att create Statuscm att set att:Status cs:512 InProgresscm att unset att::Status cs:512cm att delete att::Status
There is now a new command for managing locks. Yo…
Command line client: There is now a new command for managing locks. You guessed it! We called it "lock". Here are some examples:Note: the old lock commands can still be used, though they are now considered deprecated.cm lock listcm lock(list is optional if there are no arguments)cm lock unlock 91961b14-3dfe-4062-8c4c-f33a81d201f5
the following cm commands related to branch handl…
Command line client: the following cm commands related to branch handling are now deprecated:- mkbr, replaced by 'branch' or 'branch create'.
- rmbr, replaced by 'branch delete'.
- rnbr, replaced by 'branch rename'.
- branchhistory, replaced by 'branch history'
- getmainbranch, replaced by 'branch showmain'
- getmergeneededbranches, replaced by 'branch showmerges'
The arguments and flags supported by the old commands are supported by the new ones as well, in the same order (if applies) and of the same type as before. The deprecated commands are still available if you call them, but we recommend you to migrate any automation or script that relies on them to the branch command. In any circumstance, we will warn you through the release notes when the deprecated commands cease to exist.cm mkbr /main/scm20123cm branch /main/scm20123cm branch create /main/scm20123cm rmbr /main/scm20123cm branch delete /main/scm20123cm rnbr /main/task001 task002cm branch rename /main/task001 task002cm branchhistory /main/scm20123@myrepo@myserver:8087cm branch history /main/scm20123@myrepo@myserver:8087cm getmainbranchcm branch showmaincm getmergeneededbranches file.txtcm branch showmerges file.txt
8.0.16.3079
New
the cm replicate command is now deprecated. It is…
Command line client: the cm replicate command is now deprecated. It is replaced by push and pull, in an effort to make it easier to use, and improve the semantics of the command line. These commands are now equivalent:The authentication options (--authmode, --authdata, --authfile, --user, and --password), and the translation options (--trmode and --trtable) work exactly the same as before, both for pull and push. The deprecated replicate command is still available if you call it, but we recommend you to migrate any automation or script that relies on it to the new push and pull. In any circumstance, we will warn you through the release notes when the replicate command ceases to exist.cm replicate br:/main@project@remote:8087 project@local:8087cm pull br:/main@project@remote:8087 project@local:8087cm replicate main@project project@remote:8087 --pushcm push main@project project@remote:8087cm replicate main@project --package=project.packagecm push main@project --package=project.packagecm replicate project@localhost:8087 --import=project.packagecm pull project@localhost:8087 --package=project.packagecm replicate main@project@remote:8087 project --nodatacm pull main@project@remote:8087 project --nodatacm replicate hydrate projectcm pull hydrate project
Bug
The replication source aliases in the Branch Expl…
Plastic GUI: The replication source aliases in the Branch Explorer view were lost when the GUI closed. We fixed that to make them persistent.The DevOps dashboard didn't work if the Plastic S…
WebAdmin: The DevOps dashboard didn't work if the Plastic SCM Server owner was a group. Now it's fixed.The 'cm listlocks --onlycurrentworkspace' command…
CLI: The 'cm listlocks --onlycurrentworkspace' command used the workspace name instead of the workspace ID to filter the locked files. This caused issues if two developers had workspaces with the same name. We fixed the code to use the workspace ID in the lock filter and prevent collisions. However, this change will only affect locks created with this version or higher, so don't be alarmed if you don't see any changes in the 'cm listlocks --onlycurrentworkspace' output immediately. As a side effect, old clients will see the workspace ID in the command output as part of the workspace name for locks created with a newer client version, example:e9f49aaf-c803-4639-8639-d71037d9d57d Borja wk:f09a621f-a16c-47f4-b60e-b864cb3d65ba /art/body.jpg
History commands (CLI history command and History…
History commands (CLI history command and History View in GUIs) didn't check permissions. As a result, all revisions were displayed regardless of what permissions the current user was granted. We fixed this issue so that users will only see revisions from branches available to them, according to their permissions.8.0.16.3068
New
The plugin now handles a few merge conflict warni…
Eclipse plugin: The plugin now handles a few merge conflict warnings that we previously missed. It will now display discarded change, discarded filesystem protection change and path in conflict warnings. Here is a screenshot of the updated Eclipse plugin in action:
Screenshot
Added more log to the differences window. Sometim…
Windows - Plastic: Added more log to the differences window. Sometimes an unexpected error occurs and it's not written to the log.Bug
Calling 'cm status' for a path not in the current…
Command line client: Calling 'cm status' for a path not in the current directory used to result in a pesky "Error: Object reference not set to an instance of an object." message. This bug was introduced when we recently added the head changeset info to the status output by default. We have now fixed this, and cm status works as expected.The Shell processed quotes as if they were bounda…
CLI shell: The Shell processed quotes as if they were boundaries of arguments, which caused quotes in the middle of an argument to split it in two. For instance, "serverpath:/doc/Table of contents.md"#br:/main@project was considered as two separate arguments: 'serverpath:/doc/Table of contents.md' and '#br:/main@project'. It's fixed now.8.0.16.3057
New
Improved password management for encrypted server…
GUIs: Improved password management for encrypted servers. Now, if the user enters an incorrect password the 'encryption configuration' dialog appears in order to allow the user to enter the correct one, instead of having to edit the 'cryptedservers.conf' file manually.Bug
The workspace name appeared in two locations when…
Gluon for windows: The workspace name appeared in two locations when the user entered or exited the configuration mode in the Workspace Tree view. Now it's fixed.we fixed the performance of the add operation. On…
Windows GUI: we fixed the performance of the add operation. Once again, adding in the GUI is just as fast as with the command line (cm). We didn't notice the slowdown in the GUI sooner because all our performance tests are done with the command line. But, of course, the performance in the GUIs has to be just as good as with the cm. Linux and macOS GUIs were not affected. For more info and performance results see https://www.plasticscm.com/games/performance/performance-results-of-plastic-scmThe update operation didn't report the proper err…
The update operation didn't report the proper error when downloading a file bigger than 4MB and it wasn't completely downloaded. Fixed.Under some circumstances, the semantic difference…
SemanticSCM: Under some circumstances, the semantic differences were not calculated fine when the source files were very large and several differences were being calculated concurrently (e.g. analyze refactors and file diffs). This is now fixed.after an update operation, the gui would freeze f…
Windows GUI: after an update operation, the gui would freeze for a while if the update had to report a lot of errors. This is now fixed.8.0.16.3046
New
Now all the pkg installers are signed
macOS installers: Now all the pkg installers are signed.We improved the data update phase in the check-in…
We improved the data update phase in the check-in operation to improve how we handle network issues and try to reconnect if the network is gone for a few seconds. This was already implemented for check-in against our cloud, now it's available for any Plastic SCM server. Enjoy! Remark: You'll need to upgrade your Plastic SCM client and server to take advantage of this feature.The configuration files will encode/decode parame…
Issue tracker extensions: The configuration files will encode/decode parameter values using URI-encoded strings. This means that you'll be able to use special characters, such as '#' (which is regularly used to start comments).Bug
The diff editor automatically added the UTF-8 BOM…
Plastic and Mergetool for linux and macOS: The diff editor automatically added the UTF-8 BOM (byte order mask) when the file was saved to disk. Now it's fixed.Changing quickly the selected file in the diff wi…
Plastic GUI: Changing quickly the selected file in the diff window could sometimes display empty contents in the diff panel. This was incorrect and it happened particularly when the diff was calculated in a distant server (high latency). Now it’s fixedprotected queries to handle issue types project k…
Jira extension: protected queries to handle issue types project keys and "resolve status" names with special characters.8.0.16.3037
New
We have given "cm switch" and "cm setselector" a…
Command line client: We have given "cm switch" and "cm setselector" a nice new animated progress bar, so now you have something interesting to watch during a long update. Note: you can get the old multi-line output by redirecting the console output.The "version tree" diagram now survives applicati…
Windows GUI: The "version tree" diagram now survives application restarts. When you close and reopen the Plastic SCM GUI for Windows, the 2D History diagram tab will be reloaded, and the custom display options, including date filters, will be restored as well, without affecting the settings of the regular Branch Explorer.Now Plastic and Gluon notify when a new version i…
Plastic and Gluon (all platforms): Now Plastic and Gluon notify when a new version is available.
Screenshot
The cm status command output now includes the hea…
Command line client: The cm status command output now includes the head changeset by default. For example:>cm statuscs:1@test@localhost:8084 (head:3)>cm switch my_labelPerforming switch operation...Searching for changed items in the workspace...Setting the new selector...Plastic is updating your workspace. Wait a moment, please...CommandResult 0>cm statuslb:my_label@test@localhost:8084 (cs:2 - head:3)
Improved the look and feel of the splitters, in t…
Plastic for Windows: Improved the look and feel of the splitters, in the Pending Changes View and the Diff Window.
Screenshot
Previously, when working with a Gluon workspace,…
Command line client: Previously, when working with a Gluon workspace, you had to cd into the workspace to check items in. Now, you can checkin from outside the workspace - just like for a regular workspace.We have given "cm replicate" an animated progress…
Command line client: We have given "cm replicate" an animated progress that better matches the GUI. You can still get the old output by redirecting the command output. Here's a sneak preview of what you can expect (on a very small repository):
Screenshot
Bug
Can't download '/wk/src/foo.c' (revid:1432842). I…
We found out that file content downloads that failed due to network issues were incorrectly interpreted as items replicated without their data. The client displayed a message like "Cannot download revision 1432842 from server: Can't download '/wk/src/foo.c' (revid:1432842). It was probably replicated with --nodata, but it is not available in the repository test@localhost:8084.", but that was misleading. We fixed it so that the client displays the original error, rather than the 'nodata' message.Concurrent git clone operations could fail with t…
GitServer: Concurrent git clone operations could fail with the error "pack has bad object at offset XXX" since they wrongly share a buffer to build all the packages. Fixed.We fixed the text color of the annotate view bott…
Plastic Windows GUI: We fixed the text color of the annotate view bottom panel when using the Montana-Dark theme. It blended with the background before, rendering it unreadable.Creating a workspace sometimes failed with the er…
Creating a workspace sometimes failed with the error "The workspace cannot be initialized with the given selector. Probably you don't have enough permission to load the initial changeset of the repository of the selector". This happened when the user that performed the 'create workspace' operation only had permissions to see a subtree (e.g. '/game/art'). Now it's fixed.Transformable workspace rules used to fail for pa…
Plastic GUI: Transformable workspace rules used to fail for paths containing spaces, but now you can enclose the path in double quotes, and the transformer rule will work as expected. For example, the "plastic.transformerrules" file could contain: rm "/Path with/spaces in/" mv /No/Spaces "/Dir with spaces"8.0.16.3014
New
We have given the "cm update" command a nice new\…
Command line client: We have given the "cm update" command a nice new animated progress bar. Spoiler alert: it looks like this:
Screenshot
the 'cm' CLI utility has gained Bash superpowers!…
Command Line Interface: the 'cm' CLI utility has gained Bash superpowers! Now, the 'cm' command can provide command line autocompletion for Bash (more shells coming soon!). To install it do the following:$ cm autocomplete install

Screenshot
Bug
The Diffs view crashed when it was displayed from…
Eclipse: The Diffs view crashed when it was displayed from the Window -> Show view -> Other -> PlasticSCM -> Diffs menu. Now it's displayed with a "No content to compare message". We also detected and fixed a layout issue in the view that now it's fixed.8.0.16.3000
New
We have introduced a new, clearer format for the…
Command line client: We have introduced a new, clearer format for the console output of the status command. This change brings the CLI inline with the Pending Changes view of the GUI. However, don't worry - you can still get the output in the legacy format, if that's your thing. First of all, here is an example of the new output.
Screenshot
Please check-out the inline help "cm status --usage" or the online CLI Guide (https://www.plasticscm.com/documentation/cli/plastic-scm-version-control-cli-guide) for more information. What's changed? By default, all changes, controlled and local, are displayed. Since this is the default, we removed the "--all" option, but you can still use "--controlledchanged" to show only controlled changes. The option "--nochanges" has been renamed to "--header", and outputs just the workspace status. The option "--nostatus" has been renamed to "--noheader", and outputs just the changelists. New option, "--head", displays the head changeset status. The "--selector" and "--wkconfig" options have been deprecated. In case you still need the old format, for automation purposes: The following options can be used to generate output in the legacy format: "--cset" outputs the workspace status. "--compact" outputs the workspace status and changelists. "--noheaders" can be used with "--compact" and removes the changelist group headers from the output.--cset revert to the original format for workspace status (equivalent to the old cm status without args)--compact revert to the original format for the changes lists (equivalent to cm status --all/--changed/etc but using the old format)--head shows information for the head changeset
Improved readability in Branch Explorer label cap…
Windows GUI: Improved readability in Branch Explorer label captions. When a label was too long, the caption was cut and added ellipsis, so the caption couldn't be read. Now, when a label that doesn't fit it's caption area is hovered with the mouse, we draw the complete caption, so it can be easily read:
Screenshot
We added an option menu button in the top right c…
Gluon for Windows: We added an option menu button in the top right corner that allows you to display the preferences and the about dialogs.We added a button in the left sidebar that displa…
Gluon for Linux: We added a button in the left sidebar that displays the about dialog.Some users reported that they got stuck when a me…
Plastic (all platforms): Some users reported that they got stuck when a merge was started and it was not finished. We added a help case to detect this situation and help the user to continue the merge, or undo (and cancel the merge in progress).Bug
The server-only installer was failing trying to e…
Windows installer: The server-only installer was failing trying to extract 'vswhere.exe' file, a file needed to detect Visual Studio installations. Now it's fixed.The Eclipse views (branches, labels, changesets,…
Eclipse plugin: The Eclipse views (branches, labels, changesets, pending changes ...) failed to open due to a layout issue. Now it's fixed.8.0.16.2974
New
Added an "Applications" shortcut to launch the Pl…
Linux: Added an "Applications" shortcut to launch the Plastic SCM server administration page. This shortcut will open a browser onhttp://127.0.0.1:7178
Screenshot
xdg-openWhen a user switches to a changeset, the last cha…
Plastic (windows, gtk, osx): When a user switches to a changeset, the last changes on the branch won't be downloaded when the workspace is updated. When a user clicks the "update workspace" button in the items view and we detect that they had previously switched their workspace to a changeset, Plastic displays a help message to warn about this situation.Improved the performance calculating the cloud or…
Plastic all platforms: Improved the performance calculating the cloud organization for a user in the welcome dialog.When you show the changesets for a branch (branch…
Plastic for Windows: When you show the changesets for a branch (branches view -> right click -> view -> view changesets in this branch), the following options were disabled:- Merge from this changeset
- Cherry pick from this changeset
- Advanced merge
Now all Plastic clients use the environment varia…
Plastic GUI, Gluon and CLI (Windows, Linux and macOS): Now all Plastic clients use the environment variable PLASTIC_HOME to load and save the settings. If defined, Plastic will use the folder defined in the PLASTIC_HOME environment variable to save setting files. Otherwise, the default config folder will be used. NOTE: The PLASTIC_HOME environment variable will is ignored by the java cm client (our java-based CLI).Bug
If you set a filter in the Checkin View, after re…
Gluon for windows: If you set a filter in the Checkin View, after refreshing it, the filter was not re-applied. Now it's fixed.The option "Filter only parents" in the Version t…
Plastic for windows: The option "Filter only parents" in the Version tree 2D was not correctly saved/restored. Now it's fixed.The update operation didn't report the proper err…
The update operation didn't report the proper error when downloading a file locked by another process and bigger than 4MB. Fixed.Fixed a performance issue. The client configurati…
Plastic, Gluon and CLI (all platforms): Fixed a performance issue. The client configuration file (client.conf) was parsed thousands of times due a bug in the code. Now it's fixed.8.0.16.2951
New
Plastic SCM turns 8.0!
Plastic SCM turns 8.0! New year, new number. For all of you using subscriptions it will be transparent. If you have an "unlimited license", remember to request a new license where "major version supported" is updated to 8. As you know, we no longer release major super new versions anymore. We don't wait and package tons of new features together for a big launch. It seems the world has moved past that, and for us it is much better since it better fits the way we work. We release a few times a week, so being subscribed to Plastic, or purchasing support+updates if you are on perpetual, means receiving a constant flow of updates. The initial 8.0 won't be different from the latest 7.0, but in a few months 8.0 will be incredibly much evolved, week after week. These are some of the things we are cooking:- A brand new Unity plugin: While the current one, officially deployed by Unity, will still be there, we are working on a totally new one. Expect a more "plastic-style" UI with all the things you are used to in "Pending Changes".
- Multi-process Enterprise server: We are working at full speed right now in a greatly improved server that spawns multiple processes to increase reliability even on a single machine. This probably doesn't sound super exciting, but it will be the basis for the new upcoming Plastic Cloud infrastructure we are working on.
SemanticMerge understands your PHP code now ;)
Windows GUI: SemanticMerge understands your PHP code now ;) This feature closes one of the most requested UserVoice features: PHP Please!. The PHP parser is released as a beta, so we'd love to have your feedback about things that don't work for you or any other suggestion.
Screenshot
Filter rules confirmation dialog: we unified how\…
All platforms: Filter rules confirmation dialog: we unified how the "apply for all workspaces" checkbox is displayed. Each platform (windows, gtk, osx) displayed this button in different ways, depending on whether the operation could be applied or not: Some platforms didn't show the checkbox, others displayed the checkbox in a disabled state, etc. We unified the behavior this way (example with ignored files, but applies the same for cloaked items and hidden changes):- Plastic (all platforms): Now it is possible ignore files for all workspaces, always displays the checkbox.
- Gluon (all platforms) Ignore files for all workspaces is not possible, the checkbox is not shown.
"trunk-bot" and "conflictsbot" are now able to tr…
DevOps: "trunk-bot" and "conflictsbot" are now able to track all configured repository's branches. To do that, just leave the "Branch prefix" field empty while configuring any of these mergebots. Nevertheless, the field description has been improved in order to explain how to configure this use case.Command line tool. We have added a cool new abili…
Command line tool. We have added a cool new ability to the diff command. Previously, the process for viewing the diff of a file changed within a changeset was a little convoluted, because you had to call diff once to get the revisions and call diff again to see the differences. Now you can view the differences with a single call by specifying the filename as the last parameter. For example "cm diff br:/main@myrepo src\common\myfile.cs" will show any differences in the file "myfile.cs". In actual fact, you only need to specify enough of the path to uniquely identify the file. See the following output for an example of this intelligent path matching in action:c:\mcga>cm diff 4@test 6@testC "src\client\dup.cs"C "src\common\dup.cs"C "src\server\net\dup.cs"C "src\misc\net\dup.cs"c:\mcga>cm diff 4@test 6@test dup.csPath 'dup.cs' not unique. Could refer to any of.../src/client/dup.cs/src/common/dup.cs/src/misc/net/dup.cs/src/server/net/dup.csc:\mcga>cm diff 4@test 6@test net\dup.csPath 'net\dup.cs' not unique. Could refer to any of.../src/server/net/dup.cs/src/misc/net/dup.csc:\mcga>cm diff 4@test 6@test server\net\dup.csDiff tool launched with 'server\net\dup.cs'
Bug
Find queries that used the "like '%'" condition (…
Find queries that used the "like '%'" condition (i.e. a catch-all clause) returned a server error if it was configured to use Jet as backend. Fixed.Using special characters, such as (# / ? :, etc.…
Server: Using special characters, such as (# / ? :, etc. in bot/plug/bottype/plugtype names, caused the DevOps system to fail. Now, the following characters are forbidden: / : * ? " < /> | # Also in some circumstances, using blank spaces or other reserved characters caused the bots to fail when trying to communicate with the plugs. Now it's fixed.The "explain merge" diagram was unable to draw th…
Windows GUI: The "explain merge" diagram was unable to draw the contributor labels properly when a changeset was the base and destination of the merge at the same time. A red label with "UNKNOWN" text was displayed instead. Now it's fixed.We fixed a bug that caused name-only rules to be…
Filter matching: We fixed a bug that caused name-only rules to be applied to the complete directory hierarchy of every workspace item. This means that writing e.g. 'wkspaces' as a rule in your /ignore.conf file would cause every private file in all workspaces inside /home/myuser/wkspaces to be ignored.Fixed two bugs in the code review window
Windows GUI: Fixed two bugs in the code review window.- When a recently added file was commented in a revision that was not the last in the branch, the file content was displayed as empty. Now it's fixed.
- When a changed file was commented in a revision that was not the last in the branch, the action "show this revision in the left pane did nothing. Now it's fixed.