Release Notes

Public

9.0.16.4995: Feb 09 2021

New

All platforms - P4Sync: The Perforce importer now supports multiple branches!

You can finally import your depot with branches/streams from P4 to Plastic SCM.

How to do it? You just need to use the 'p4multibranch' source in the 'cm sync' command:

Usage:

cm sync <repspec> p4multibranch <p4server> --mainbranch=<main_branch_folder> --branchesfolder=<branches_folder> --user=<usr_name> --pwd=<password>

Example:

cm sync plastic-repo p4multibranch p4server:1666 --mainbranch=//depot/main --branchesfolder=//depot --user=user --pwd=mypwd

The command needs to explicitly know what p4 folder matches with the main branch and what p4 folder includes the rest of your branches folders.

Example. With the following depot structure:

//depot/project/dev
//depot/project/release-01
//depot/project/release-02

where //depot/project/dev is the main branch folder and //depot/project/release-01 & //depot/project/release-02 are also branch folders. The command should receive the following parameters (notice that these depot paths don't end with /...):

--mainbranch=//depot/project/dev --branchesfolder=//depot/project

Only the pull/import operation is implemented so far. It means you can import changes from P4 to Plastic, but not export changes from Plastic to P4. But... don't worry, we are working on it!

Know issues:

* The sync ignores the changelists that contain changes of different branches (or what we consider different branch folders) in the same changelist. Check 'Changelist with changes in multiple branches' appendix.

* The branch starting point is wrongly calculated when the changelist used to create the branch (populate/integrate commands) only contains delete operations. In this scenario, we use as starting point the closest parent changelist with any change different than a delete.

* The progress of the changelists to pull can be improved. If the last changelist in the depot is 500, we say that we are pulling 500 changelists although there are big gaps in the ids and, finally, we only import 100. This works this way to avoid requesting all the changelists at once at the beginning (it can be slow and error prone).

* The sync operation can say that there are new changelists to pull, although it later pulls nothing if there are new changelists in the depot that apply to paths not related to what's being synchronized.

* The sync operation can leave some empty directories in Plastic. Since p4, doesn't handle directories, when all files are removed the directory doesn't exist anymore.

Restrictions:

* The branches are always created in Plastic using the full content of the starting point. It means, if only a subdirectory of //depot/project/main/...@24 is branched in P4, we will see the whole content under //depot/project/main/... in Plastic.

* The branches created from custom configurations doesn't keep this custom configuration in Plastic. A branch always starts from an existing and defined configuration (changeset) in Plastic. So, the importer will choose only one specified path@changelist configuration as base. Check 'Branch from different configurations' appendix.

* net.parallel.max P4 setting must be set (to a value higher than 1) to enable parallel download of contents while syncing. However, in those scenarios where the user is not a super user, parallel processing won't be enabled by default as it requires to check a p4 variable and it will fail in this case. The workaround is asking a super user (usually a company admin) to set both variables: net.parallel.max and net.parallel.threads and these values will be used during the sync. You can also force the number of threads to download data from p4 by using the parameter --p4threads=X.

Pending to implement:

* The sync operation only pulls changes from Perforce. It doesn't push changes from Plastic to Perforce.

* Labels are currently ignored, not pushed or pulled.

Appendix:

1. Changelist with changes in multiple branches

> p4 describe 51
Change 51 by ruben@DESKTOP-DOR5NB4 on 2021/02/02 12:29:06

changelist with changes in multiple branches

Affected files ...

... //depot/main/code/botlib/aasfile.h#2 edit
... //depot/task006/code/botlib/aasfile.h#2 edit
... //depot/task007/code/botlib/aasfile.h#2 edit

2. Branch from different configurations

> p4 integrate //depot/project/main/code/...@40 //depot/project/new-branch/code/...
> p4 integrate //depot/project/task/lib/...@100 //depot/project/new-branch/lib/...

New

Windows - Gluon: File Plastic Links won't fail when are created with ssl or other supported protocol

When the server is configured with a ssl or other protocol connection the file plastic link included it at the uri but Gluon wasn't able to open it. Now these generated links can be openend correctly.

Also fixed links with child repositories. See the examples of these corrections:

plastic://ssl://192.168.100.25:8085/repos/repo_zero/test/changesets/1/path/icongluonlink.png?ui=gluon

plastic://ssl://192.168.100.25:8085/repos/repo_zero/changesets/1/path/icongluonlink.png?ui=gluon

New

Windows - Plastic, Gluon: plasticlinks are turned ON!

