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

时间:2013-06-06 09:41:51

标签: 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风格的配置格式可能会更好。

所以有两个问题:

  • 以前有人试图解决这个问题并且可能会写下他们的经历吗?

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

    E.g。是否有助于在规则之间添加2-3个空行以打败差异上下文并最小化冲突,以防两个用户在最后添加新规则(一个非常典型的情况)?

0 个答案:

没有答案