xml - 哪些功能使文件格式对 VCS 友好?

标签 xml git svn version-control

我正在编写一个使用基于 xml 的文件格式来存储对象图的应用程序。我没有以前的版本可以支持。

我的用户可能会将文件置于版本控制之下,并且(不可避免地)有时需要手动编辑以解决 merge 冲突。我希望从一开始就最大限度地减少发生 merge 冲突的可能性,尽可能轻松地解决它们,并最大限度地减少文件在编辑后损坏的可能性。

如果需要,我可以添加有关我正在存储的数据的具体信息,但我应该牢记哪些一般原则?

我已经有了一些想法:

  • 基于文本(显然)
  • 确保相同的对象图始终以相同的方式表示
  • 最大限度地减少存储的关系数量

最佳答案

我认为在您提到的前两项之后,最重要的事情可能是确保您不要在一行上放置太多信息。大多数版本控制系统根据行来跟踪和 merge 更改,因此如果一行中包含大量信息,那么人们更改非常不同的内容可能最终会修改同一行,从而产生冲突。这些冲突将会很困难,因为大多数 merge 工具只支持在差异中抓取整行或整个 block 。

换句话说:充分使用换行符。太多总比太少好。

另一个考虑因素是尽可能避免在文本中存储时间戳、哈希值等内容。即,避免每次编辑都会以不可预测的方式改变的事情。这些将很难或不可能手动 merge 。

关于xml - 哪些功能使文件格式对 VCS 友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282916/

相关文章:

android - 如何使用相应的 XML 文件创建 Activity ,只需点击一个按钮

Git parent 和祖先之间的逻辑区别是什么

svn - 跟踪一个人开发的项目中的任务和错误历史有用吗?

java - 将 JAR 文件(库) checkin 版本控制工具 - 这是一个好习惯吗?

c# - .NET 在使用 XmlTextReader 找到特定的 XML 节点后对其进行编辑

c# - 找不到与具有绑定(bind) WSHttpBinding 的端点的方案 http 相匹配的基地址

git - 仅保留最后三个 git 提交。完全删除其他所有内容

git - WebStorm 注释在破折号和空格上切断用户名

svn - 是否可以恢复整个 SVN 存储库?

python - 如何在 XML 文件中定义应用程序的验证规则