git - 使用分支或单独存储库来维护不向后兼容的多个代码版本的正确方法是什么?
问题描述
我为 Revit 编写插件。这些加载项依赖于 Revit API 库。这些库随 Revit 的每个新版本(2018、2019、2020 等)而变化。不幸的是,它们不向后兼容,因此我无法将 2018 年的加载项与 2020 年一起使用。这意味着我为 2018 年、2019 年和 2020 年维护自己的代码的单独存储库。我目前正在使用拉取请求,以便如果我在 2018 年进行了更改,我可以将其移至 2019 年和 2020 年。问题是,当请求出现时,它会更新我的 2019/2020 年库以引用 2018 年库。然后我必须返回并确保它引用了正确的库。
每次我需要将更改推送到其他版本时,我应该如何避免这个问题?
解决方案
您确定您的 2018 附加模块无法在 Revit 2020 中使用吗?
在许多情况下,如果不是大多数情况下,情况恰恰相反。
通常,您也可以在更高版本中使用为先前版本的 Revit 编译的加载项。
如果您调用的 Revit API 功能在版本之间发生了变化,您可以通过为早期版本的 Revit 进行编译并添加 .NET 运行时功能来在运行时检查是调用旧版本还是新版本的 Revit API 来处理该问题。更改的调用可以在运行时为新版本动态更新。
查看Building Coder 多版本插件以获取完整的实施示例。
也就是说,我仍然完全同意你的问题本身;在许多情况下,您需要为每个 Revit 版本单独更新干净的加载项版本,以避免复杂性并增强代码的可读性。为此,我完全同意 Ôrel 为每个版本维护一个单独的分支并将更新合并到其他分支中。
推荐阅读
- java - 如何记录所有 REST 调用?
- synchronization - 似乎没有实际同步到一个驱动器,也找不到本地副本
- php - 我将如何内爆以获得 GET 请求的正确值
- redis - 雷迪斯 | 获取管道结果作为输入命令的映射
- odata - Odata 适配器在 CRUD 操作期间是否支持带有“$expand”查询的“补丁”请求?
- bash - 在 Bash 的循环中生成时间戳的问题
- typescript - 为什么 TS 私有构造函数 arg 不会产生“this”上下文属性?在示例中有效!是否依赖于 TS 版本?& VS Code 修复了什么?
- java - 内联代码 - 不兼容的类型:无法推断类型变量 T
- sql - 遇到除以零错误 - 使用数值和 DATEDIFF
- docker - 使用 docker network (ssh) 在不同机器上运行的两个 docker 容器之间进行通信