Unity Version Control 6.x Release Notes

This document contains all release notes for Unity Version Control major version 6.x, organized from newest to oldest.

6.0.16.1832

Public | 2017-12-06

New

replica now shows detailed progress during metada…

Windows: replica now shows detailed progress during metadata transfer.

Bug

When swiching between files in the pending change…

Mac GUI: When swiching between files in the pending changes view or the diff view, sometimes the first difference was not correctly displayed in the diff viewer. Now it's fixed.


6.0.16.1820

Public | 2017-12-01

New

Gluon for Linux is also here!

Gluon for Linux is also here!

This is the second preview of the upcoming Plastic SCM 7.0 version, and the greatest thing we are showing is Gluon for Linux and OS X. The artist-centric UI we created to simplify workflows in game dev teams goes beyond the Windows land.

New cm help objectspec command includes the defin…

New cm help objectspec command includes the definition of the different object specs supported by Plastic.

Improved the help of the acl command. Marked some old commands as deprecated.

Moved the help of the cm from an embedded resource to a .txt file.

Server now gracefully rejects proxy server reques…

Server now gracefully rejects proxy server requests in PlasticProto saying "method not found" instead of throwing a null (made wrongly to the wrong server).

Bug

number'. However, when the checkin also includes…

The checkin operation of an outdated item (i.e. a locally changed item unaffected by a previous update operation) should fail with the error "The parent revision of the item 'path' is inconsistent with the loaded one in the changeset cs:number'. However, when the checkin also includes an xlink under the same directory of the outdated item, under some special circumstances (depending on the internal children order) it was failing with a null reference error. Now, the null reference error is fixed and the expected "The parent ..." error is received.

The client showed a message reporting about an un…

Mac GUI: The client showed a message reporting about an unexpected error when the user closed a workspace window that had previously displayed the pending changes view. Fixed.

item srcrev: type: Moved'. Despite this l…

The checkin operation logged an error on the server if the contents of a deleted directory (item X) were moved inside an added directory with the same name, and both changes came directly from a merge (merge source in this case). The logged error message ' No revision has been found on the result tree for the merge change: item srcrev: type: Moved'. Despite this logged error, the checkin operation succeeded and its result was also OK. We've fixed this scenario so no confusing error message is logged anymore.

Clicking the OK button in the Preferences window…

Mac GUI: Clicking the OK button in the Preferences window after changing any of the settings caused the whole client to close if the configuration files (client.conf, guiclient.conf) were read-only. Fixed.

Some submodules were not visible in the Window GU…

Windows GUI: Some submodules were not visible in the Window GUI when they were displayed in "tree mode" and the user did not have permissions for "read/view" in the parent repository. Now it's fixed.


6.0.16.1792

Public | 2017-11-27

New

Gluon for OS X is here!

Gluon for OS X is here!

This is the first preview of the upcoming Plastic SCM 7.0 version, and the greatest thing we are showing is Gluon for OS X. The artist-centric UI we created to simplify workflows in game dev teams goes beyond the Windows land.

Gluon for OS X also features a redesigned overall style if you compare it to Plastic on OS X, and some of the key ideas will be soon applied to the rest of Mac UIs.

Gluon for OS X enables a work cycle that differs from the regular Plastic one, based on the following concepts: no branching, sparse checkouts, per-file like versioning (no need to sync the entire working copy before checking in a file).

Gluon is the perfect tool not only for artists in game development, but also for team members working on documents, binary assets and any other typically unmergeable content.

Together with Gluon we are also introducing image diff for OS X, capable of comparing images in many different formats.

This is the first outcome of the Gluon cross-platform effort, and the Linux version will follow shortly.

improved the way the "cm showacls" command format…

CLI: improved the way the "cm showacls" command formats the ACLs table. Now, it is easier to read and understand.

The following UI improvements were added to the B…

Mac GUI: The following UI improvements were added to the Branch Explorer view:

  • When using the right button, now the object clicked is selected before displaying the context menu. This way you can use the right button to select and show the context menu for an object with a single click (previously you need to left click to select the object, and then use the right button to show the context menu).

  • When searching for a branch, now we focus the ending part of the branch bounds. Normally the user wants to pay attention to the end of the branch, instead of the beggining.

  • Aesthetic change: Removed the progress spinner in the middle of the view that appeared after selecting an object.

The workspace explorer search field is not case-s…

GTK/Mac: The workspace explorer search field is not case-sensitive anymore.

Bug

Gtk GUI: Fixed a drawing issue in cross-branch parent links. Sometimes, when the parent changeset was very far in the x-axis the parent changeset link was wrongly drawn due to a Cairo issue. Workaround the issue using a clippign algorithm to draw only the screen-visible portion of the for parent links.

Fixed a search problem in the branch explorer. So…

Gtk GUI: Fixed a search problem in the branch explorer. Sometimes, after refreshing the branch explorer, after clicking the search button the object was not focused in the visible clip. Now it's fixed.

The external image diff viewer focused the "onion…

The external image diff viewer focused the "onion skin" button, when the default view mode is "side by side". Now is fixed.

Gluon in Windows was trying to connect to do chec…

Gluon in Windows was trying to connect to do check connection in the main thread incorrectly (configuration dialog).

fixed a null reference error that might be thrown…

Scan network: fixed a null reference error that might be thrown while searching for Plastic SCM servers when the client machine was having unreachable networks configured.


6.0.16.1765

Public | 2017-11-17

New

allow migrating from deprecated Oracle backend to…

Server webadmin: allow migrating from deprecated Oracle backend to another currently supported backend.

Bug

the "Allow to merge with pending changes" prefere…

GTK & MAC: the "Allow to merge with pending changes" preference was not saved so when you close the GUI it's lost. Now the preference value is saved.

strange undesired movements happened while naviga…

Windows Branch Explorer: strange undesired movements happened while navigating. Like you were looking for the beginning of a branch, dragging the diagram, and then the inertia scrolled unexpectedly in the Y axis.

It was hard to figure out, but it seems when Y movement was zero something weird happened. Now it is fixed :-)


6.0.16.1756

Public | 2017-11-14

New

From now on, the so-called 'high performance mode…

Jet backend: From now on, the so-called 'high performance mode' will be enabled by default. This change won't replace any existing jet.conf config file setting (highperf=true|false).

REMARK: the 'high performance mode' will slighly increase plastic server's memory footprint.

Bug

