开发机如何设置夜间定时自动同步Sitecore/Unicorn本地条目?
解决方案
一、消除Date Last Synchronized字段的冗余变更
该问题是Unicorn的默认序列化逻辑导致的,默认会把同步时间字段的变更写入本地序列化文件,只要环境触发过同步就会产生无效的git变更。你可以通过配置字段过滤规则直接忽略该字段的序列化,从根源解决这类问题:
在你的Unicorn序列化预设配置文件中添加如下过滤规则:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <unicorn> <configurations> <configuration name="Your.Project.Configuration"> <predicate> <!-- 保留原有需要序列化的项目规则 --> </predicate> <fieldFilter type="Unicorn.Configuration.FieldFilter, Unicorn"> <!-- 忽略同步时间字段的序列化 --> <exclude fieldId="{B1A94F6B-4F6A-4F7A-8F7A-9D8E7F6A5D4C}" note="Date Last Synchronized" /> </fieldFilter> </configuration> </configurations> </unicorn> </sitecore> </configuration>
如果上述字段ID和你使用的Sitecore版本不匹配,可以在Sitecore后台自行查询Date Last Synchronized字段对应的实际ID替换即可。
二、定时自动同步实现方案
Unicorn本身没有内置定时同步功能,可通过外部工具组合实现需求,以下是本地开发环境通用的两种实现方式:
- 方案1:Windows计划任务+PowerShell脚本
Unicorn提供了对外的同步触发API,你可以编写简单的PowerShell脚本调用该API,然后在Windows计划任务中设置执行时间为你指定的夜间时段即可,脚本示例:
使用该方案需要提前在Unicorn配置中开启API访问权限并设置安全密钥。$url = "https://你的本地站点域名/unicorn.aspx?verb=Sync&configuration=你的配置名&secret=你配置的安全密钥" Invoke-WebRequest -Uri $url -UseBasicParsing - 方案2:配合Sitecore CLI实现
如果你已经在使用Sitecore CLI管理序列化内容,直接编写如下批处理脚本,加入Windows计划任务即可:
该方案不需要额外配置Unicorn API,操作更简便。cd /d "你的本地项目根目录路径" dotnet sitecore ser pull
附:Unicorn序列化文件示例

内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

