Version control 区分/合并友好的人类可读配置文件格式

Version control 区分/合并友好的人类可读配置文件格式,version-control,configuration-files,Version Control,Configuration Files,我的用户希望在版本控制系统中存储我的应用的设置 (该应用程序面向开发人员和设计师,允许按文件夹设置。用户经常要求我将这些设置存储在文件夹中,以便他们将其提交给VCS。) 这些设置是从应用程序的UI修改的,因此以编程方式保存,但我希望生成的文件是可读的。我的第一个选择是打印精美的JSON,除了合并是件有趣的事情(想想那些被禁止的尾随逗号) 这让我思考:我能使用的最有利于区分/合并的人类可读文本格式是什么? 我知道许多版本控制系统支持外部合并工具,但我不想让用户负担额外的设置我的目标是尽量减少意外冲

我的用户希望在版本控制系统中存储我的应用的设置

(该应用程序面向开发人员和设计师,允许按文件夹设置。用户经常要求我将这些设置存储在文件夹中,以便他们将其提交给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个空行是否有助于消除差异上下文并最小化冲突