The progress indicator (this round figure that mo…

Windows GUI: The progress indicator (this round figure that moves when an operation is in progress, like a merge) was not properly animated. Now it's fixed. We broke it when supporting high DPI because now gifs need to be properly resized to the current screen DPI.

Fixed a "null reference" error when clicking the…

GUI: Fixed a "null reference" error when clicking the "display full branch names" option from the branch explorer without server connection.

a workspace with pending changes failed to update…

Linux and OS X: a workspace with pending changes failed to update when the "merge with pending changes" was not allowed. In reality this setting has nothing to do with this type of update (what we call update-merge), so it is now allowed (like it is on Windows).

First connection to Tube was always failing with…

First connection to Tube was always failing with "TubeWorkingMode is only valid through PlasticTube calls". It is fixed now.


6.0.16.1746

Public | 2017-11-10

New

PlasticProtocol (the super optimized protocol we…

PlasticProtocol (the super optimized protocol we are using as default since 6.0 and also supported by latest 5.0 and 5.4) is now capable of doing "retries".

What does it mean? You are sending a replication package to a remote server, connection is killed (you change network or whatever), Plastic will try to reconnect instead of just aborting the operation.

This has been supported in Remoting (the other protocol we have, which we want to deprecate soon) for years.


6.0.16.1744

Public | 2017-11-07

New

No-data replica is now ready! Grab metadata but s…

No-data replica is now ready! Grab metadata but skip data to have light but fully workable local repos.

You can use the --nodata flag in the cm replicate command to pull metadata to your repo while skipping the actual data.

== What is replica no-data all about ==

The motivation is clear: huge local repos (dozens of GB) are painful because you end up with tons of data you won't be using most of the time. Why not simply replicate the metadata so you can effectively branch and checkin, while getting the actual data from the original server on demand?

== An example is worth a thousand words ==

You just create a clean local repo, then replicate a single branch from the remote server, without data. You can branch from it, checkin, do whatever, and freely push changes back correctly, but your local repo will be tiny.

cm mkrep game-of-cores@localhost:8087

cm replicate main@game-of-cores@volantis:8087 game-of-cores@localhost:8087 --nodata.

cm mkwk wk-dev .

cm mkbr main/got-1023

cm switch main/got-1023

Since localhost:8087 doesn't have any data, files will be downloaded from the original server volantis:8087 during update.

Your working copy will be fully operational, and your local repo will be tiny.

By the way, as soon as you checkin locally, new data will be entered in your local repo, no problem about that.

Finally, you will be able to push your newly created branch back to volantis:8087

cm replicate main/got-1023@game-of-cores game-of-cores@volantis:8087 --push

== What is the vision ==

Our vision here is: working distributed is the way to go but since we are online most of the time, why not take advantage of it?

All checkins go super-fast locally (waiting to checkin is a productivity killer), but we are online, so let's grab actual data from the central.

== What if I really need to go offline ==

First, if you updated your workspace while connected... well, you already have the data locally, so chances are we got you covered.

Alternatively, you can always continue using regular replica, which is fine.

Finally, there is a way to simply "hydrate" certain changesets (or branches) while the rest of the repo remains data-less :-P

== Hydrate - nodata perfect companion ==

Nodata replication has a perfect companion: the cm replicate hydrate command, which lets you download data for a certain changeset to your local repo from a given specified source.

It works as follows:

cm replicate hydrate cs:1724@myrepo quake@central:8087

And you can also hydrate a branch if you want to (which will actually hydrate all its changesets):

cm replicate hydrate main@myrepo quake@central:8087

Bug

The revert operation was not locking (getting the…

The revert operation was not locking (getting the exclusive checkout) the reverted files. Now the lock is done as expected.

The cloaked exception rules were not working inside a cloaked xlink. See an example:

Cloaked rules:

**

!*.jpg

Tree:

/

/src

/src/foo.c

/theme (xlink)

/theme/app.ico

/theme/logo.jpg

Before the fix, all the workspace content was cloaked and no content was downloaded. The second line ('*.jpg') didn't affect the xlinked contents.

Now, that rule is properly applied to the whole tree and only these items will be downloaded:

/

/theme

/theme/logo.jpg

REMARKS: this fix requires both server and client to be updated.

When configuring ignored/cloaked rules, the works…

When configuring ignored/cloaked rules, the workspace-relative paths are still allowed by prepending the text "$workspace". But it was not properly working for exception rules.

eg:

$workspace/myproject/*

!$workspace/myproject/code.cs


6.0.16.1735

Public | 2017-11-01

Bug

In the pending changes view, the diff viewer was…

Windows GUI: In the pending changes view, the diff viewer was not refreshed after checking in or undoing changes. Now it's fixed.

Server stopped listening to the input of a given…

Server stopped listening to the input of a given network connection after discarding an unsupported method in PlasticProto only if the first request was bigger than 80KB.

It was all an issue with buffered reading being handled incorrectly under quite rare circumstances.

Modified replica code for push in the server so t…

Modified replica code for push in the server so that fetching a huge amount of metadata doesn't end up with a cancelled remote transaction due to inactivity. The issue was that we were creating a remote transaction (plastic type of transactions, not database) on the remote server at the very beginning, then if the fetch took too long (like more than 30 minutes), the remote transaction was aborted and the replica failed after finishing the fetch phase on the local server and when connecting the remote to transfer the metadata.

Server was mistakenly closing sockets when the me…

Server was mistakenly closing sockets when the method call took more than 60 secs (extremely unusual but doable). This was because we entered a protection mechanism to prevent clients to stay connected forever, but we didn't consider that the socket is being monitored for closing (so we do a read) before the method finishes. Fixed now.


6.0.16.1723

Public | 2017-10-27

Bug

If the server was configured using auto-renewal t…

Windows installer: If the server was configured using auto-renewal token license, the upgrade could override port and authentication working mode. Fixed.

In the pending changes view, the diff viewer was…

Windows GUI: In the pending changes view, the diff viewer was not refreshed after checking in or undoing changes. Now it's fixed.


6.0.16.1718

Public | 2017-10-26

New

Allow to resize checkin comments textbox. Also su…

Gluon: Allow to resize checkin comments textbox. Also support Ctrl+A to select all the text in the textbox.

Bug

Nested dynamic views weren't disposed correctly i…

Mac/GTK: Nested dynamic views weren't disposed correctly if their parent dynamic view was closed. Fixed.

Fixed a null during parallel update introduced in…

Fixed a null during parallel update introduced in 6.0.16.1675


6.0.16.1706

Public | 2017-10-20

New

A new 'Browse repository on this changeset' conte…

GTK: A new 'Browse repository on this changeset' context menu option was added to the Changesets View and the Branch Explorer changeset selection. It will show a dynamic view to navigate the repository contents in the selected changeset.

A new 'Browse repository on this changeset' conte…

Mac: A new 'Browse repository on this changeset' context menu option was added to the Changesets View and the Branch Explorer changeset selection. It will show a dynamic view to navigate the repository contents in the selected changeset.

The new 'Browse repository on this changeset' vie…

GTK: The new 'Browse repository on this changeset' view has been completed adding a context menu with the following options:

  • Open

  • Open with

  • Save as

  • Diff with previous revision

  • View history

The new 'Browse repository on this changeset' vie…

Mac: The new 'Browse repository on this changeset' view has been completed adding a context menu with the following options:

  • Open

  • Open with

  • Save as

  • Diff with previous revision

  • View history

Bug

the unco command wrongly performed a full unco if…

CLI: the unco command wrongly performed a full unco if it was called with a wildcard argument (e.g 'cm unco src\f*') that didn't match any contents on disk.

The wildcard arguments expand to generate a set of disk paths matched by the argument. When there are no matches, the "unco" command is called with an empty set, resulting in a full undo checkout operation (the same way as executing "cm unco" without arguments).

We fixed the wildcard argument behavior to avoid a full "undo checkout" operation if no disk paths are matched.

Release 1699 was unable to migrate data when Plas…

Release 1699 was unable to migrate data when Plastic Server ran as a Windows Service. All because a temporary db.conf file created in the wrong location (full path not specified ended up creating the file in an unexpected place running as SYSTEM account).


6.0.16.1699

Public | 2017-10-19

New

webadmin - the new web based server administratio…

webadmin - the new web based server administration console.

The new web user interface will replace the old Windows-only admintool and configureserver and it is available on Linux and OS X. This way we close one long term request: cross-platform admin tool.

webadmin also implements an interface to configure users and groups (users.conf and groups.conf) replacing the previous Windows-only umtoolgui.exe.

webadmin provides not only a way to finely tune the server but also comprehensive documentation about what each parameter means and how to use it, and links to more information when needed.

The new admin console allows you to:

  • Configure the network, including ports (TCP, SSL), the auto-discovery service and more (REMARK: UDT is not working at this point, but it will be ready soon).

  • Configure authentication: to select the authentication mode (user-password, LDAP, Active Directory, etc), finely tune each mode (different params in LDAP, for instance) and even configure users and groups in UP.

  • Repository storage: to tune params and migrate to a different backend.

  • Advanced parameters like forcing specific client versions, timeouts, threadpool settings and more.

  • Configure the audit log.

  • Configure lock rules: that now are also auto-reloaded without having to restart the server.

  • Comprehensive license configuration: both during evaluation and server operation.

  • A new support functionality to easily create "support bundles" to send relevant info in seconds when an issue happens.

  • Monitor: a server monitoring panel to track health and performance parameters.

How to use it:

Quite simple, just open a browser to your server address like this: http://0.0.0.0:7178. We do not support HTTPS yet. So, don't open it up to the Internet.

Additionally:

  • server.conf, remoting.conf, db.conf and lock.conf are now reloaded on the fly. Make a change editing a file, and the Plastic SCM server will reload the config immediately.

Remarks:

  • Create support bundle not yet working on OS X.

  • UDT configuration not yet working.

  • Comment limit is not correctly working on the SQL backends yet.

  • HTTPS NOT supported yet, so do not open it up on public Internet.

Bug

Tube was not working with LDAP servers that had t…

Tube was not working with LDAP servers that had the Token configured.

Detected a performance issue in LDAP+UP groups wi…

Detected a performance issue in LDAP+UP groups with +3700 groups => groups.conf were reloaded each time group membership was checked, which was extremely slow. Fixed.

Entering an invalid key for some values (language…

clconfigureserver: Entering an invalid key for some values (language, working mode...) in interactive mode caused the tool to exit. Fixed.


6.0.16.1688

Public | 2017-10-16

New

The server can now reload server.conf while runni…

The server can now reload server.conf while running, which means authentication and many other settings can now be reloaded dynamically.

Now the server can change storage backend (entire…

Now the server can change storage backend (entirely, or just individual settings) without restarting. In case key params like the database path are modified, the caches will be reloaded and all connections closed.

Bug

Fixed how sent and recv bytes were tracked in bot…

Fixed how sent and recv bytes were tracked in both plasticproto and remoting so that detailed checkin progress (and detailed save as added to Gluon) can show movement in slow networks.


6.0.16.1654

Public | 2017-10-10

New

Now the server watches for changes in remoting.co…

Now the server watches for changes in remoting.conf and can reload the network configuration without restarts.

The server checks remoting.conf for changes every couple of seconds (checks the write time of the file previous to read its contents).

Example: suppose the server is listing on port 8087, and now you change it to work on 8088. Current active connections to 8087 won't be stopped, but new ones will be only accepted to 8088.

Remark: config reloading won't run if --port or --sslport arguments are used to launch plasticd.

lock.conf now is reloaded by the server if the fi…

lock.conf now is reloaded by the server if the file changes. No need to restart the server anymore to load lock rules.

Bug

it wasn't unable to list repositories. Fixed now.

Gluon configuration broken: it wasn't unable to list repositories. Fixed now.

It was a regression of a task to improve the handling of aliases introduced in 6.0.16.1533.


6.0.16.1644

Public | 2017-10-06

New

Now, if a Ctrl+C key combination is detected whil…

P4 sync: Now, if a Ctrl+C key combination is detected while a changeset is synced (exported or imported), the sync process will wait until the current changeset fully synced to prevent data mismatch between plastic and p4. After that, the sync process is gracefully stopped.

Remarks:

  • The Ctrl+C key won't be deteced if the sync operation is run in "cm shell" mode.

  • When issuing a Ctrl+C, the printed results about "changesets involved" could not match with changesets actually synced.

Improved the pending changes autorefresh feature.…

Windows GUI: Improved the pending changes autorefresh feature. Now, after the pending changes view is refreshed, we maintain all the UI state of the diff viewer (scroll position, current diff, ...), if the file did not change on disk. When the file changed on disk, we refresh the diff viewer as usual.

the undo must target either none or all of them a…

Now, merge changes can be undone without requiring the rest of the workspace changes to be undone as well. Additionally, non-merge workspace changes can be undone independently. The only current requirement is to undo all merge changes together: the undo must target either none or all of them at the same time.

Bug

Pending changes view showed an error in a border…

Windows GUI: Pending changes view showed an error in a border case move operation without changing its contents: move an item in two steps so the final path it's the same as the original. Example:

  • Having the following structure:
/
/src
/src/lib
/src/lib/foo.c
  • Performing the following command line operations caused Pending Changes view showing an error:
cm move /src/lib/foo.c /src/foo.c
cm rm /src/lib
mkdir /src/lib
cm add /src/lib
cm move/src/foo.c  /src/lib/foo.c
  • After these operations, the resultant path of "foo.c" it's the same as the original one, but different parent directory ID (but same name). Now the issue has been fixed and the Pending Changes view is able to show the changes.

The cm partial ci is not printing the right chang…

The cm partial ci is not printing the right changeset. Instead of the created changeset, it was printing the branch head when the checkin was done (that was the parent changeset of the created changeset). Now it's printing the right one.


6.0.16.1633

Public | 2017-10-03

New

modified the way in which requests handle SSL aut…

Server network layer: modified the way in which requests handle SSL auth. Now they are enqueued to the threadpool before doing any network reading, to free the network callback as soon as possible. This should fix a weird deadlock detected on a Linux server after hours of intense work (while others with even more load go fine).

Bug

The cm diff command wasn't using the appropriate…

Windows: The cm diff command wasn't using the appropriate file extension when downloading temporary files. This caused the image diff to fail if a particular changeset was used in the revision spec. Fixed.

The cm diff command failed (throwing a null refer…

CLI: The cm diff command failed (throwing a null reference exception) when a revision was specified by ID. Fixed.


6.0.16.1625

Public | 2017-09-28

New

Plastic will now consider the external tool exit…

Plastic will now consider the external tool exit code when performing file merges. This means that a merge tool that creates the output file and then crashes will be considered as a failed merge, whereas before just creating the output file was considered as a success.

Mac OS X High Sierra (10.13) is now fully support…

Mac OS GUI: Mac OS X High Sierra (10.13) is now fully supported!

Bug

The WebUI was unable to work against a Plastic SC…

WebUI: The WebUI was unable to work against a Plastic SCM server configured in LDAPWorkingMode or UPWorkingMode due to a bug in the network layer that was overriding the user credentials introduced at login with the ones loaded from the WebUI client.conf file, which, in this case, does not have any. Fixed.

Resource dictionaries were not loaded properly in…

Resource dictionaries were not loaded properly in the windows GUI.

changeset information in before-chattvalue and af…

Triggers: changeset information in before-chattvalue and after-chattvalue was blank. Fixed.

Sometimes an unexpected error occurred when switc…

Sometimes an unexpected error occurred when switching from list mode to tree mode in the pending changes view (working with changeslists). Now it's fixed.

Fixed the image alignment of the diff maximize/re…

Fixed the image alignment of the diff maximize/restore buttons.

Using the plastic protocol and the SSL channel, t…

Using the plastic protocol and the SSL channel, the server memory is unexpectedly growing. The problem was a memory leak on the plastic protocol detection. Now it is fixed.


6.0.16.1614

Public | 2017-09-15

New

The client configuration CLI tool now accepts gen…

clconfigureclient: The client configuration CLI tool now accepts generic --user and --password parameters for UPWorkingMode and LDAPWorkingMode. Forget about old style parameters (--LDAPuser and --LDAPpassword) because they are deprecated from now on. Oh, and its help text is now easier to read!

Bug

The 'cm partial checkout' command was ignoring th…

CLI: The 'cm partial checkout' command was ignoring the -R option, so directory contents weren't recursively checked out. Fixed.

The 'cm checkout' and 'cm partial checkout' comma…

CLI: The 'cm checkout' and 'cm partial checkout' commands were skipping files passed as command line arguments if the -R option was set. Only directories were affected. Fixed.


6.0.16.1600

Public | 2017-09-07

Bug

Running the 'cm partial add -R' command on a part…

CLI: Running the 'cm partial add -R' command on a partial workspace resulted in an error, as the 'cm' utility was trying to expand the 'add' command as if it were a path because of the -R flag (that is why non-recursive add operations worked OK). Now it is fixed.


6.0.16.1590

Public | 2017-09-05

New

The comments textbox on the Branch Explorer now h…

Windows GUI: The comments textbox on the Branch Explorer now has a vertical scrollbar to ease navigation through long comments, and all of the text can be selected at once with the CTRL + A shortcut. This closes the following Uservoice request: Extend Editing Existing Comments

The 'cm partial ci' command on a partial workspac…

CLI: The 'cm partial ci' command on a partial workspace was not printing the information about the items involved in the checkin, nor the resulting changeset spec. Fixed.

Bug

Previously, a user with permissions on the 'plast…

Previously, a user with permissions on the 'plastic-global-config' repository couldn't use the global configuration when he didn't have the view permission on the repository server. Now, a user only needs to have permissions on the plastic-global-config' repository to use the global configuration.


6.0.16.1568

Public | 2017-08-31

New

As requested in user voice [link]https://plastics…

Windows GUI, gtk and mac clients: As requested in user voice Add an option to hide merge info in the diff viewer, we implemented a toggle button that allows to "skip merge tracking" in the diff view. The button is only visible when several merge sources have been detected. When you click the button, diffs are not groupes by merge.

Now it is possible to select a different backend…

Server admin tool: Now it is possible to select a different backend from Jet on new Plastic SCM installations.

REMARK: Migration from a non-empty Jet database is still unsupported.

Bug

Fixed some specific scenario where GitSync was no…

Fixed some specific scenario where GitSync was not pushing and pulling the changesets in one single step.

After the changes made to fix an issue with serve…

After the changes made to fix an issue with server aliases (serveralias.conf) and LDAP server, the branches and tags created in Git do not get an owner on the Plastic side when pushed, which can lead to problems. Now it's fixed

When editing text files with some IDEs (e.g. Visu…

When editing text files with some IDEs (e.g. Visual Studio) the target file is moved to a temporary path and then the new contents are written into the original path while the previous (renamed) file is deleted.

The Plastic Tracker service acknowledges this workflow, but it was not handled for added files. As a result, Plastic showed a private file on the original added path and locally deleted file on the temporary path.

Now, this workflow is handled for added files and Plastic shows the added file on the original path with the new content (without any locally deleted file on the temporary path).

The following cases for the match patterns - used…

The following cases for the match patterns - used to cloak, ignore, etc. - were fixed.

1- Rules like /Simulator/Runtime/videos/** were affecting both the directory (/Simulator/Runtime/videos) and everything under it (such as /Simulator/Runtime/videos/scene_1/movie.mp4). This was fixed to be applied only to the directory contents, not the directory itself.

2- Given this set of rules:

!**/Development/Programming/Sql/
 **

The expected behavior should be to match everything except the content under directory paths ending with Development/Programming/Sql. That means /src/foo.c should match but /src/Development/Programming/Sql/project_1/data.txt should be spared. However, it turned out that everything was matched except those directories whose path ended with Development/Programming/Sql themselves (which was kind of weird). This was fixed and it should be working as expected now.


6.0.16.1534

Public | 2017-08-24

New

WARNING this release has issues with GitSer…

WARNING this release has issues with GitServer. If you are running GitServer, do not upgrade to this release.

After the changes made to improve aliases, we realized the branches and tags created in Git do not get an owner on the Plastic side when pushed, which can lead to problems.

The Plastic SCM TeamCity plugin now supports the…

TeamCity plugin: The Plastic SCM TeamCity plugin now supports the automatic merge feature. Yay!

The checkboxes in the 'pending changes' view are…

Windows GUI: The checkboxes in the 'pending changes' view are now bigger, according to the following User voice:

Make regular plastic client 'Pending Changes' checkboxes more like Gluon

Bug

Fixed issues with server aliases (serveralias.con…

Fixed issues with server aliases (serveralias.conf) and LDAP servers.

  • cm lrep unreachable.com:9090 having client.conf to unreachable:9090 but an alias to reachable:9090 => failed with "can't connect to server" because the code doing the login to LDAP was not handling aliases (normal calls were, but not the login).

  • cm lrep unreachable.com:9090 having client.conf already pointing to reachable:9090 and again an alias to reachable:9090 (typical case when you switch servers) => failed. The alias worked, but credentials were not recalculated, so it didn't work.

Both issues have been fixed and new tests added to avoid regressions.


6.0.16.1515

Public | 2017-08-18

New

The pending changes view is now autorefreshed whe…

Windows GUI: The pending changes view is now autorefreshed when it gets the focus, as requested in our UserVoice: Auto Refresh Pending Changelist Option. A new option has been added in the "pending changes view" options dialog to enable/disable this feature (disabled by default).

Now, the JIRA issue tracker extension is able to…

Windows GUI, macOS GUI and Linux (GTK) GUI: Now, the JIRA issue tracker extension is able to change the status of the associated issue to a branch / changeset based on a changeset comment. To do so, you can define your own keyword-status mappings: if the keyword is present on the changeset comment, the issue status will be changed to the defined status. The format of the mappings is as follows:

KEY-VALUE|KEY-VALUE

One example of this is:

[FIXED]-Ready for QA|[WONTFIX]-Done

If your changeset includes in its comment the keyword "[FIXED]" (with the brackets), your issue status will change to "Ready for QA". Bear in mind that the transition between statuses must be allowed by your JIRA workflow.

To configure this in Windows, you can go to Preferences > Issue Trackers > (JIRA configuration) > Status transitions.

To do the same on macOS or Linux, you must open your jira.conf file and add the following line, replacing the value:

Name=Status transitions;Value=[FIXED]-Ready for QA|[WONTFIX]-Done;Type=Text;IsGlobal=True

This feature works binding issues to both branches and changesets. It is NOT necessary to have the Plastic SCM custom field ID set for this to work.

This feature closes the following UserVoice request: Jira integration should be able to transition issues through Jira workflow and maintain all data

Bug

Working on LDAP authentication mode, the proxy se…

Working on LDAP authentication mode, the proxy server could fail with the error 'Object 'SecurityHandler' has been disconnected or does not exist at the server.'. Fixed

When a shelve that contains a file that matches s…

When a shelve that contains a file that matches some "lock.conf" rules, the apply shelve operation was failing with the error 'The file XXX requires exclusive checkout, but it is not up-to-date in your workspace'. Fixed

The "Undo changes" context menu option in the "Ex…

Gluon: The "Undo changes" context menu option in the "Explore workspace" view didn't persist the workspace changes: the previous file contents were properly downloaded but the "controlled" state was lost when Gluon was closed. Fixed.

When there were path permissions defined on the r…

When there were path permissions defined on the repository, The 'apply shelve' operation was failing with the error 'You are working with out-of-date objects. Maybe your client or workspace is out of date, please update it.'. Fixed

The USN journal Change Tracker service was not in…

The USN journal Change Tracker service was not installed properly if the PlasticSCM server was not installed. Now it's fixed.

while building the necessary Uris to access the J…

JIRA extension: while building the necessary Uris to access the JIRA server, the extension was deleting the path were the JIRA server was running at. For example, if JIRA was running at https://myserver/jira, the extension would use only https://myserver to build the Uris. Fixed!

if the gtkgui.conf / macgui.conf configuration fi…

Linux (GTK) GUI and macOS GUI: if the gtkgui.conf / macgui.conf configuration files had an invalid workspace set as current, you were prompted with the "First use" welcome dialog even if you had perfectly valid workspaces in your plastic.workspaces configuration file! Not anymore ;)


6.0.16.1486

Public | 2017-08-04

New

The program file is now a 64-bits executable file.

Gluon: The program file is now a 64-bits executable file.

A new configuration file called 'externaltools.co…

GUI: A new configuration file called 'externaltools.conf' is now available to run actions on the selected objects. It can be included in the plastic-global-config repository at /externaltools/externaltools.conf.

It allows you to define external applications and how they'll receive the selected object properties. This is the syntax:

<objectType>[:<objectType>[...]] | <toolName> | <pathToExecutable> | <args>
  • objectType: the name of the targeted object. It can be either item, label, changeset or branch. They can be combined using ':' to separate them.

  • toolName: The name of the tool to be displayed in the context menu

  • pathToExecutable: Absolute path to the targeted application. Spaces don't need to be escaped or protected.

  • args: The arguments line to be passed to the targeted application. There are three currently supported placeholders: @object (replaced with the object name), @repository (replaced with the repository of the object) and @wkpath (replaced with the current workspace path). Please note that the replaced values might contain blank spaces, so they'll probably need to be surrounded with quotes.

Examples:

item | Open with sublime | C:\Program Files\Sublime Text 3\subl.exe | "@object"
label:changeset:branch | Create new code review... | /usr/bin/createcodereview | "@object@@repository" @wkpath

This actions will apear as a new menu item called "External tools" in:

  • Branches view context menu

  • Changesets view context menu

  • Labels view context menu

  • History side panel context menu (only GTK & Mac)

This actions will appear appended to the "open" menu item submenu in:

  • Items view

  • Pending changes view

  • History view (only Windows)

Now, the comment of an object can be updated on t…

Cloud: Now, the comment of an object can be updated on the Cloud server.

Bug

Using some SQL backends, the update operation fai…

Using some SQL backends, the update operation failed when an empty cloaked.conf was added to the repository. Fixed.

The #regions in the C# language were not correctl…

Windows GUI: The #regions in the C# language were not correctly collapsed when the diff option "collapse regions wihtout diffs" was enabled. Now it's fixed.

The global configuration system always loaded the…

The global configuration system always loaded the default server global configuration (i.e. the server defined in the client.conf file) instead of the current workspace repository server. Fixed.

The Branch Explorer submenu in the branch explore…

The Branch Explorer submenu in the branch explorer context menu of selected branches didn't enable the appropriate actions. GTK never allowed to navigate to the branch base and Mac submenu was always empty. Fixed.


6.0.16.1471

Public | 2017-08-03

New

the upload performance of the checkin operation h…

Cloud: the upload performance of the checkin operation has been greatly improved. Now uploading big files (bigger than 4MB) is 3 times faster. For example uploading a file of 262MB takes 17 seconds now vs the 46 seconds before this change. This has been achieved with multi-thread uploads :-)

to use 5 uploaders, add the following entry in th…

Now the checkin operation can upload the data in parallel to a standard server (not Cloud server). By default, a single uploader is used. For example: to use 5 uploaders, add the following entry in the client.conf file: <Upload_SendDataThreadCount>5</Upload_SendDataThreadCount>

Remember that the checkin operation was already uploading the data in parallel to the Cloud server. By default, the number blob writers used is 10 and it can be configured using the entry <NumBlobWriters>10</NumBlobWriters> in the client.conf.

Several UI improvements in the annotate view:

Window GUI: Several UI improvements in the annotate view:

  • Removed the horizontal gradient in the metadata panel.

  • Automatic change the metadata foreground color, based on the background. When the background is dark, we chose a light color and vice versa, to maximize the contrast.

  • Show a tooltip with info when you place the mouse over the metadata line.

  • Included a "Annotate previous version" action in the context menu, next to "Diff contents of branch/changeset ..." actions.

  • When right-clicking a line and choosing "Diff contents of branch/changeset ...", the file that you are currently annotating is now be pre-selected in the diff window that appears.

The order of categories in the pending changes vi…

GUI: The order of categories in the pending changes view, the merge view and the diff window has been altered. From now on, added items will be grouped at the bottom instead of being in second place.

This solves a popular request in our UserVoice: https://plasticscm.uservoice.com/forums/15467-general/suggestions/4078928-put-added-and-private-items-at-the-end-of-a-pendin

Plastic Change Tracker service for Windows is now…

Plastic Change Tracker service for Windows is now automatically installed and started up.

When editing text files with some IDEs (e.g. Visu…

When editing text files with some IDEs (e.g. Visual Studio) the target file is moved to a temporary path and then the new contents are written into the original path while the previous (renamed) file is deleted. Now, the Plastic Change Tracker acknowledges this workflow and shows the edited files as changed, instead of a private file on the original path and locally deleted file on the temporary path.

Added a new before-merge trigger. This trigger co…

Added a new before-merge trigger. This trigger could be used to deny the merge of some branches if certain conditions are not met.

The trigger can be register using the following command:

cm maketrigger before-merge merge_gate "/path/to/script" --server=myserver:8084

Check the triggers reference to check all the available info on the merge trigger.

Remarks: the client and the server should be updated to use this functionality

Bug

Using the up/down arrow keys did not updated the…

Using the up/down arrow keys did not updated the scroll position in the annotate view. Now it's fixed.

Now Plastic SCM client ask for pending changes be…

Windows GUI: Now Plastic SCM client ask for pending changes before changing from "text based diffs" to "semantic based diffs". This prevents for loosing pending changes when switching between diff modes when the right file is editable.

Running the 'cm command' with the --xml and the -…

CLI: Running the 'cm command' with the --xml and the --nostatus args at the same time caused a null reference exception. Fixed.

Syntax highlight and method history were not avai…

Windows GUI: Syntax highlight and method history were not available in the annotate view. Now it's fixed.

"End of file". Fixed

Using a client version newer than 6.0.16.1331 and a server version older than 6.0.16.1271, the update operation could fail with the error: "End of file". Fixed


6.0.16.1408

Public | 2017-07-19

New

Update on Linux, OS X can now skip setting permis…

Update on Linux, OS X can now skip setting permissions of files and directories (chmod) if you set IgnoreFsProt to yes in client.conf.

Included "ignore whitespaces" | "ignore EOL" | "i…

windows GUI: Included "ignore whitespaces" | "ignore EOL" | "ignore EOL and whitespaces" | "recognize all" options in annotate.

Bug

The server closes client socket connections corre…

The server closes client socket connections correctly now and monitors for abandoned connections and is able to close them.

Clients were closing unused connections every 30 seconds (if conn was not used for 30 seconds) but a bug was preventing conns to close correctly. This provoked lots of conns to pile up.

The server is now capable of correctly handling closed conns and as said before, to deal with older clients and force-close abandoned conns (established but unused for a more than 1 minute).


6.0.16.1395

Public | 2017-07-17

New

cm admin readonly.

New administration command: cm admin readonly.

This command allows switching the server between normal mode and read-only mode.

When the server is in read-only mode only read operations are allowed, so no data will be changed. This is useful using Jet backend because it allows backup operations to be performed without stopping the server.

The cm admin readonly command allows to:

  • Enter in read-only mode using 'cm admin readonly enter'. Once it's executed no more write operation will be allowed. The command will wait for all currently running write operations to end before it finishes.

  • Leave read-only mode using 'cm admin readonly leave". This action brings the server back to normal mode (i.e. write operations are allowed again).

  • Retrieve the read-only mode status using 'cm admin readonly status'.

This command can only be executed by the server administrator.

Bug

The 'Split conflict blocks' option was not worki…

Mergetool: The 'Split conflict blocks' option was not working when a single line is added next to a single modified line. Fixed.

It was requested in the following UserVoice improve merge algorithm for additional lines


6.0.16.1382

Public | 2017-07-14

New

The Plastic SCM client now takes advantage of the…

Linux CLI/GUI: The Plastic SCM client now takes advantage of the FTS functions to traverse the file system. This causes a 15% improvement in execution times, particularly in the cm status command.


6.0.16.1365

Public | 2017-07-11

New

A new 'editcomment' subcommand was added to the '…

CLI: A new 'editcomment' subcommand was added to the 'cm changeset' command. It allows to edit comments of existing changesets in a repository.

Syntax:

cm changeset editcomment | edit <cset_spec> <new_comment>

Examples:

cm changeset editcomment cs:15@myrepo "I forgot to add the checkin details"
cm changeset edit cs:cb11ecdb-1aa9-4f11-8698-dcab14e5885a "This comment text will replace the previous one."

Bug

We fixed an issue with override permissions. Check the following example:

  • John belongs to groups "developers" and "leaders".

  • At rep server level, we enable "view" and "read" for both "developers" and "leaders".

  • Now in "code" repo, for "developers" we override "view" and "read" and they are left unchecked (not enabled or disabled).

  • Since John belongs to "leaders" too => he should be able to see "code" repo. But he didn't.

We fixed this :-)


6.0.16.1353

Public | 2017-07-06

New

Now the update operation is cloaking the tree on…

Now the update operation is cloaking the tree on the server side instead of on the client, so only the needed tree is sent from the server to the client. This is important when the repository is huge and we are working only with a small part of it using cloaked, as the sent tree will be only a few MB (or even KB) instead of hundred of MB that could be the size for a tree with millions of items.

The tree is cloaked taking into account the same cloaked configuration than the client:

  • The cloaked.conf of the workspace

  • The cloaked.conf of the client

  • The cloaked.conf of the global configuration

now, the update and the checkin operations show t…

Windows GUI: now, the update and the checkin operations show theirs progress on Windows taskbar (starting from Windows 7). This way, you can still see the progress while doing other things.

This resolves the following UserVoice: use windows taskbar api

Bug

Big files (greater than 4MB by default) were down…

Big files (greater than 4MB by default) were downloaded even if the diff control was displaying a warning message acknowledging that the diff operation would take a long time. Now, this kind of files will be downloaded only when the "show diff" button is clicked. This affects the Pending Changes view, the Diff window and the Code Review window.

Some of the dialogs shown around the checkin and…

Windows GUI: Some of the dialogs shown around the checkin and the replica process did not have a parent. This could cause, if the user abandoned the GUI during a long running operation, that when said operation finished the user could find the GUI blocked because of a dialog that appeared elsewhere on the desktop, instead of on top of the Plastic SCM GUI. Fixed.

The Axosoft OnTime extension threw a NullReferenc…

The Axosoft OnTime extension threw a NullReferenceException while loading the stored configuration if no configuration file was present. Fixed.

the height of the "Undelete item" dialog (the one…

Gluon: the height of the "Undelete item" dialog (the one that lets you choose a path to recover a deleted file) was too short, almost hidding dialog buttons. Fixed.

An unexpected ActiPro license dialog arised when…

Visual Studio Plugin: An unexpected ActiPro license dialog arised when diffing a branch, a changeset or current pending changes. Fixed.


6.0.16.1307

Public | 2017-06-23

New

now, by default, if you have pending changes to b…

Windows, Linux (GTK) and macOS GUIs, and CLI tools: now, by default, if you have pending changes to be checked in in your workspace, the Plastic SCM clients (both the GUI clients and the cm tool) will prevent you from performing a merge.

We introduced this to avoid issues while undoing merges to newcomers, but if you are familiar with how merge works, it is safe to disable this extra check.

To do so, you can do it from the GUIs under Preferences / Diff and merge / Allow to merge with pending changes, or manually editing your client.conf file adding the following key:

<MergeWithPendingChanges>yes</MergeWithPendingChanges>

Before performing a merge, the GUIs will look for the same kind of changes that you have checked to look for on your "Pending changes" view preferences, meaning that, if you have a locally changed file, but you have the "Show changed items" option disabled on the Pending changes view, the GUI client will not prevent the merge even if the "Allow to merge with pending changes" option is disabled.

The cm CLI tool does not take into account the GUI settings, so it will look not only for checked out files, but also for locally changed, deleted, and moved files.

moved paths were rendered in the "pending changes…

Windows GUI: moved paths were rendered in the "pending changes" and "diff" views as follows:

/dir/foo.c to /dir/bar.c

This was hard to read, specially when the path was long.

Now we highlight the changed portion of the path to make it more obvious, using the same colors used in diffs.

NOTE: We only highlight diffs in moved paths when the changes/diffs are displayed as a list. When they are displayed as a tree, diffs are not displayed.

Bug

Running the merge operation in a workspace with c…

Running the merge operation in a workspace with cloaked rules left the workspace in an inconsistent state for some uncommon scenarios. This happened when processing all merge conflicts, leaving the file conflict of a cloaked item unresolved and then processing all merges again. The operation then failed and no pending changes could be undone or checked-in. Fixed.

The "bug" section was not correctly formatted in…

The "bug" section was not correctly formatted in the release notes viewer.


6.0.16.1271

Public | 2017-06-15

New

6.0 is now official!

6.0 is now official!

Build 1271 is the first 6.0 version to make it to the main downloads page.

It is being a while since we published 6.0.16.804 in Labs, back on January 23rd. While 6.0 has always been stable and ready for production, we decided to wait for some changes to be merged into 6.0 before going official.

This is a small summary of the major changes between 5.4 and 6.0:

  • Jet – the super-fast repository storage – unbeatable speed for all kinds of repos, shines with huge ones.

  • Floating licenses – the licensing solution for globally distributed enterprises.

  • Fast network protocol – reduces network footprint & enables backwards compatibility: 6.0 is now compatible with all versions since 5.0.

  • Heavily improved filter performance (cloaked, ignored, etc.)

  • Windows: 4k support + new workspace switcher design + multi-screen diff + integrated help links + non-locking checkin & update.

  • Linux/OS X: usability improvements, built-in SemanticDiff, merge explanation diagram, Branch Explorer filters plus a number of changes to create a smother experience.

  • All: Branch Explorer global configuration.

  • Visual Studio 2017 support.

  • Office 2016 support.

  • Continuous Integration: GoCD support, heavily improved TeamCity, Bamboo and Jenkins (pipeline support).

Jet - the super-fast repository storage.

Jet - the super-fast repository storage.

We have designed a new storage for our repositories. It is super-fast and scalable and it has been designed specifically to deal with the way in which Plastic handles data and metadata read and writes. As a special purpose storage, it is hard to beat in terms of efficiency.

We still support SQL databases (MySQL, SQL Server, SQLite, Firebird and a few others) but the goal is to enable Jet as default backend replacing SQLite and eventually make it the default even for large teams.

We created support for 2 different workloads in Jet:

  • Small server workload support: perfect to handle local repository replicas on laptops and workstations and even small team servers. It focuses on performance and not scalability.

  • High-scalability workload support: a more complex alternative focused on scalability workloads.

Right now, Jet is not enabled by default but you can use the admin tool on Windows to migrate your repos to Jet.

To configure Jet from scratch, simply create a jet.conf file in the same place where your current db.conf is located, with the following content:

basepath=the path to a directory where you want you Jet repos to live.

In terms of performance Jet runs circles around all the other alternatives. It is about 10 to 40 times faster than SQLite and SQL Server in metadata reads and writes, which makes the server up to 3-5 times faster in operations like big checkins. Jet is so fast that we were able to find other hotspots once the data layer was no longer the slow part, and we continue optimizing the server thanks to it. We will share the results of the benchmarks we ran both on Windows and Linux to compare to the other databases and also Git, which we now consistently beat even on Linux.

Floating license system.

Floating license system.

We have implemented a new system for companies who require floating licenses.

The traditional licenses so far are based on "named users". If you have 3 licenses, then John, Mike and Sara can access Plastic and consume the 3 licenses. If Sara leaves the company, then the admin will need to deactivate Sara to allow Paul to use the server.

With floating it is different. The server handles a number of free spots. On startup, all spots are free. And as soon as users access the server, spots are reserved. Spots stay reserved for a given time then can be renewed or taken by a different user. The floating licenses tend to reflect the number of active users in the system during the labor day. As such, the leased time is set to a minimum of 8 hours.

Consider the same scenario described above but this time with floating licenses. We have 3 spots. Then Sara accesses the server and one license spot is reserved and kept for a period of time. Later John does the same and then Mike. Suppose Paul wants to access immediately after: since you only have 3 licenses, his connection will be rejected. But as soon as Sara, Mike or John reserved spots expire, Paul will gain access, without administration intervention.

Floating licenses are great for teams with a central server and offices around the globe: if you have 20 users in Madrid and 20 in Seattle, you won’t need 40 licenses but only 20 floating ones.

Full backwards compatibility.

Full backwards compatibility.

A 6.0 client can connect to a 5.4 server, and a 5.4 client can connect successfully to a 6.0 server. This greatly simplifies upgrades because a "big-bang" deployment is no longer required.

Our intention is to keep backward compatibility even between major versions from now on.

Linux GUI Branch Explorer learns to filter.

Linux GUI Branch Explorer learns to filter.

A new "Branch explorer" submenu has been added to the Branch Explorer view context menu. It contains the previous "Go to branch base" menu item and three new options: 'Filter selected branches', 'Filter selected and related branches' and 'Filter pending merges for selected branches'. Each of them will refresh the Branch Explorer, showing only those branches affected by the selected filter. A new "Remove filter" button will appear. Clicking on it will clear the filter and refresh the Branch Explorer using the previous conditional filter settings (if present).

http://blog.plasticscm.com/2017/04/how-we-do-trun…

During the last six months version 6.0 didn’t stop evolving. We improved our internal working cycle (more here: http://blog.plasticscm.com/2017/04/how-we-do-trunk-based-development-with.html) and now releases are even more frequent, which means new features and improvements never stop arriving.

Take a look at the release notes of the 6.0 releases under Labs to get all the details, and don’t forget to check our new features at https://www.plasticscm.com/features/index.html


6.0.16.1264

Public | 2017-06-14

New

If the file system watcher (used to calculate the…

Linux (GTK) and Mac OS GUIs: If the file system watcher (used to calculate the current workspace changes) fails because it overran the maximum number of watches, the Pending Changes view will display a warning message informing the user about how to increase that limit.

The IDEA plugin has been upgraded to be compatibl…

IntelliJ IDEA plugin: The IDEA plugin has been upgraded to be compatible with IDEA 2016 and 2017. From now on only a single JAR file including all code dependencies will be published (instead of the previous plastic4idea.jar + core JAR pair). Support for older IDEA versions (8/11) has been dropped.

Since the release 6.0.16.960, the Plastic SCM GUI…

Windows, Linux (GTK) and Mac OS GUIs, and CLI tools: Since the release 6.0.16.960, the Plastic SCM GUIs (Windows, Linux, macOS) and the cm CLI tool are able to monitor the performance of the status operation, but you had to enable that feature through a setting in the client.conf file. Now, it is enabled by default.

To disable it, you must add to your client.conf configuration file the following key:

<ShowPerformanceWarnings>no</ShowPerformanceWarnings>

the number of calls to the server performed by th…

Cloud: the number of calls to the server performed by the move, rename and checkout operation has been reduced. For example, the move from the Plastic GUI items view is immediate.

New setting in remoting.conf to avoid the server…

New setting in remoting.conf to avoid the server to kill the thread attending a request when the client closes the connection.

How to configure:

  • Add AbortThreadIfSocketCloses="false" to your remoting.conf in the 'formatter type' entries.

Example:

formatter type="Codice.Channels.PlasticBinaryServerFormatterSinkProvider, plastictcpchannel" typeFilterLevel="Full"
Compression="sinklevel" SerializationObjectsAtSink="true" BufferPoolMax="10" AbortThreadIfSocketCloses="false"

The reason to add this is the following: we experienced crashes on servers on Linux. We think it is related to Mono 4.6, and it will be solved once we upgrade. We introduced the ability to cancel running requests, which is very useful. Suppose you run a cm find revs and then do CTRL-C. The server will keep processing. Killing the thread avoids that. But some Linux servers are having issues, so we add this new setting to disable this behavior.

Bug

the VCS status wasn't being updated after perform…

IntelliJ IDEA plugin: the VCS status wasn't being updated after performing any of the available operations. This led to data inconsistency across the IDE. Fixed.

The getstatus command was crashing when ran with…

CLI: The getstatus command was crashing when ran with the '-R' parameter in a directory with no controlled children. Fixed.


6.0.16.1168

Public | 2017-05-24

New

Starting from this release number, the default se…

Jet: Starting from this release number, the default server backend will be 'Jet' (database backend based on filesystem) for new installations of Plastic SCM.

(Previous installations will keep the configured settings).

From now on, the default communication protocol w…

From now on, the default communication protocol will be 'PlasticProto' (custom Plastic communication layer protocol), instead of .NET remoting based one.

This will reduce significantly network traffic, and it will improve overall performance too.

The 'editreview' trigger will be launched now eve…

Triggers: The 'editreview' trigger will be launched now every time a review comment is created, edited or deleted.

A new 'Resolved statuses' configuration entry has…

JIRA extension: A new 'Resolved statuses' configuration entry has been added to the JIRA configuration. This new entry will hold a comma-separated list of status names to be considered as 'resolved'. The default value is 'Done', so no issues with status 'Done' will be shown in the task list on the New Branch dialog by default.


6.0.16.1151

Public | 2017-05-19

New

Plastic Change Tracker service for Windows to pre…

An awesome new feature: Plastic Change Tracker service for Windows to precisely track file moves and renames beyond heuristic guessing.

It is in experimental mode at this point. This new service takes advantage of the file system internals to precisely track file renames and moves, something we could only guess before (quite well, but just an heuristic after all).

It means binary file renames and moves (where diffing does not apply) will be incredibly precise now.

How to use it:

  • You need to install the new service: plasticchangetrackerservice.exe --installservice. Then you can start it with --start or simply going to the service control panel.

  • Use plasticchangetrackerservice.log.conf to configure log if needed.

  • Enable it in your client.conf creating a new XML entry named: UseChangeTrackerService, set it to YES.

  • Restart your client.

  • Changes will only be precisely tracked while your client is open. You can do the changes directly in Explorer, but you need the Plastic client to be opened. We plan to improve this later.

  • How do you see it is working? Well, every move won't be "moved locally" but just "moved" now because the change is applied immediately.

Enjoy!

Bug

PlasticProtocol now supports sending the "author"…

PlasticProtocol now supports sending the "author" of commits for Git/P4 and fast-import syncs. So far only remoting supported this.

Fixed some UI issues when using high DPI screens:

Windows GUI: Fixed some UI issues when using high DPI screens:

  • Diff view tree columns grew over and over when you opened the diff view several times.

  • Replication Source panels in Branch Explorer grew over and over when you refreshed the Branch Explorer view several times.

  • The Replication form content was not fully visible.

The "Show in Branch Explorer" context menu option…

Windows GUI: The "Show in Branch Explorer" context menu option was not properly working for changesets, labels or branches from repositories different from the workspace repository. This happened when there were multiple Branch Explorer views in the same workspace.

The replica operation might leave duplicated bran…

The replica operation might leave duplicated branch names in the destination repository if the pushed/pulled branch name already existed in destination with a different parent id.


6.0.16.1125

Public | 2017-05-15

New

Improved the memory consumption of the diff edito…

Windows GUI: Improved the memory consumption of the diff editors by 25Mb-50Mb (depending on the scenario) when displaying .NET files (C#, VB).

Bug

Executable paths surrounded with single quotes we…

Triggers: Executable paths surrounded with single quotes weren't being properly identified. Fixed.

[code]cm status[/code] command: The [code]--cutig…

Command Line Interface: cm status command: The --cutignored option was acting as the --ignored option as well.

From now on, the --cutignored option will require the --ignored option to have effect. Example:

Let's say this is the cm status --private --ignored output in an example workspace:

PR /src
IG /src/lib
IG /src/lib/headers.h
IG /src/lib/implementations.c
PR /src/app
PR /src/app/main.c
PR /bin
IG /bin/checker.exe
IG /bin/libs
IG /bin/libs/moq.so

If the command cm status --private --cutignoredd is run, only private items will appear:

PR /src
PR /src/app
PR /src/app/main.c
PR /bin

However, if the --ignored argument is included (cm status --private --ignored --cutignored), ignored items will be displayed but the contents of ignored directories will be skipped:

PR /src
IG /src/lib
PR /src/app
PR /src/app/main.c
PR /bin
IG /bin/checker.exe
IG /bin/libs

6.0.16.1103

Public | 2017-05-10

New

Windows GUI: Repository-related views (such as 'repositories' view, 'create new repository' dialog, repository selection dialog and the server selection in the replication dialog) had their server text boxes replaced with a combo box containing a list of recently used servers. This makes easier for users to type in their desired server addresses.

Support for high DPI screens. Now, fonts, icons a…

Windows GUI: Support for high DPI screens. Now, fonts, icons and controls are correctly drawed when they are displayed in a high-res (retina) display.

Pending changes performance is now 40% faster wit…

Linux: Pending changes performance is now 40% faster with lots of privates (it affects both GUI and 'cm status' command). This is because we improved the path comparison performance. Disk-intensive operations will take advantage of this improvement too.

Implemented dynamic diff window functionality to…

Mac OS GUI: Implemented dynamic diff window functionality to make it easier for users to diff their code in multi-screen setups.

Users can now show the diffs from a branch or changeset, move the window to a second screen and the diffs will be updated once a different changeset or branch is selected. This is really useful to review changes.

The dynamic diff window will be updated every time a different branch or changeset is selected in any of the related views (Changesets view, Branches view, Branch Explorer view). It works for shelves too. Please have in mind that multiple selections will not update the dynamic diff window.

This behavior can be overriden by launching the diff operation while the shift key is pressed. Additionally, the dynamic diff window update will stop if there are multiple diff windows on display.

The filter in the 'Code Reviews' view is not perf…

Windows GUI: The filter in the 'Code Reviews' view is not performing server calls anymore. This caused the GUI to appear unresponsive when working with a remote server and the view contained a large number of code reviews. As a result, the filter is immediately applied and the GUI no longer freezes.

Bug

Changeset comments including international charac…

TeamCity plugin: Changeset comments including international characters were incorrectly displayed if the TeamCity server ran on a Windows machine. Fixed.

The checkin view had problems when it lost the fo…

Gluon: The checkin view had problems when it lost the focus while the checkin operation was performed. The two weird behaviors were:

    1. the checkin button did not work.
    1. the checkin progress was not hidden although the operation finished correctly. This was only an issue since release 6.0.16.1055.

Office plugins were not correctly installed. Now…

Office plugins were not correctly installed. Now it's fixed.


6.0.16.1078

Public | 2017-05-03

New

now, you can save a given revision of a file to y…

Gluon: now, you can save a given revision of a file to your computer. To do so, after selecting an item (both in "workspace explorer" and "configuration mode"), right click on a revision on the details panel on the right, and click the "Save this revision as..." menu item.

Improvements in ActiveDirectory servers working in LDAP mode. Now it is possible to:

  1. Configure the user using the UPN (userPrincipalName) or the name (samAccountName). Previously only the name was supported.

  2. Configure the attribute to display the user and group names. Previously only samAccountName was supported.

To configure the attribute used to display the name just add this setting to server.conf file (inside the ServerConfigData section):

<LdapSettings>
  <UserDisplayNameAttribute>distinguishedName</UserDisplayNameAttribute>
</LdapSettings>

the performance of the 'list repositories' operat…

Jet backend: the performance of the 'list repositories' operation has been improved.

the locks (exclusive checkout) resolution perform…

Jet backend: the locks (exclusive checkout) resolution performance has been improved.

Bug

using Jet backend with high-performance mode enab…

Jet backend: using Jet backend with high-performance mode enabled, commit a locked file was failing with the error 'The process cannot access the file 'Z:\jet\transaction\0bc91799-41af-4397-a910-e78f13ae4a90\items.dat' because it is being used by another process.'. Fixed.


6.0.16.1055

Public | 2017-04-25

New

now, "Checkin changes" is automatically refreshed…

Gluon: now, "Checkin changes" is automatically refreshed each time the window gets the focus. This way manual refresh is no longer needed.

Many users requested this so we are going to test how well it goes, although we are not big fans of auto-refresh ourselves ;-). If everything goes fine, we will enable this in the Plastic GUIs too.

the "Open with" and custom "Open with" menu items…

Windows GUI: the "Open with" and custom "Open with" menu items are now enabled for directories on disk. They are useful, for example, for opening a directory on software prepared to do so, such as some text editors.

You can add custom "Open with" options through the preferences dialog, under "Custom 'Open with...'".

now, the maximum file size to download generate t…

Gluon and Windows GUI: now, the maximum file size to download generate the preview of a file when that file is not loaded in the workspace (configure mode in Gluon, "Repository browser" mode in Windows GUI) is configurable. To do that, add the following key to your client.conf file:

<MaxPreviewFileSize>1048576</MaxPreviewFileSize>

The default value is 1 MiB (1048576 bytes). It means that, if the selected, non-loaded file size is more than 1 MiB, it won't be downloaded to generate its preview (but you will still be able to see its icon, if any, its size, and its attributes)

The filesystem watcher has been re-enabled and tu…

Linux (GTK) GUI and Command Line Interface: The filesystem watcher has been re-enabled and tuned up so it doesn't prevent the applications from exiting.

The application bundle has been renamed to Plasti…

Mac OS GUI: The application bundle has been renamed to PlasticSCM.app. The CLI scripts will be automatically updated accordingly.

Bug

the changeset coloring by replication source on t…

Windows GUI: the changeset coloring by replication source on the Branch Explorer was working erratically. Fixed.

Some icons couldn't be loaded if the computer is…

Windows GUI: Some icons couldn't be loaded if the computer is set to use the Turkish culture. Fixed.


6.0.16.1034

Public | 2017-04-19

Bug

Fixed a bug that prevented that outlining nodes w…

Windows GUI: Fixed a bug that prevented that outlining nodes were collapsed on diff. Also some outline nodes, for example C# properties were not expanded although they had differences. Now it's fixed.

The repositories view was displaying duplicate re…

The repositories view was displaying duplicate repository entries if the same server was included both as an automatic profile and inside the plastic.servers file. This also caused the repositories view to show an error message if it was set to Tree mode. Fixed.


6.0.16.1025

Public | 2017-04-18

New

now, the workspaces list on the "Switch workspace…

Gluon: now, the workspaces list on the "Switch workspace" window has the focus by default, so you can directly type in your keyboard to focus a workspace on the list.

Bug

Under some particular cases, the update operation…

Under some particular cases, the update operation could fail to update some files displaying the error message 'Destination array was not long enough'. Fixed

errors occurred when updating the remote git refe…

GitSync: errors occurred when updating the remote git references were not shown. Thus, the pushed commits could seem missing since the branch reference was not updated. Now, if a reference cannot be updated, the error message is correctly shown by the command line. Example of the new output:

Failed to push some refs:
- refs/heads/master -> branch is currently checked out

The branches view was displaying an inconsistent…

Windows GUI: The branches view was displaying an inconsistent behavior when it was set to Tree mode and the sorting column contained duplicated entries. Fixed.


6.0.16.1013

Public | 2017-04-12

New

We improved the way to switch workspaces. Now ins…

Windows GUI: We improved the way to switch workspaces. Now instead of tabs there is a button with the last N recently used workspaces (7 by default).

You can change this value by editing the "RecentWorkspacesCount" property in the guiclient.conf file, placed on ~/AppData/Local/plastic4 directory.

The overall performance of filters (ignored, cloa…

The overall performance of filters (ignored, cloaked...) has been improved. Manually edited rules were particularly affected, so a major increase in filter performance is expected for those cases. Several operations will take advantage of these improvements, such as 'status' (pending changes) or 'update'.

Bug

The pending changes view could have a wrong conte…

Linux (GTK) GUI and Mac OS GUI: The pending changes view could have a wrong content after a large merge operation if the time to calculate the pending changes view was slower than the merge process time. Fixed.

The loading of the 'Explore workspace' view could…

Gluon: The loading of the 'Explore workspace' view could fail on some corner cases if the workspace was not properly initialized. Fixed.

The workspace configuration was failing when the…

Gluon: The workspace configuration was failing when the workspace was not properly initialized and the server contents could not be loaded. Fixed

The 'Update forced' operation in the update repor…

Gluon: The 'Update forced' operation in the update report dialog was failing in some particular cases. It applied to errors coming from update operations that could not be applied. The related update forced dialog messages suggested to modify the workspace configuration and retry the update operation, but doing so led to a failure. Fixed.

The last write time of the storage files wasn't g…

Jet: The last write time of the storage files wasn't guaranteed to be correct on server stop. Fixed.

Building full patches in server checkout mode fai…

TeamCity plugin: Building full patches in server checkout mode failed if checkout rules were set. Fixed.

Fixed an unexpected error when uninstalling the V…

Installer: Fixed an unexpected error when uninstalling the Visual Studio package.


6.0.16.975

Public | 2017-04-04

New

Added support for Visual Studio 2017.

Visual Studio integration: Added support for Visual Studio 2017.

The checksum of the git pack files, which comes f…

GitServer: The checksum of the git pack files, which comes from a 'git push' operation, is verified before processing the package.

The "differences" window now remembers the size o…

Windows GUI: The "differences" window now remembers the size of the columns, and the sort column.

The annotate command now accepts a new --dateform…

CLI: The annotate command now accepts a new --dateformat=date_format_str argument. This enables users to explicitly set the desired output format for dates involved in the annotate command. The command will fall back to the OutputDateFormat value in the client.conf file if no --dateformat argument is found.

Bug

the undo checkout command was throwing a null poi…

Plugin core: the undo checkout command was throwing a null pointer exception. Fixed.

A error is thrown when you try to save changed fi…

Unity 3D plugin: A error is thrown when you try to save changed files and some of them are exclusively checked-out by someone else. Fixed.

If you closed the diff window while calculating d…

Windows GUI: If you closed the diff window while calculating differences, you could get a "Cannot access a disposed object" error. Now it's fixed.


6.0.16.960

Public | 2017-03-31

New

Now, the Plastic SCM GUI will measure the perform…

Windows, Linux (GTK) and Mac OS GUIs: Now, the Plastic SCM GUI will measure the performance while looking for pending changes on your workspace. If the GUI detects that the performance of the operation is not as good as expected, depending on the cause, it will give you advice on how to improve it.

Now, the [code]cm[/code] CLI tool will measure th…

CLI tools: Now, the cm CLI tool will measure the performance of the status operation. If it detects that the performance of the operation is not as good as expected, depending on the cause, it will give you advices about how to improve it (except if the --machinereadable or --xml flags are set).

the performance warnings can be enabled through t…

Configuration files: the performance warnings can be enabled through the client.conf file, adding the following key:

<ShowPerformanceWarnings>yes</ShowPerformanceWarnings>

The changesets view context menu includes a new o…

Linux (GTK) and Mac OS GUIs: The changesets view context menu includes a new option: "Diff with another changeset". It enables users to select a changeset in a context dialog and diff its contents with the selected changeset. This menu option is also available in the Branch Explorer when a single changeset is selected.

The branches view context menu includes a new opt…

Linux (GTK) and Mac OS GUIs: The branches view context menu includes a new option: "Diff with another branch". It enables users to select a branch in a context dialog and diff its contents with the selected branch. This menu option is also available in the Branch Explorer when a single branch is selected.

Bug

Changing the display options or the date filter i…

Linux (GTK) and Mac OS GUIs: Changing the display options or the date filter in the Branch Explorer view of a workspace window caused the rest of the workspace windows to load that configuration without notice or updating the GUI controls. Fixed.

Checkin operation with 'added' items and 'keep it…

Cloud and Jet: Checkin operation with 'added' items and 'keep items locked' preference enabled failed. Now it's fixed.

The P4 sync was failing with directories with the…

The P4 sync was failing with directories with the FileSystem permissions changed. Fixed.


6.0.16.947

Public | 2017-03-29

New

Queries for changes in the first builds of each n…

Bamboo plugin: Queries for changes in the first builds of each new plan will return an empty set. The improvement in the build time of that particular case is specially remarkable when creating a new plan for an existing repository with a long history (thousands of changesets).

The GPG keys used to sign the repositories have b…

Linux: The GPG keys used to sign the repositories have been updated, as they reached their expiration date. If you use a Debian-based distro, please run the following command to update your local apt-key list:

wget https://www.plasticscm.com/plasticrepo/plasticscm-common/${DIST_NAME}/Release.key -O - | sudo apt-key add -
wget https://www.plasticscm.com/plasticrepo/plasticscm-latest/${DIST_NAME}/Release.key -O - | sudo apt-key add -

Replace ${DIST_NAME} with the distro name that applies to your current system: Debian_6.0, Debian_8.1 or Ubuntu_14.04.

A new Plastic SCM plugin is available for GoCD. I…

GoCD plugin: A new Plastic SCM plugin is available for GoCD. It allows Plastic SCM to be set up as a pipeline material.

Bug

Since BL808 (6.0) the listlocks command was compl…

Since BL808 (6.0) the listlocks command was complaining that the user didn't have view permissions. The server was checking view permissions on the server instead of the repo. Fixed.

Fixed an error when open a project from Plastic S…

Visual Studio integration: Fixed an error when open a project from Plastic SCM.

The build patch operation of server-side checkout…

TeamCity plugin: The build patch operation of server-side checkouts was building incorrect patches when there were moved or deleted changes. Fixed.

When a checkin operation failed and couldn't be c…

Jet backend: When a checkin operation failed and couldn't be completed, the next checkin operations on the same branch failed with the error 'The object is currently locked. Try later...'. Fixed.


6.0.16.920

Public | 2017-03-22

New

dynamic diff window to help diffing code in multi…

Windows GUI: dynamic diff window to help diffing code in multi-screen setups.

You can show the diffs from a branch or changeset, move the window to a second screen, and the diffs will be updated when you select a different changeset or branch. This is super useful to review changes.

The diff window will be updated if you select a different branch in Branch Explorer or the branches view, and same for changesets. It works for shelves too.

You can skip this behavior launching the diff window using Shift + DoubleClick. When there are more than one "dynamic" diff, the diffs won't be updated.

When right clicking an item in any view (items, b…

Mac OS GUI: When right clicking an item in any view (items, branches, changesets) the selection did not change. Some users requested to change this behavior.

Now, when you right click an item in a view, the selection is changed, and then its context menu is displayed.

Added support to find locally moved, renamed and…

Eclipse plugin: Added support to find locally moved, renamed and deleted files. You can find these options clicking the "options" buttons in the pending changes view.

Each build will publish environment variables con…

Jenkins plugin: Each build will publish environment variables containing the data of the built changeset for each configured workspace. These are the exposed variables of the main workspace for the project:

PLASTICSCM_CHANGESET_ID: Number of the currently built changeset
    PLASTICSCM_CHANGESET_GUID: GUID of the currently built changeset
    PLASTICSCM_BRANCH: Name of the branch in Plastic SCM
    PLASTICSCM_AUTHOR: Name of the user who created the currently built changeset
    PLASTICSCM_REPSPEC: The configured repository specification for the current build.

Additional workspaces will include their position in the list, like this:

PLASTICSCM_1_CHANGESET_GUID
    PLASTICSCM_5_AUTHOR
    PLASTICSCM_9_CHANGESET_ID

etc.

The checkin result will return the created change…

Command Line Interface: The checkin result will return the created changesets list as a comma-separated list when the --machinereadable parameter is present.

Bug

Branch detection was only working for direct chil…

Bamboo plugin: Branch detection was only working for direct children of the main plan branch. This restriction has been removed.

The silent merge (using the Plastic SCM MergeTool…

Bamboo plugin: The silent merge (using the Plastic SCM MergeTool) wasn't working anymore. Fixed

Performing a merge operation using the [code]--no…

Linux (GTK) GUI and Mac OS GUI: Performing a merge operation using the --nointeractiveresolution parameter didn't have any effect. Fixed.

Clicking an object on the Branch explorer seldom…

Windows GUI: Clicking an object on the Branch explorer seldom displayed an error message regarding an index out of range error. Fixed.

Dialogs with multi-line text areas didn't have te…

Windows GUI: Dialogs with multi-line text areas didn't have text wrapping enabled. This affected the checkin comments text field, the create branch dialog, the new label/attribute dialog and the code review comments dialog. Fixed.

The Branch Explorer filters where being applied a…

Windows GUI: The Branch Explorer filters where being applied after drawing the diagram, so they were not correctly shown until the Branch Explorer was refreshed. Fixed.

When the encryption keys were incorrectly set, th…

Cloud Server: When the encryption keys were incorrectly set, the decryption process was failing with the following misleading error message: 'Padding is invalid and cannot be removed'.

From now on, a more descriptive message will be shown: 'Data cannot be decrypted, please ensure your encryption key password is correct'.

Cloud Edition was incorrectly asking for credenti…

Cloud Edition was incorrectly asking for credentials, when it already had the right ones configured.

Trying to delete or move the currently loaded cha…

Trying to delete or move the currently loaded changeset in the workspace with privates incorrectly warned of pending changes. Fixed.

Under certain circumstances, the sync replication…

Sync View: Under certain circumstances, the sync replication view could fail with the following error: 'An item with the same key has already been added'.

This error could happen since 5.4.16.809 on 5.4 versions and since 6.0.16.804 on 6.0 versions. Now it's fixed.


6.0.16.866

Public | 2017-03-10

New

This is the seventh release of the new Plastic SC…

This is the seventh release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

Bug

The 'Create'/'Rename' dialogs of the 'Workspaces'…

Mac OS GUI: The 'Create'/'Rename' dialogs of the 'Workspaces' view and the 'Repositories' view allowed tabs to be inserted at the beginning or end of the text input fields. Fixed.

code folding was wrongly enabled for the merge, c…

Windows Mergetool: code folding was wrongly enabled for the merge, causing drawing errors when code regions were folded. Fixed.

An error message containing "The object is curren…

Server: An error message containing "The object is currently locked. Try later." was shown every time two users tried to perform an exclusive checkout on the same branch at the same time. Fixed.


6.0.16.857

Public | 2017-03-03

New

This is the sixth release of the new Plastic SCM…

This is the sixth release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

Windows GUI: Added links to the documentation in all views (items, branches, changesets, ...). When you click the "information" button in the toolbar, a new "learn more" links to the online documentation.

Improved merge view performance with very big wor…

Windows GUI: Improved merge view performance with very big workspaces.

  • Without the performance improvement:
Time populating 189344 conflicts: 56.9sec
Memory populating 189344 conflicts: Ini: 394.6Mb, End: 1.41Gb, Increase: 1.03Gb
  • With the performance improvement:
Time populating 189344 conflicts: 6.8sec
Memory populating 189344 conflicts: Ini: 398.1Mb, End: 438.2Mb, Increase: 40,1Mb

The Plastic SCM plugin for Office now supports Of…

Office plugin: The Plastic SCM plugin for Office now supports Office 2016 (Word, Excel and PowerPoint)

A retry mechanism was implemented so any failed c…

Jenkins plugin: A retry mechanism was implemented so any failed command will be retried two times. This should solve any issues caused by network micro-cuts, for instance.

Buttons re-designed. The actions in the views ('i…

Mac OS GUI: Buttons re-designed. The actions in the views ('items', 'pending changes', etc.) were difficult to find because we used icons instead of native buttons.

The list of statuses considered as 'pending' (aff…

Axosoft extension: The list of statuses considered as 'pending' (affecting the list of tasks displayed on the Create Branch dialog) is now editable as a comma-separated values string on the Axosoft configuration.

Implemented "Create workspace from this repositor…

Linux (GTK) GUI and Mac OS GUI: Implemented "Create workspace from this repository" action. The action is available from the repository context menu. Additionally, when you type a server in the repositories view and press enter key, the view is now refreshed.

Experimental support for organizations in the ser…

Experimental support for organizations in the server. Starting the server with 'plasticd --organizations=organizations.conf' allows you to have independent sets of repositories (organizations).

'organizations.conf' is a text file with an organization name on each (or empty line for empty (default) organization).

  • What does it mean? You can do things like:
cm mkrep repo00@org1@localhost:8087
cm mkrep repo00@org2@localhost:8087
cm mkrep repo00@org3@localhost:8087

And org1, org2 and org3 (the 3 on organizations.conf) will be 3 independent organizations with different sets of repositories and independent permissions (repository server permissions will affect to each of the organizations independently of each other).

Now the Branch Explorer can be globally configure…

Branch Explorer global configuration: Now the Branch Explorer can be globally configured for all users adding a branchexplorer.conf file in the "global configuration files repository" (plastic-global-config) under the "allrepos" directory. More about global config here.

This feature closes the UserVoice request Create a master conditional format that can be pushed from the server to all users.

A global branchexplorer.conf file looks as follows:

[Default]
filters.conditional.numrules=1
filters.conditional.rule0.branches_query=attribute = 'status' and attrvalue = 'RESOLVED'
filters.conditional.rule0.description=Unresolved branches
filters.conditional.rule0.enabled=true
filters.conditional.rule0.related.branches=None
filters.conditional.rule0.type=exclusion_rule
  • REMARK: use rule0 if you only have one rule. Start on 0 and continue, or it won't work.

While a local branchexplorer.conf contains user-specific information too:

[Default]
display.attributes.visible=true
display.changestats.visible=true
display.extension.visible=true
display.navigator.visible=false
display.options.branch_level_filter=-1
display.options.changeset_color=1
display.options.dag_mergelinks=false
display.options.draw_branches=true
display.options.draw_crossbranch_changeset_links=true
display.options.draw_labels=true
display.options.draw_merge_links=true
display.options.draw_only_relevant_changesets=false
display.options.draw_taskinfo=true
display.options.end_date=0
display.options.end_date_enablement=false
display.options.full_branch_names=true
display.options.layout_mode=0
display.options.show_parent_to_child_arrows=false
display.options.start_date=636136983268496003
display.options.visible=false
display.properties.legend=false
display.properties.visible=true
display.properties.zoom=0,9999999
filters.conditional.numrules=1
filters.conditional.rule0.branches_query=
filters.conditional.rule0.color=0,128,192
filters.conditional.rule0.description=Unresolved branches
filters.conditional.rule0.enabled=true
filters.conditional.rule0.related.branches=None
filters.conditional.rule0.type=non_integrated_branches
filters.conditional.visible=true

The GUIs will combine the global and local filters. The resulting configuration for filters will be as follows:

filters.conditional.numrules=2
filters.conditional.rule0.branches_query=attribute = 'status' and attrvalue = 'RESOLVED'
filters.conditional.rule0.description=Unresolved branches
filters.conditional.rule0.enabled=true
filters.conditional.rule0.related.branches=None
filters.conditional.rule0.type=exclusion_rule
filters.conditional.rule1.branches_query=
filters.conditional.rule1.color=0,128,192
filters.conditional.rule1.description=Unresolved branches
filters.conditional.rule1.enabled=true
filters.conditional.rule1.related.branches=None
filters.conditional.rule1.type=non_integrated_branches

As a result of the combined rules in the example above:

  • Users will NOT see branches which the 'status' attribute is set to 'RESOLVED' (because the rule type is 'exclusion_rule'). (Global config).

  • Use will see the branches that are not merged (type 'non_integrated_branches') colored blue (RGB 0,128,192). (Local config).

How to create a branchexplorer.conf global configuration file:

  • Go to your GUI and set some preferences.

Then, find the generated configuration file at:

  • Windows: %USERPROFILE%/AppData/Local/plastic4/branchexplorer.cfg

  • Linux and macOS: $HOME/.plastic4/branchexplorer.conf

Copy the resulting file to the global configuration repository.

What can be globally configured?

  • Only the filters and conditional format rules can be globally configured.

  • The user-specific configuration, such as displaying full branch names, merge links, the start and end date, and so on, will always prevail from the local configuration file. If these settings are set globally, they will be ignored during the "merge" of global and local rules.

Bug

The size position and size was not remembered bet…

Windows GUI: The size position and size was not remembered between application restarts. Now it's fixed.

Fixed the following error diplaying the preview o…

Widows GUI and Gluon: Fixed the following error diplaying the preview of image files (jpg, png, gif, etc.):

Error generating the preview file <file>. The file already exists.

Fixed a cut tag in the merge-needed dialog (the d…

Windows GUI: Fixed a cut tag in the merge-needed dialog (the dialog that appears during a checkin, when a merge is needed).

Branch Explorer lost focus after refresh. Fixed.

Windows GUI: Branch Explorer lost focus after refresh. Fixed.

Fixed an "Index out of bounds" exception in the a…

Windows GUI: Fixed an "Index out of bounds" exception in the annoatate view. This can happen while annotating a file that have a big history.

The New Branch dialog was incorrectly using the D…

Axosoft extension: The New Branch dialog was incorrectly using the Defect prefix regardless of the actual issue type. Fixed.

The URL no longer needs to end with a slash ('/')…

Axosoft extension: The URL no longer needs to end with a slash ('/') to allow the extension to work.

The checkin result wasn't being logged in the Axo…

Axosoft extension: The checkin result wasn't being logged in the Axosoft issue custom field. Fixed.

TeamCity was unable to store the last affected ch…

TeamCity plugin: TeamCity was unable to store the last affected changeset for each build when the VCS root was configured to use long repository/server names. Fixed.

Cloud Edition incorrectly prompted cloud credenti…

Cloud Edition incorrectly prompted cloud credentials even when the default ones were set. Fixed.

A failed polling operation caused builds to be la…

Jenkins plugin: A failed polling operation caused builds to be launched. Fixed.

The checkout directory in the Source Code Checkou…

Bamboo plugin: The checkout directory in the Source Code Checkout task was being ignored. Fixed.


6.0.16.812

Public | 2017-02-21

New

This is the fifth release of the new Plastic SCM…

This is the fifth release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

now, both file and directory sizes are displayed…

Gluon: now, both file and directory sizes are displayed on the "configure workspace" mode. This way, you can know the size of the files and directories before downloading them from the server.

Our plugin supports Pipelines now! You can either…

Jenkins plugin: Our plugin supports Pipelines now! You can either use the form included in the snippet generation or write the command yourself.

These are the supported parameters:

cm branch: '/main', changelog: true, poll: true, repository: 'default', server: 'localhost:8087',
useUpdate: true, workspaceName: 'Jenkins-${JOB_NAME}-${NODE_NAME}'

Bug

the size of modified and checked out files was no…

Gluon: the size of modified and checked out files was not correctly displayed in the workspace explorer. The size displayed was always the one from the last time the file was checked-in, instead of the real one from your disk. Fixed.

The visual diff of the analyze refactors function…

Windows GUI: The visual diff of the analyze refactors functionality from the diff window was broken. Fixed.


6.0.16.810

Public | 2017-02-09

New

This is the fourth release of the new Plastic SCM…

This is the fourth release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

Plastic SCM for Mac OS now have embedded Semantic…

Mac OS GUI and Mergetool: Plastic SCM for Mac OS now have embedded Semantic Diffs included!

Differences are now editable in the 'Pending chan…

Mac OS GUI: Differences are now editable in the 'Pending changes' and 'Diff branch/changeset' views. Differences between left/right contributor can be deleted/restored by using the two button bars attached to each difference.

(Editions can be saved when the right revision is the same as the loaded one in the workspace).

Multiple improvements in the 'Branch Explorer' vi…

Windows GUI, Linux (GTK) GUI, and Mac OS GUI: Multiple improvements in the 'Branch Explorer' view:

  • Now, the first result for a search in the Branch Explorer is guaranteed to be the exact one (if it exists).

  • Additionally: the Branch Explorer multi-selection was improved back on release 5.4.16.791: when you searched for an object on the Branch Explorer, it did not affect your selection, but the properties panel was not being updated with the information from your search results. Now, it shows again the information of the current search result as well, and not only the information of the last selected object, without affecting the selection.

With these two improvements, it is easier to search for changesets, labels, and branches, correctly identifying the one you want, to perform actions like diffing them.

Differences for big files are now calculated on d…

Linux (GTK) GUI and Mac OS GUI: Differences for big files are now calculated on demand. A new panel with a button to start calculating differences is shown when a big file is focused.

The default threshold to consider a big file is set to 2MB, but this threshold can be overriden by setting the following entry in the mergetool.conf config file:

big_file_size=NumberOfBytes

Example (set threshold to 3MB):

big_file_size=3145728

REMARK: The diff control will still show regular embedded differences for non-big files.

Two new context menu options have been added to t…

Linux (GTK) GUI and Mac OS GUI: Two new context menu options have been added to the 'Pending Changes' view menu:

  • Apply local change: converts any local change to a controlled change. For instance, a locally changed file will become a checked-out file and private file will become an added file.

  • Search matches: applies locally moved files from a private/local delete pair when Plastic can't automatically detect them as such.

Added Unity Smart Merge as a mergetool to the pre…

Mac OS GUI: Added Unity Smart Merge as a mergetool to the pre-configured tools. To configure it in Plastic SCM:

1 - Go to the "Merge tools" tab of the preferences window.

2 - Click on the "Add" button

3 - For the file type, select "Custom extension" and type ".unity".

4 - From the "External tool" dropdown list, select UnitySmartMerge.

5 - Click "Save".

Repeat steps 2 to 5, changing the ".unity" extension for ".prefab", to finish configuring Unity Smart Merge in Plastic SCM.

By default, if Unity Smart Merge finds any conflict that cannot be automatically solved, it will prompt you to manually solve it using macOS' FileMerge utility. You can configure Unity Smart Merge to use the mergetool shipped alongside Plastic SCM (a.k.a. macmergetool), instead of FileMerge. To do so:

Edit the file /Applications/Unity/Unity.app/Contents/Tools/mergespecfile.txt, adding these two lines to tell Unity Smart Merge to use macmergetool:

unity use "/usr/local/bin/macmergetool" "-s=%r" "-d=%l" "-b=%b" "-o=%d"
prefab use "/usr/local/bin/macmergetool" "-s=%r" "-d=%l" "-b=%b" "-o=%d"

You can learn more about Unity Smart Merge here: https://docs.unity3d.com/Manual/SmartMerge.html

Bug

while performing a merge with conflicts on a Xlin…

Linux (GTK) GUI and Mac OS GUI: while performing a merge with conflicts on a Xlinked repository, merging a single item from the main repository resulted in all the conflicts from the Xlinked repositories to be processed at the same time. Fixed.

while performing a merge with conflicts inside a…

Linux (GTK) GUI and Mac OS GUI: while performing a merge with conflicts inside a xlinked repository nested inside another xlinked repository, those conflicts were not being shown. Fixed.

Push/pull operations were failing since version 6…

Windows GUI: Push/pull operations were failing since version 6.0.16.804, displaying a timeout error message. This issue was related to a database query that could take several minutes in big repositories. It has been optimized down to a few milliseconds, so the push/pull error has been consequently fixed.

Since Release 6.0.16.808 the server threw an exception on startup:

ERROR RepositoryHandler - Error trying to retrieve ACLs for repository default (repId:1).
User unknown EVERY_USER_OR_GROUP

Fixed now.

Merged releases


6.0.16.808

Public | 2017-02-01

New

This is the third release of the new Plastic SCM…

This is the third release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

the update operation doesn't lock the GUI since i…

Windows GUI: the update operation doesn't lock the GUI since it is not modal anymore.

The merge view now includes a Merge Explanation d…

Linux (GTK) GUI: The merge view now includes a Merge Explanation diagram to display the requested merge on a filtered Branch Explorer.

The 'selected branches' filter in the 'Branch Exp…

Linux (GTK) GUI and Mac OS GUI: The 'selected branches' filter in the 'Branch Explorer' view will be remembered when the application is closed and reopened.

The Merge Explanation diagram in the Merge view n…

Mac OS GUI: The Merge Explanation diagram in the Merge view now allows users to switch between all repositories involved in the merge to preview the results.

Bug

The 'find in files' search results were not visib…

Windows GUI: The 'find in files' search results were not visible in the diff window when the user moved the top splitter before performing the search. Now it's fixed.

Showing annotate of a C# file in the diff view wa…

Windows GUI: Showing annotate of a C# file in the diff view was too slow when a file have some methods/using's/regions collapsed. Now it performs good.

The history view disappeared from the details pan…

Gluon: The history view disappeared from the details panel after performing a check-in operation (and then closing the check-in view) from the Workspace Explorer. Now it's fixed.


6.0.16.807

Public | 2017-02-01

New

This is the second public release of the new Plas…

This is the second public release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

the checkin operation no longer locks the GUI. No…

Windows GUI: the checkin operation no longer locks the GUI. Now a panel with the progress information is displayed on the bottom of the window, so the user can continue using Plastic.

The server-side checkout will now set up a worksp…

TeamCity plugin: The server-side checkout will now set up a workspace to download the first patch contents.

Bug

The agent-side checkout failed if the previous bu…

TeamCity plugin: The agent-side checkout failed if the previous build had left changed files in the workspace. Fixed.

Several fixes related to the client trying to contact the default server wrongly:

  • cm lrep was always trying to contact the default server if it was in LDAP mode, even when the specified server to list repos from was a different one. Fixed.

  • cm lrep was trying to solve the users even when they were not going to be printed. Fixed.

  • cm lrep tried to solve the users from the default server, which is wrong. Fixed. It now uses the specified server.

  • cm li didn't work if the default server was not reachable, even if the user specified a different one on the CLI. Fixed.

  • cm update tried to contact the default server wrongly. Fixed.

The git fetch/pull operation failed in scenarios…

GitServer: The git fetch/pull operation failed in scenarios with certain latency between the git client & gitserver. The error showed by the git client was an 'early EOF index-pack failed' error. Fixed.

replication progress didn't show MB during data t…

Windows GUI: replication progress didn't show MB during data transfer with PlasticProto. Fixed.

Merged releases


6.0.16.804

Public | 2017-01-23

New

This is the first public release of the new Plast…

This is the first public release of the new Plastic SCM 6.0 series. It includes important core improvements and features. It is published in the "labs" channel instead of the official one because there are some important design changes still to be delivered, although it is stable enough to be used in production.

Jet - the super-fast repository storage.

Jet - the super-fast repository storage.

We have designed a new storage for our repositories. It is super-fast and scalable and it has been designed specifically to deal with the way in which Plastic handles data and metadata read and writes. As a special purpose storage, it is hard to beat in terms of efficiency.

We still support SQL databases (MySQL, SQL Server, SQLite, Firebird and a few others) but the goal is to enable Jet as default backend replacing SQLite and eventually make it the default even for large teams.

We created support for 2 different workloads in Jet:

  • Small server workload support: perfect to handle local repository replicas on laptops and workstations and even small team servers. It focuses on performance and not scalability.

  • High-scalability workload support: a more complex alternative focused on scalability workloads.

Right now, Jet is not enabled by default but you can use the admin tool on Windows to migrate your repos to Jet.

To configure Jet from scratch, simply create a jet.conf file in the same place where your current db.conf is located, with the following content:

basepath=the path to a directory where you want you Jet repos to live.

In terms of performance Jet runs circles around all the other alternatives. It is about 10 to 40 times faster than SQLite and SQL Server in metadata reads and writes, which makes the server up to 3-5 times faster in operations like big checkins. Jet is so fast that we were able to find other hotspots once the data layer was no longer the slow part, and we continue optimizing the server thanks to it. We will share the results of the benchmarks we ran both on Windows and Linux to compare to the other databases and also Git, which we now consistently beat even on Linux.

Floating license system.

Floating license system.

We have implemented a new system for companies who require floating licenses.

The traditional licenses so far are based on "named users". If you have 3 licenses, then John, Mike and Sara can access Plastic and consume the 3 licenses. If Sara leaves the company, then the admin will need to deactivate Sara to allow Paul to use the server.

With floating it is different. The server handles a number of free spots. On startup, all spots are free. And as soon as users access the server, spots are reserved. Spots stay reserved for a given time then can be renewed or taken by a different user. The floating licenses tend to reflect the number of active users in the system during the labor day. As such, the leased time is set to a minimum of 8 hours.

Consider the same scenario described above but this time with floating licenses. We have 3 spots. Then Sara accesses the server and one license spot is reserved and kept for a period of time. Later John does the same and then Mike. Suppose Paul wants to access immediately after: since you only have 3 licenses, his connection will be rejected. But as soon as Sara, Mike or John reserved spots expire, Paul will gain access, without administration intervention.

Floating licenses are great for teams with a central server and offices around the globe: if you have 20 users in Madrid and 20 in Seattle, you won’t need 40 licenses but only 20 floating ones.

Full backwards compatibility.

Full backwards compatibility.

A 6.0 client can connect to a 5.4 server, and a 5.4 client can connect successfully to a 6.0 server. This greatly simplifies upgrades because a "big-bang" deployment is no longer required.

Our intention is to keep backward compatibility even between major versions from now on.

Optimization during connection creation.

Optimization during connection creation.

Now connections are cached by server and not by full url. It means that whether you invoke the "branch handler" or the "item handler" you can still reuse the same connection.

Small performance improvements in Plastic servers…

Small performance improvements in Plastic servers URL parsing to avoid doing string operations again and again.

The 'Update report' dialog has been redesigned.

Windows GUI, Linux (GTK) GUI and Mac OS GUI: The 'Update report' dialog has been redesigned.

The error message for each update conflict has been moved to a text area on the right hand side of the dialog for better readability.

Merge Explanation diagram.

OS X: Merge Explanation diagram.

The merge view now includes a Merge Explanation diagram to display the requested merge on a filtered Branch Explorer.

OS X server icon now launches documentation.

OS X server icon now launches documentation.

Opening the server application bundle (by double-clicking on its icon or otherwise) will now open a descriptive website detailing the available administration/configuration actions on Mac.

save file from history.

Linux and OS X GUIs: save file from history.

[link]https://plasticscm.uservoice.com/forums/15467-general/suggestions/15555477-add-an-option-to-save-a-file-from-the-history-scre UserVoice: add an option to save a file from the history screen[\link]

Now, it is possible to save a given revision of a file from the History view. To do so, while browsing the history of a file:

  • Right click on the revision you want to save

  • Select the "Save this revision as..." menu item

  • Choose a destination for the revision and confirm the operation

open files in the file manager.

Linux and OS X GUIs: open files in the file manager.

You can now directly open a file or directory in your default File Manager. To do that, right-click on an item on the "Items" view, or in the "Pending changes" view, and select "Reveal in Finder" if you use OS X, or "Open in explorer" if you use a GNU/Linux system.

Linux GUI Branch Explorer learns to filter.

Linux GUI Branch Explorer learns to filter.

A new "Branch explorer" submenu has been added to the Branch Explorer view context menu. It contains the previous "Go to branch base" menu item and three new options: 'Filter selected branches', 'Filter selected and related branches' and 'Filter pending merges for selected branches'. Each of them will refresh the Branch Explorer, showing only those branches affected by the selected filter. A new "Remove filter" button will appear. Clicking on it will clear the filter and refresh the Branch Explorer using the previous conditional filter settings (if present).

PLASTIC_CHANGESET.

New after-checkin trigger environment variable: PLASTIC_CHANGESET.

The after-checkin client side trigger gains a new environment variable: 'PLASTIC_CHANGESET', which reflects the cset number of the changeset created after the checkin operation.

You can read more about the Plastic SCM triggers in the documentation [link]https://www.plasticscm.com/documentation/triggers/plastic-scm-version-control-triggers-guide.shtml[\link]

custom field is now optional.

JIRA extension: custom field is now optional.

[link]https://plasticscm.uservoice.com/forums/15467-general/suggestions/14830797-jira-integration-make-custom-field-id-optional UserVoice: JIRA integration - make Custom Field ID optional[\link]

The custom field ID for Plastic SCM in JIRA is now optional. If it is not set in the configuration, Plastic SCM will not log any information concerning the checkin into JIRA's related issue. The user can still benefit from JIRA integration while creating branches from JIRA issues, or from browsing JIRA issues from the Branch Explorer.

Bug

when the branch name was too long, the diff windo…

Windows GUI: when the branch name was too long, the diff window displayed it overlapping the branch GUID in the header of the diff window. Fixed.

The diff view in the pending changes view was col…

OS X GUI: The diff view in the pending changes view was collapsed (not visible) sometimes after closing and reopening the UI. Now it's fixed.

The "differences" button was not correctly enable…

ImageDiff: The "differences" button was not correctly enabled sometimes when showing image differences in the pending changes view or the diff view.

Version tree 2D was showing a null reference erro…

Windows GUI: Version tree 2D was showing a null reference error when clicking on a branch and the differences panel was visible. Fixed.

Fixed "an error occurred processing your request"…

Windows GUI: Fixed "an error occurred processing your request" when launching annotations from the diff view.

fixed progress in replica.

Linux and OS X GUI: fixed progress in replica.

The progress indicator for the current stage of a replica was being hidden after a try. Fixed: if the replica operation is retried, the progress indicator for the current operation is shown again.

the application got stuck right before exit. Fixe…

GTKMergeTool: the application got stuck right before exit. Fixed.

Merged releases