基于文件的存储
在CODESYS 3项目存储在一个单独的二进制文件中。该文件的内容无法在开发环境之外读取或创建。比较两个项目版本,不会发现任何明显的差异,而两个编辑器在修改不同对象时就会发生冲突。
安装完成后CODESYS File-Based Storage附加组件CODESYS 3提供了一种基于文件的存储格式,该格式与存储格式兼容。CODESYS 4它允许将基于文件的格式转换为CODESYS 4转换成二进制格式CODESYS 3然后返回。
在CODESYS 4项目采用开放的、基于文件的格式进行管理。每个对象都存储在各自的文本文件中,项目结构就是文件系统中的文件夹结构。没有对象管理器。
由此可获得以下优点。
可以使用任何文本编辑器读取对象,并根据需要进行编辑。
两个项目状态的比较以纯文本形式显示内容变化。
对不同对象的更改不会相互冲突。
项目管理采用版本控制系统,例如 Git、SVN 或 Mercurial。项目归档文件来自CODESYS 3因此没有必要。
版本控制系统的常用流程(如合并请求、拉取请求和代码审查)均可使用,因为更改也可以在版本控制系统的 Web 门户中查看。
更多信息请参见以下内容:工作区和文件类型
源代码和生成的文件
项目文件夹中并非所有内容都属于源文本。除了目标文件之外,CODESYS 4它还存储临时结果、已解析的库和用户特定设置。这些文件会根据需要重新生成。
文件夹 | 地点 | 内容 |
|---|---|---|
| 在 | 编译和引用上下文 |
| 在 | 为诊断目的而创建的临时文件 |
| 在 | 如果未指定路径,则生成离线启动应用程序。 |
| 最高级别 | 已解析的编译库 |
| 项目最高层 | 项目设置和用户偏好 只有在首次保存自定义项目设置时才会创建该目录。 |
| 与工作区文件平行 | 工作区设置和用户偏好 |
另一方面,设备描述缓存属于项目所有。设备描述以文本文件的形式提供,并且也受到版本控制。
字符集、换行符和缩进
为了确保两个项目版本之间的比较显示的是内容更改而不是格式更改,所有文件都按照固定的规则写入。CODESYS 4。
财产 | 规则 |
|---|---|
IEC 源代码和 JSON 文件的字符集 | UTF-8 不带 BOM(字节顺序标记) 文件最初不包含任何关于所用字符编码的信息。 |
XML 文件的字符集 | 首选 UTF-8 编码 设备描述等库存文件会根据其元数据声明进行读取。 |
写作时换行 | LF(线路进给) |
阅读时换行 | LF 和 CRLF(回车线进给) |
JSON 和 XML 文件中的缩进 | 每个级别 1 个标签页 |
JSON 对象中条目的顺序 | 确定性 |
文件始终以 LF 行尾格式保存(0x0A)。LF 和 CRLF 都是(0x0D,0x0A导入过程中支持这些操作。这确保即使文件在外部被修改,它们仍然可读。CODESYS 4使用以 CRLF 为行尾格式的编辑器。
版本控制系统中的项目
JSON 对象中的确定性顺序和制表符缩进具有相同的目的:修改后的对象只会改变内容。
对象文件
项目配置文件,例如
Libraries.json和ProjectInfo.jsonLibraries.lock.json锁文件工作区文件
由源代码生成的文件夹和文件不属于版本控制范围。它们包含临时数据、二进制文件或用户特定的设置。其他开发环境也以相同的方式处理这种情况——例如,C# 项目有……bin和obj文件夹。
对于以下文件夹,排除是默认设置,而非强制要求。如果您的版本控制系统对二进制文件没有问题,则可以将这些文件夹包含在版本控制系统中。
已排除在版本控制之外的文件:
.library-cache.user<workspace name>.fbsws.user
配置版本控制系统,使文件转换为 LF 格式(线路进给)在提交时,代码会被修改;在检出时,代码会被获取但未做任何更改。在 Git 中,您可以使用以下设置来配置此功能。
core.eol = lf core.autocrlf = false
将每个项目文件夹的排除项保存到单独的文件中。.gitignore扩展名,以及换行符设置,都放在一个单独的文件中。.gitattributes扩展名。这两个文件都必须进行版本控制,否则规则将无法生效。
在外部编辑文件CODESYS 4
项目的目标文件是纯文本格式。如有必要,您可以在外部编辑这些文件。CODESYS 4例如,在解决合并冲突或进行影响多个对象的更改时。
您需要遵守以下条件:
该声明在语法上仍然有效。该声明用于将其与实现分开。
字符集仍为 UTF-8,不带 BOM。
文件夹结构保持不变,因为它与项目结构相同。
每当您在外部解决合并冲突时CODESYS 4之后你应该检查结果。CODESYS 4集成开发环境 (IDE) 中,合并操作可能会在项目中创建对象之间不允许的关系。例如,一个 POU 可能隶属于另一个 POU。
版本控制系统的文件,例如.gitignore它们位于项目文件夹中,因此也会出现在工作区导航器中。