【发布时间】:2015-11-23 15:06:44
【问题描述】:
假设您有一个包MyPackage,它依赖于另一个名为Library 的项目。 MyPackage 在 LibraryClass 类中具有扩展方法,该类位于 Library 项目中。
在某些时候 Library 被更改,LibraryClass 被重命名为 NewLibraryClass 或完全删除。您在项目中进行更改,例如将扩展方法移动到 NewLibraryClass 或以不同的方式解决它,这无关紧要。
当某人已经安装了 MyPackage 的 pre-Library-changes 版本并对其进行更新时,就会出现问题。然后首先加载Library 包,因为您的项目依赖于它。在加载 Library 时,LibraryClass 被删除,因此 LibraryClass 中存在的 MyPackage 扩展方法被删除。这会将MyPackage 标记为脏,因此当它最终将更改加载到MyPackage 时,即使没有真正的冲突,也会要求用户解决合并问题。
如何解决?因为最终你的代码是好的,但是更新你的项目的用户会面临奇怪的合并问题。
【问题讨论】:
-
我认为正确处理此问题的唯一方法是让每个项目跟踪(即记住)名称已更改的所有类,并提供依赖项目在加载时可以用来迁移自身的服务.
标签: dependency-management pharo monticello metacello