I'm using Unicorn (v4.0.3, Rainbow v2.0). In the Rainbow.config it states the following for the Rainbow.SFS.SerializationFolderPathMaxLength property:

Example: A value of "90" for this setting will mean that item paths longer than 150 characters will be shortened, since Sitecore reserves 8 characters (and 248 - 8 - 90 = 150).

So I put 80. By their math that would mean 248 - 8 -80 = 160, meaning a path of 160 characters is ALLOWED and anything longer will be shortened. I want to avoid shortening so it seems like a good value to me.

Then this error appears when I try to open Sitecore:

The physical root path of this SFS tree, C:\Sitecore\bhcorporate\Website\App_Data\Unicorn\BrightHorizons.Serialization\Content, 
is longer than the configured max base path length 80. If the tree contains any loopback 
paths, unexpected behavior may occur. You should increase the 
Rainbow.SFS.SerializationFolderPathMaxLength setting in Rainbow.config to greater than 
85 and perform a reserialization from a master content database.

I'm confused. The config indicates that a smaller value allows longer paths. Yet the error indicates that a larger value is needed. Can someone explain?

  • Hi I am new to the Rainbow and Unicorn. I am having the same issue. "Important: When changing this value, you must reserialize all configurations!" How do I do that? – user2214391 Feb 26 '19 at 20:31
  • @user2214391 You must log into Sitecore and browse to /unicorn.aspx on your sitecore site, then click the Reserialize button. This updates your local serialized files to match your Sitecore instance. Please read the accepted answer for more details – Paul Feb 26 '19 at 21:54

The limitation is not Unicorn or Rainbow. The file system sets the limit (248 chars).

All you are doing with that configuration setting, is changing how "lax" Rainbow needs to be before doing the path shortening. Changing it from 90 to 80 will only work, if your root path actually allows for this (without breaking the Windows Path Length limitation).

In your case, the root path is already 85 characters. You would need a root path shorter than 80, for your setting to work.

And while we're at it - be aware that changing this setting requires a full reserialize of all configurations. You cannot change this individually on each developer machine.

Further clarification

Default setting of 90 tells Rainbow; "Assume your rootpath will always be less than 90 characters". On developer machines but also on other environments where you would want to use it (when you deploy).

It then takes this assumption and "knows" when it needs to break and perform the rollback to avoid hitting the path limit. It does this by calculating the path of the item being serialized, adding the base (90), and the name of the item in question. If this adds up to more than the path limit, it rolls over.

And in case you further investigate - Windows 10 does allow for this path length limitation to be disabled. But supporting frameworks like .NET and so on does not support this prior to .NET 4.7.1 (which is only an option for Sitecore 9). Other tools such as 7-zip and even the Windows GIT client still do not fully support unlimited path lengths.

It is currently being investigated as a possible optional feature to support.

| improve this answer | |
  • So, I tried changing the setting to 70 (less than 80, as you suggested) and I am getting the same error. It still says the setting needs to be 85 or larger. EDIT: Just re-read your answer, misunderstood. You're saying the path itself needs to be shorter. So then the setting itself needs to be higher. – Paul Sep 4 '18 at 21:07
  • Yes. Think of this setting as "the common denominator across environments". – Mark Cassidy Sep 5 '18 at 7:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.