Release Notes

Public

8.0.16.3841: Dec 16 2019

New

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:

> cm repo list 192.168.221.218:8084
Error: 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

== How to configure ==

Default is 3 seconds, but you can configure it in several ways.

For plasticprotocol (the default) just edit client.conf and/or server.conf (only if you have timeouts during push/pull) and add a new integer value with the following key:

SocketConnectTimeoutMillisec

The value is in milliseconds. If you set it to 0, it will be an infinite timeout.

In case you are using remoting, edit your remoting.conf file (valid for client and server) and add timeoutMilliseconds="4000" as follows:

channel type="PlasticPipe.Remoting.Tcp.PlasticTcpChannel, plasticpipe" name="normal" timeoutMilliseconds="4000"

New

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).

New

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.

This is how the Scenarios 1 and 2 look like:

And this is how the Scenario 3 looks like:

You can see it working here:

This feature is experimental. You need to manually activate it by adding the following line to the client.conf configuration file.

On Windows, it is at %LocalAppData%/plastic4 folder:

<EnableGluonIncomingChanges>yes</EnableGluonIncomingChanges>

New

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.

New

All platforms - Command line client is now able to do Incoming Changes both with cm update and cm checkin.

== How it looks like during update ==

> cm update .
Processing directory conflicts
Processing directory operations
Merging file 1 of 1: README.txt

== What if there is a directory conflict ==

> 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  
2
Processing directory conflicts
Processing directory operations
Merging file 1 of 2: README.txt
Merging file 2 of 2: ConsoleApp\AssemblyInfo.cs

== During cm ci --update ==

> 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 operations
Merging file 1 of 1: README.txt 
Validating checkin data
Uploading file data
Confirming checkin operation
Modified README.txt
Modified ConsoleApp\AssemblyInfo.cs
Created changeset cs:1150@br:/main@quake@localhost:6060 (mount:'/')

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. You can see how it works at: Single branch workflow improvements: announcing Incoming Changes

To enable this feature, simply add the following line to your client.conf configuration file:

<EnableIncomingChanges>yes</EnableIncomingChanges>

Bug

Command line client: cm update was failing to show the animated progress bar when the selector was pointed at a branch rather than a changeset. For example, when updating a freshly created workspace for an existing repository. This is now fixed.

Bug

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).

Bug

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!

Bug

Windows - Plastic: Sometimes you got an warning message telling you that the view state coudln't be saved in guivisualstate.xml. That usually happened when any of the views failed to load on startup. We protected that issue: views that failed to load simply won't have their status saved.

Bug

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!

Bug

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.

Bug

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.

Bug

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.

Bug

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.

Bug

All platforms - server: The bundled mergebots couldn't handle submodules. You know, repos named like mainProject/assets or newGame/tools/releaseBuilder. URIs with encoded parameters (e.g. http://my.plastic.server.net/api/v1/repos/mainProject%2Fassets/branches/main) aren't allowed by default in .NET Framework 4.0 or older, so the mergebots couldn't retrieve the information they need from the server. We had to walk around that. It's all good now!

Bug

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.

Bug

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.