Sitecore使用Git autocrlf序列化项目

Kev*_*ühl 5 c# git serialization sitecore

我们遇到了序列化项目的问题.我们的用例是在本地使用自己的数据库,并使用Unicorn同步所有项目.然后我们将所有项目推送到我们的Git存储库.本地Git配置设置为autocrlf=true.这是必要的,因为我们在项目中有一些前端工程师可以使用Mac OS X.我们使用Unicorn序列化完整的"核心"数据库(如安装后的默认配置).

看起来核心数据库中的一些项目是使用非Windows系统创建的.如果我们查看项目/sitecore/system/Dictionary/O/One or more items have been changed Do you want to overwrite these changes:当我序列化这个项目并查看它时,我看到该Key字段包含多行,并且换行符标有" \n"并且content-length是的77(参见附注截图来自Notepad ++,左侧).在此之后,我将此文件推送到Git存储库,并从存储库中提取另一个工作站上的项目.由于该设置autocrlf=true,将" \n"被自动转换为" \r\n",其导致content-length79,而不是原始的77(见附表截图右侧).当我想反序列化此项时,我得到内容长度不匹配的异常.

在此输入图像描述

有没有人之前有这样的错误,你做了什么来避免这种情况?我看到禁用autocrlf序列化同步或从序列化同步中排除这些项的选项.但我想避免做其中一个选择.

dun*_*ton 10

您可以从.gitattributes文件控制该行为.

在我的属性文件中,.item文件被设置为被视为二进制文件.

这是我在项目中使用的.gitattributes文件.

* text=auto

# These files are text and should be normalized (convert crlf => lf)
*.cs      text diff=csharp
*.xaml    text
*.csproj  text
*.sln     text
*.tt      text
*.ps1     text
*.cmd     text
*.msbuild text
*.md      text

# TDS files should be treated as binary
*.item -text
Run Code Online (Sandbox Code Playgroud)