我正在编写一个使用基于 xml 的文件格式来存储对象图的应用程序。我没有以前的版本可以支持。
我的用户可能会将文件置于版本控制之下,并且(不可避免地)有时需要手动编辑以解决 merge 冲突。我希望从一开始就最大限度地减少发生 merge 冲突的可能性,尽可能轻松地解决它们,并最大限度地减少文件在编辑后损坏的可能性。
如果需要,我可以添加有关我正在存储的数据的具体信息,但我应该牢记哪些一般原则?
我已经有了一些想法:
- 基于文本(显然)
- 确保相同的对象图始终以相同的方式表示
- 最大限度地减少存储的关系数量
最佳答案
我认为在您提到的前两项之后,最重要的事情可能是确保您不要在一行上放置太多信息。大多数版本控制系统根据行来跟踪和 merge 更改,因此如果一行中包含大量信息,那么人们更改非常不同的内容可能最终会修改同一行,从而产生冲突。这些冲突将会很困难,因为大多数 merge 工具只支持在差异中抓取整行或整个 block 。
换句话说:充分使用换行符。太多总比太少好。
另一个考虑因素是尽可能避免在文本中存储时间戳、哈希值等内容。即,避免每次编辑都会以不可预测的方式改变的事情。这些将很难或不可能手动 merge 。
关于xml - 哪些功能使文件格式对 VCS 友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282916/