Dymola、空格和版本控制

Dymola, whitespace and version control

我在 Dymola 中打开了一个 Modelica 库,更改了一行,关闭了 Dymola 并单击“全部保存”,现在 TortoiseSVN 显示了数百个已更改的文件,而不是我打算只更改了一行的一个文件。所有这些变化要么是空格,要么是换行符,似乎是由 Dymola 引入的。

当然,我现在可以小心地只提交我已更改的文件(并还原其余文件),但这使得提交比需要的更耗时且更容易出错。或者我可以全部提交,但这让我的同事很难审查更改。此外,感觉它不是确定性的,因此以后的提交可能只是将部分还原。有时我什至还原所有更改,然后使用文本编辑器只更改一行。所有这些都使版本控制不必要地变得复杂。

当我查看提交和差异时,例如Modelica 标准库:
https://github.com/modelica/ModelicaStandardLibrary/commits/master
差异很好,很小,通常可读。有没有避免空白问题的技巧?
我怎样才能关闭 Dymola 的所有自动格式设置?首先有技术原因吗?

您可以做一些事情来为 Modelica 代码做出漂亮的 git 提交:

  1. 使用文本编辑器而不是图形编辑器。您对更改的内容有绝对的控制权。
  2. 使用不更改空格的图形编辑器。我不确定其他替代方案,但 OpenModelica/OMEdit 将尽可能保留现有缩进(它也可用于最小化其他工具中更改的差异,但它的效果越来越差有更多的变化).
  3. 使用格式化程序作为 pre-commit 挂钩(根据格式化程序中的某些设置缩进所有文件;但是您不能手动更改空格)。
  4. 希望 Whosebug 上的人有比这更多的选择。

您可以减少(但不能完全阻止)这种行为,方法如下:

  1. 增加最大行长度,例如到 130

    • 在 GUI 中:选项 > 文本编辑器 > 最大行长度
    • 从命令行:Advanced.MaxLineLength=130
  2. 让 Dymola 一次格式化您的整个库

    • 打开 top-level 包的文本视图
    • Ctrl+A
    • 标记一切
    • Auto-format 与 Ctrl+Shift+L 或 Right-Click > Auto-Format
    • 使用 Ctrl+Shift+S
    • 保存所有内容
    • 现在完成更改。大多数都会有用,但有时会删除您通常喜欢保留的空格(尤其是在 importextends 语句之前。它们有时会移到最左边)
    • 提交更改
  3. 从现在开始尝试只保存单个模型,而不是包
    (保存包时,Dymola 有时会重新格式化嵌套的 类)