Diff/merge-friendy人类可读的配置文件格式

And*_*sov 5 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
Run Code Online (Sandbox Code Playgroud)

基于行的YAML看起来是一个相当不错的选择.OpenSSH风格的配置格式可能会更好.

所以有两个问题:

  • 有人试图解决这个问题,也许有人写下他们的经验吗?

  • 格式化输出文件时我应该考虑的任何问题?

    例如,它有助于在规则之间添加2-3个空行以打败diff上下文并最小化冲突,以防两个用户在最后添加新规则(一个非常典型的情况)?