We implemented a new way to share files: plasticlinks!

Plasticlinks let you share links to files within Plastic repositories, as well as links to branch, changeset, label, and shelveset diffs.

To use it, you just have to click on the plasticlink button to copy the link to your clipboard and share the link with your mate. To open a link you just need to click it or open it in your favorite browser, and the file or diff will be displayed in Plastic.

1. Plastic:

From Plastic you can share diffs with your colleagues.

We added a button to the top-right corner of the diff window. For shelves, it has been added on the Shelves view

Here are some plasticlinks examples:

1.1 Branches:

plastic://test.cloud/repos/NikkiTest1/branches/main/Mi+rama/MiSuperRama%24%24/diff

1.2 Changesets (single or two elements comparison)

plastic://test.cloud/repos/NikkiTest1/changesets/50/diff

plastic://test.cloud/repos/NikkiTest1/changesets/34..47/diff

1.3 Labels (single or two elements comparison)

plastic://test.cloud/repos/NikkiTest1/labels/My+nre+super+label+%25%25/diff

plastic://test.cloud/repos/NikkiTest1/labels/Reviewed+Dpi+Training+Doc..My+nre+super+label+%25%25/diff

1.4 Shelvesets

plastic://test.cloud/repos/NikkiTest1/shelvesets/2/diff

2. Gluon

From Gluon you can share direct links to files within the repository.

We added a new panel between the details section and the history of the file. This is how it looks!

To share your file just click on the copy button to obtain the link!

If you received a file plastic link, you just need to click on it. Gluon will show you the file and the changeset on the screen. Don't worry if you don't have the file in your workspace, it will be downloaded automatically.

Enjoy and share!

Bug

All platforms: fixed duplicated deleted after incoming changes operation.

The incoming changes could leave a duplicated deleted directory. It happened if there were 2 moved files plus a delete of their source parent directory as pending changes. Let's see an example:

John:
* Move /src/foo.c to /foo.c
* Move /src/bar.c to /bar.c
* Delete /src

Mary
* Change /readme.txt
* Checkin

John:
* Update it's workspace to get the Mary's changes

The workspace pending changes were:
* Moved /src/foo.c to /foo.c
* Moved /src/bar.c to /bar.c
* Deleted /src
* Deleted /src

Now the workspace pending changes are:
* Moved /src/foo.c to /foo.c
* Moved /src/bar.c to /bar.c
* Deleted /src

Bug

Windows - Plastic: fixed exceptions in Code Review when opening certain comments

An exception was thrown when opening a Code Review comment, if that comment required showing a diff, and no diff had been shown yet. We fixed that by correctly initialising the diff view.

An exception was also thrown when opening a Code Review comment for an added or deleted item, if further changes were made on the branch after the creation of the comment. We also fixed that scenario.

Bug

All platforms - WebUI: Diff xlink without changes failed.

Diffing a branch or cset with an xlink pointing to the same target changeset in source and destination failed. We fixed it.

Bug

Linux - Client and Server: netcore-based server in Ubuntu 20 rejected SSL connections from any plastic client. Fixed.

The netcore-based server installed in Ubuntu 20 just accepts Tls1.2 for SSL connections. To match this requirement, the client now is able to negotiate Tls1.2 protocol when connecting to the server using SSL.

REMARK: If you are using a Plastic SCM client in Linux to connect to a Plastic SCM server (netcore-based) in Ubuntu 20, it is likely you will have to install a recent version of mono and configure the Plastic SCM client to use this recent version instead of the default one. Contact our support team for this matter (support@codicesoftware.com), as there might be combinations that may not work even with newer mono versions, such as ubuntu 18 with mono 6.12.

Bug

macOS, Linux - Gluon: Fixed error when canceling the switch branch operation

When selecting "Switch branch" in Gluon on macOS and Linux, and canceling the dialog, an unexpected error occurred. We solved this issue and made some improvements to prevent this from happening again

Bug

All platforms - WebAdmin: The configurator didn't eat 'any' string as bind address. Fixed.

If you type "any" in the "WebAdmin" > "Network" > "Bind To" property for a server port, the server won't listen on that port. Fixed.

Bug

Windows - Plastic: Fixed performance degradation when using Spell Checker.

Typing text or pasting text into the Pending Changes textbox caused micro-freezes to the Plastic GUI when the Spell Checker option was enabled, due to a WPF issue: https://github.com/dotnet/wpf/issues/3350. We applied a workaround and now it's fixed.