Jump to content

Mikael Kalms

  • Content Count

  • Joined

  • Last visited

  • Days Won


Mikael Kalms last won the day on March 17 2017

Mikael Kalms had the most liked content!

Community Reputation

1 Neutral

About Mikael Kalms

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi Matt, I'm going to take the opportunity to pimp Plastic Cloud a bit, because I think it's awesome We are building this game with Unity and Plastic Cloud: https://playbatalj.com/ We are 15 developers in one office location. 1GBit connection to the Internet, wiring in the office happens to be 100MBit ethernet though. A main branch checkout (ie, just the workspace - not the metadata and older file revisions) is approx 7GB and 29000 files. We use Plastic Cloud instead of Plastic because we don't like to deal with backups and we are happy with the performance that we get. I used to have local repos on my machine and push/pull between my machine and Plastic Cloud, but stopped doing that a couple of months ago because 1) I didn't want repo history to eat my SSD space, 2) I didn't know how to use the "nodata replica" thing effectively from the GUI at that time and 3) I never noticed a significant speed difference anyway The biggest things we miss with Plastic Cloud compared to Plastic Server are lack of webhooks and lack of web client. We get by OK without them however, less ops work is worth it to us. Our CI system is a Jenkins deployment in Google Cloud. The most frequent builds pull Plastic Cloud for changes every 2 minutes. Since these builds are incremental, the incremental checkout is typically <30 secs. We have trained our entire team - bar 1 person - to work with task based branches using the full GUI client. Over all we are happy with this aspect of it. I often work with 2 workspaces for the same repo, 1 for regular dev, 1 for jumping around when helping others / hotfixes / merging between branches.
  2. This yields a list of the individual files that are different between the two changesets: However, going backwards from there to the changesets involved is cumbersome and I'm not sure this is a viable approach.
  3. Hi, I think I'm looking at a situation similar to JanReimer. I am looking for tooling that helps me answer "which changes have been done to the project between the previous release and the current one?" In our case, things work like this: * We do most development on task branches. People merge results back to main at the end of each task. Sometimes people do development directly on the main branch. * We create a new child branch for each release. A couple of merges, a couple of cherry-picks from main to the release branch - then we are done. Occasionally, a fix gets re-implemented on the release branch, when it is too difficult to cherry-pick it (this is most common with binary data changes). All in all, the simplest way for us to identify a release is to talk about its changeset ID. This will typically refer to the last changeset ID on the release branch. Sometimes we might decide to release a build made off another changeset on the release branch (because the last change was bad in some way). Now, the question I think would like to ask of the Plastic client is: I do not care about the few changes which are in <changeset ID A>'s history but not in <changeset ID B>'s history. I think one way to solve this would be to algorithmically start from <changeset ID A> and flatten the graph; follow merge/cherrypicks recursively. Then do the same, from <changeset ID B>. This will produce two lists of changesets. I can then remove all entries in <list B> which also appear in <list A>. Subtractive merges/cherrypicks complicate things a bit, haven't thought much about that yet. I think another way would be to find the last full merge that leads from /main to <changeset ID A>. Then work backward from <changeset ID B>, collect changesets, until that particular merge is encountered. Special cases required for cherrypicks etc afterward. So, er. What's the status on something like this? Do I need to build my own tooling for it? Does something exist already?
  4. Mikael Kalms

    Partial workspace update with Windows Batch command

    Are you relying on Jenkins directly-or-indirectly running those lines of code? If so, the Jenkins agent runs as SYSTEM ... but your Remote Desktop session runs as Fleer. When Jenkins runs Plastic, Plastic will fetch files and create these files with owner SYSTEM. Later on, when you attempt to touch the same workspace via Plastic via the Remote Desktop session, Plastic complains that it can't touch any of the files in the workspace because of ownership/permissions problems. In order to get away from this, either make Jenkins use the same user as yourself (so you can use Plastic via Remote Desktop against the same workspace), or make Jenkins run the cleanup commands. What I have done is, I'm letting the Plastic plugin perform full checkout of the repo (so no explicit "cm partial ..." commands), and as a post step in the (declarative) pipeline I run the following: cm unco --all ${WORKSPACE} This undoes all actions that Unity may have caused except for one thing: it will not remove newly added files. If you want to delete those, you need to write more logic of your own to find & delete those.
  5. Eh, I just realized that item #2 is a duplicate of this forum question: I cannot vote on the UserVoice option since it is has already been declined.
  6. Hi, I'm looking into automation of Plastic SCM client installation on Windows. Others would find this useful for workstations; I'm doing this particularly for Jenkins build slaves. What I would like to see is that I can write a PowerShell script that downloads & installs a Plastic SCM client. Probably the latest-available version. Probably the Cloud edition. Does any of the following exist? 1. A REST API which can be used to discover download URLs for installers. For example, https://www.plasticscm.com/restapi/downloadinstaller/ -> returns the URL https://www.plasticscm.com/download/downloadinstaller/ which, when accessed, will redirect to the real download URL https://www.plasticscm.com/restapi/downloadinstaller/lastest/plasticscm/windows/cloud-edition -> returns the download URL for the latest version 2. A Chocolatey package for Plastic SCM; the package index could either live in in Chocolatey's public index, or on a machine run by Codice Software (sort of like you do with the Linux packages). The Chocolatey index would serve the same purpose as the above REST API. Either of these, or some equivalent solution, would enable me to write a couple of lines of PowerShell which download + install the latest version of the Plastic SCM client. As it is now, I believe the best course of action for me is to split my installation scripts into two parts; one is an list of URLs which I scrape from the plasticscm.com website manually and add to the script (and update every month or so), and the second is the actual download/installation script (which remains unchanged).
  7. Hi, I just noticed that if I run the installer like so: PlasticSCM- --mode unattended ... then the PlasticSCM5\Client & PlasticSCM5\Server folders are not added to the system PATH. These are added when I run the installer in normal ("win32") mode. Is this intended behaviour?
  8. Mikael Kalms

    How to branch back into the parent branch?

    Hi Carlos, the "merge from this branch to" feature is, as it is designed right now, precisely the right tool for the following situations: 1) There is new stuff on /main, and I want to merge everything onto release branch X 2) I am working on a feature within a task branch, and I want to merge all work so far up to /main but continue working within the task branch It requires extra steps in the following situation: 3) I have been working on a task branch, and I am done: I want to merge all work up to /main, and also switch my workspace back to /main. Scenario 3 is what our artists do a lot and they ask me if there is a way that I can customize the Plastic SCM for them so that it is a single operation instead of two. We do not use any automation for creating task branches nor merging them in, we have no connection to any issue tracking system, no automated "submit branch/task for tests & automated merge-up" (because our test coverage is quite spotty).
  9. Mikael Kalms

    How to branch back into the parent branch?

    Seconding this. One of our artists asked for this exact feature ('merge up to parent branch') a few days ago. I suspect that they would ideally want two separate operations with quick-access: merge latest from main to current branch, and merge current branch onto main + switch workspace to main.
  10. Mikael Kalms

    How to verify workspace integrity?

    Thanks. I just got access to the machine. The file did indeed have different content locally. It also had identical "modified" and "created" timestamps, from back-then when the Unity editor initially had created the file uniquely on that machine. I can't explain the process which led to this situation, but there was a local difference on the machine which 'cm status . --all' and 'cm update . --all' didn't recognize. We deleted the file manually and updated to get a good version of the file. Since it seems there is no option to check all local content (ignoring metadata - rather, validating that metadata is not inconsistent) we'd resort to a more blunt method in this kind of situation in the future (after we know for sure the problem is file content mismatch between machines): delete all files in workspace, then update to get good versions onto the machine.
  11. Mikael Kalms

    How to verify workspace integrity?

    Hi, we have a situation on one machine where I believe (95% certain, will be able to check tomorrow) that there is a file in the workspace, whose contents does not match the repository version. The client is probably running Plastic 7.x and have "Check content (hash) when the file timestamp is modified to set it as "Changed"" enabled. The client is probably not running Plastic Change Tracker. It is possible that the file has an identical timestamp to what's in the repository. It is possible that the file has an identical size to what's in the repository. I will make some more detailed checks tomorrow. 1. Is there a command which I can run which will make the Plastic GUI or CM perform a full validation of the on-disk workspace contents, regardless of timestamps? 2. If the timestamp (and perhaps also size) is identical, will Plastic GUI / CM assume that the file's content hasn't changed, without actually looking at the bytes within?
  12. Hi, You are correct in that the left-hand pane should not be empty. I experienced it again just now - no message about "encoding changed", but the left-hand pane was empty. Restarting Plastic showed correct content in the left-hand pane. I have sent client logs & a screenshot to you via your ticketing system: Request #14551.
  13. No repro steps, sorry. It happens randomly.
  14. Hi, I have noticed on a couple of occasions (2? 3?) over the past month that the Diff view in the bottom half of the Pending changes tab failed to display a diff. Today, for 4 out of 5 source files, the Diff view guessed that the left pane's encoding was "None" [incorrect], and the right pane's encoding was "UTF-8" [correct]: Manually changing the "Left encoding" setting to "UTF-8" made the "Encoding changed" message disappear. However, the Diff view did not refresh itself fully: the diff result was the same (a blank left pane). Switching between different files in the list of changed items resulted in the Diff view re-identifying encoding, again incorrectly. Selecting a file and choosing "Diff workspace contents (Ctrl+D)" opened up a new tab. That tab detected encoding correctly (UTF-8 vs UTF-8) and that diff view showed correctly. Shutting down and restarting the Plastic SCM client resolved the problem: the Diff view in Pending changes is working correctly for me now. Plastic SCM client version:
  15. Hi, Status update for how the Blue Ocean plugin is working: The last month's Plastic plugin fixes have improved the display a lot. Thanks for that! Remaining problem 1: the "commit" column is blank in Blue Ocean's Pipeline view (probably core Jenkins bug, https://issues.jenkins-ci.org/browse/JENKINS-46521) Remaining problem 2: Blue Ocean's Pipeline view sometimes doesn't display associated changeset info (probably also a core Jenkins bug, can't find any JIRA on it though). Details on that below... The classic Pipeline view is accurate and displays one change per changeset (I am using light-weight checkout, which avoids another bug in Jenkins where changes are listed twice in the classic Pipeline view): However, for some of these jobs, the Blue Ocean pipeline view will show "Started by an SCM change" as message. This message is shown when there is no new commit paired with the build job: Now if I go in and look at details for a specific job - in this case, job 1662 - then it will show correct change information for that job (so that view has changeset information associated with it):