Swiper 插件内部字段丢失
Swiper PlugIn internal fields get lost
我刚刚在我的 Domino Designer FP7
上安装了 Swiper Plugin,经过一些测试(也许)我发现了一个错误。
不幸的是,如果您在分支之间切换,$DesignerVersion
和 $$ScriptName
等内部字段会丢失!
这是我的测试场景:
- 创建表单(
form1.form
)
- 对
master
分支进行初始提交
- 创建一个额外的分支,例如
develop
- 对
develop
分支中的 form1.form
进行一些更改
- 提交此更改
- 切换回
master
分支
在这一步之后,内部字段(上面提到的)丢失了:(
Swiper 决定 'swipe' 离开的属性和元素是通过使用 xslt 文件控制的。
默认的 xslt 文件确实选择 DesignerVersion 和 $$ScriptName 被刷。
DesignerVersion 默认刷掉,因为这会在您升级 domino designer 时引起很多合并冲突,或者如果您的一位同事决定安装您没有安装的修复包'突然之间,每个文件都会再次发生冲突,需要解决。
尽管可能存在 import/export 每个版本的行为可能不同的争论,但听到 IBM 在过去几年中对 DXL 导入/导出进行了任何更改,我会持怀疑态度。
关于 $$ScriptName,老实说,我不记得为什么我要把它包括在内,但它一定让我很烦。它对我没有造成任何问题,但话又说回来,我没有做很多经典的 NSF 开发,所以也许这样做确实会导致问题。
提供您自己的自定义 xslt 过滤器:
如果您不想要这些 'swiped' 那么您可以提供自定义的 xslt 文件
复制默认文件 org.openntf.swiper/src/org/openntf/swiper/action/DXLClean.xsl
然后评论或删除与设计器版本相关的条目(不止一个)
<xsl:template match="//n:form/@replicaid"/>
<xsl:template match="//n:form/@version"/>
<!--<xsl:template match="//n:form/@designerversion"/>-->
<xsl:template match="//n:database/@replicaid"/>
<xsl:template match="//n:database/@version"/>
<!--<xsl:template match="//n:database/@designerversion"/>-->
.... and so on make sure you do all of them
然后注释掉/删除 $$ScriptName
<!-- Ignore the DesignerVersion Item and this random FileModDT one -->
<xsl:template match="//n:item[@name='$DesignerVersion']"/>
<!--<xsl:template match="//n:item[@name='$$ScriptName']"/>-->
<xsl:template match="//n:item[@name='$ScriptLib_error']"/>
<xsl:template match="//n:imageresource/n:item[@name='$FileModDT']"/>
<xsl:template match="//n:imageresource/n:item[@name='$EditFilePath']"/>
将其另存为 .xsl 文件
然后在 Designer 中转到文件 -> 首选项 -> Swiper
在 'Custom XSLT Filter' 下浏览到您的文件的位置并单击应用/确定。
当文件从 NSF 导出到 ODP 时,这些规则将在下次运行 swiper 时生效。因此,您可能需要强制保存文件,或故意 'swipe' 文件以查看新结果。
我刚刚在我的 Domino Designer FP7
上安装了 Swiper Plugin,经过一些测试(也许)我发现了一个错误。
不幸的是,如果您在分支之间切换,$DesignerVersion
和 $$ScriptName
等内部字段会丢失!
这是我的测试场景:
- 创建表单(
form1.form
) - 对
master
分支进行初始提交 - 创建一个额外的分支,例如
develop
- 对
develop
分支中的form1.form
进行一些更改 - 提交此更改
- 切换回
master
分支
在这一步之后,内部字段(上面提到的)丢失了:(
Swiper 决定 'swipe' 离开的属性和元素是通过使用 xslt 文件控制的。
默认的 xslt 文件确实选择 DesignerVersion 和 $$ScriptName 被刷。
DesignerVersion 默认刷掉,因为这会在您升级 domino designer 时引起很多合并冲突,或者如果您的一位同事决定安装您没有安装的修复包'突然之间,每个文件都会再次发生冲突,需要解决。
尽管可能存在 import/export 每个版本的行为可能不同的争论,但听到 IBM 在过去几年中对 DXL 导入/导出进行了任何更改,我会持怀疑态度。
关于 $$ScriptName,老实说,我不记得为什么我要把它包括在内,但它一定让我很烦。它对我没有造成任何问题,但话又说回来,我没有做很多经典的 NSF 开发,所以也许这样做确实会导致问题。
提供您自己的自定义 xslt 过滤器:
如果您不想要这些 'swiped' 那么您可以提供自定义的 xslt 文件 复制默认文件 org.openntf.swiper/src/org/openntf/swiper/action/DXLClean.xsl
然后评论或删除与设计器版本相关的条目(不止一个)
<xsl:template match="//n:form/@replicaid"/>
<xsl:template match="//n:form/@version"/>
<!--<xsl:template match="//n:form/@designerversion"/>-->
<xsl:template match="//n:database/@replicaid"/>
<xsl:template match="//n:database/@version"/>
<!--<xsl:template match="//n:database/@designerversion"/>-->
.... and so on make sure you do all of them
然后注释掉/删除 $$ScriptName
<!-- Ignore the DesignerVersion Item and this random FileModDT one -->
<xsl:template match="//n:item[@name='$DesignerVersion']"/>
<!--<xsl:template match="//n:item[@name='$$ScriptName']"/>-->
<xsl:template match="//n:item[@name='$ScriptLib_error']"/>
<xsl:template match="//n:imageresource/n:item[@name='$FileModDT']"/>
<xsl:template match="//n:imageresource/n:item[@name='$EditFilePath']"/>
将其另存为 .xsl 文件 然后在 Designer 中转到文件 -> 首选项 -> Swiper 在 'Custom XSLT Filter' 下浏览到您的文件的位置并单击应用/确定。
当文件从 NSF 导出到 ODP 时,这些规则将在下次运行 swiper 时生效。因此,您可能需要强制保存文件,或故意 'swipe' 文件以查看新结果。