Version control 区分/合并友好的人类可读配置文件格式
我的用户希望在版本控制系统中存储我的应用的设置 (该应用程序面向开发人员和设计师,允许按文件夹设置。用户经常要求我将这些设置存储在文件夹中,以便他们将其提交给VCS。) 这些设置是从应用程序的UI修改的,因此以编程方式保存,但我希望生成的文件是可读的。我的第一个选择是打印精美的JSON,除了合并是件有趣的事情(想想那些被禁止的尾随逗号) 这让我思考:我能使用的最有利于区分/合并的人类可读文本格式是什么? 我知道许多版本控制系统支持外部合并工具,但我不想让用户负担额外的设置我的目标是尽量减少意外冲突,同时保持合理、可读的格式和,而无需用户付出任何额外的努力 我存储的数据基本上是一个规则列表,每个规则都有许多用户可配置的属性。像这样:Version control 区分/合并友好的人类可读配置文件格式,version-control,configuration-files,Version Control,Configuration Files,我的用户希望在版本控制系统中存储我的应用的设置 (该应用程序面向开发人员和设计师,允许按文件夹设置。用户经常要求我将这些设置存储在文件夹中,以便他们将其提交给VCS。) 这些设置是从应用程序的UI修改的,因此以编程方式保存,但我希望生成的文件是可读的。我的第一个选择是打印精美的JSON,除了合并是件有趣的事情(想想那些被禁止的尾随逗号) 这让我思考:我能使用的最有利于区分/合并的人类可读文本格式是什么? 我知道许多版本控制系统支持外部合并工具,但我不想让用户负担额外的设置我的目标是尽量减少意外冲
rules:
- type: compile
source: *.less
destination: *.css
compiler: LESS 1.x
- type: compile
source: *.coffee
destination: *.js
compiler: CoffeeScript 1.3
sourceMaps: true
基于行的YAML看起来是一个相当不错的选择。OpenSSH样式的配置格式可能工作得更好
所以有两个问题:
- 以前有没有人尝试过解决这个问题,也许写过他们的经历 <格式化输出文件时,我应该考虑的问题是什么? 例如,如果两个用户在最后都添加了一个新规则(一个非常典型的情况),那么在规则之间添加2-3个空行是否有助于消除差异上下文并最小化冲突