The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 2,915 other followers

PlasticSCM Workaround for “Can’t perform a checkout in an edited xlink.”

Posted by jpluimers on 2018/11/01

Error message during a commit (checkin) or shelve of some changes:

Can't perform a checkout in an edited xlink.

In this case it is during a shelve:

Wait a moment, please...
In progress...
Shelving pending changes

I cannot show all changes, but the third one is an xlink:

The error did not return any meaningful results when I searched for it, but the developers on the team indicated “Errors like these happen every now and then; there is no information in Google. Sit down, cry a little, then restart with a fresh repository”.


The workaround for this undocumented behaviour is tedious, but works:

  1. Create a new workspace for the same repository, but using a different on disk path
  2. In the new workspace, switch to the same branch, then perform a “Switch workspace to this branch”
  3. Use a good recursive comparison tool ([WayBack] Download Beyond Compare is great for this; it is free for 30 nonconsecutive days and has very reasonable [WayBack] Beyond Compare pricing) to compare the old and new workspace, then sync the changes into the new repository
  4. Commit the new repository in PlasticSCM
  5. Delete the old repository
  6. Re-create the old repository


I think this is how I ended up in this situation in the first place:

  1. Make some changes (additions/modifications/deletions) including changes inside the xlink
  2. Shelve those changes
  3. Perform some other checkins
  4. Unshelve the changes

The problem with a shelve/unshelve operation isn’t a symmetric operation. For instance, when unshelving an addition, it is not shown under “Added and private items” any more (like before the shelve operation), but under “Changed items” marked as “Copied (new) / Checked-out” – no matter if it is inside the xlinked subtree or not (the xlink is “Checked-out”, the rest are additions):

The “Copied (new)” entries now show up as “Added and private items” (there was already one):



I will need to do some more reading on xlinks, as – comming from a git background into an existing PlasticSCM environment – I think it is very similar to git submodules which also are not without pain.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: