我的团队正在开发三个相当大的YAML脚本,这些脚本定期发布供公众使用。
我需要创建一个清单文件作为这些脚本版本的版本控制方式。
大多数清单格式(Windows应用程序,程序集,jar包等)都遵循标准或模板,但我认为我的方案没有默认实现,其中发布的对象只是YAML脚本。
我正在考虑从头开始创建一个新的YAML脚本,其中包含有关此脚本包的元数据的关键:值对。
我在想的是指定:
这就是我所拥有的一切,但这似乎是空洞的。
在这种情况下,是否有最佳方法来构建清单?
我是否应该考虑控制这些版本的替代方法?
您可以很好地使用YAML创建清单文件,并且您可以将项目符号项用作表示每个版本的映射的键值对。
您应该考虑如何将版本放在一起,因为除非您使用序列,否则可能没有保证或有用的方法来在清单中订购版本。
在下面我假设你想要遵循清单文件顶部最新版本的通常模式。
2019-03-14:
name: new-name
version: [0, 2, 0]
2019-02-28:
name: some_name
version : [0, 1, 0]
您会发现大多数YAML库在映射开始时插入一个新键是非常重要的(对此我的ruamel.yaml
库是一个例外)。此表单排除了在一天内发布多个版本,这可能会在将来某个日期出现问题。[0, 2, 0]:
name: new-name
date: 2019-03-04
[0, 1, 0]:
name: some_name
date : 2019-02-28
您可能会发现某些YAML库无法处理这些类型的密钥。并且当密钥被排序时,将它们更改为像0.2.0
这样的字符串可能会让您遇到更大麻烦,只要一些数字开始为两位数字完成此操作的最简单方法可能是使用根级别序列,这样,在添加版本的每次往返中,插入和排序都是完全可控的:
- name: new-name
version: [0, 2, 0]
date: 2019-03-04
- name: some_name
version: [0, 1, 0]
date : 2019-02-28
如果您的版本直接位于根级别下,则通常无需完全加载 - 更新 - 写入版本YAML文件。相反,您可以将旧文件作为文本加载,然后将单个新条目转储到文件,然后将加载的文本附加到新创建的文件。