ユーザーは、アプリの設定をバージョン管理システムに保存したいと考えています。
(このアプリは開発者とデザイナーを対象としており、フォルダーごとの設定が可能です。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つの質問:
誰かが以前にこの問題を解決しようとしたことがあり、おそらく彼らの経験を書き留めましたか?
出力ファイルをフォーマットするときに考慮すべきことはありますか?
たとえば、ルール間に 2 ~ 3 行の空行を追加して差分コンテキストを無効にし、2 人のユーザーが両方とも最後に新しいルールを追加した場合 (非常に典型的なケース) の競合を最小限に抑えるのに役立ちますか?