为新的主要更新创建一个单独的存储库?

Creating a separate repository for a new major update?

我有一个开发框架,我将很快对其进行重大更新。 (至 2.0.0)

我更改了我的框架的整个设计,因此它与以前的版本完全不兼容。

就我而言,为我的新主要更新创建一个单独的 Git 存储库是个好主意吗?还有这种情况吗?

如有任何意见,我将不胜感激。

我会维护相同的存储库和相同的分支以保留所有历史记录。您可以使用标签来管理此更改,我的意思是,您将能够使用此标签执行很多操作。例如结账、分享等

我认为这篇文章可能对您非常有用:

https://git-scm.com/book/en/v2/Git-Basics-Tagging

一些现实世界的例子

Yii framework前段时间做过这样的事情。 Yii 2.0 被完全重写 - 几乎所有 类 名称都被更改(由于引入了名称空间)并且您实际上可以同时使用 Yii 1.1 和 Yii 2.0,因为它们充当两个独立的库。所以 Yii 团队选择创建单独的存储库 (yii2) 和单独的包名称 (yiisoft/yii2)。这自然产生了一些约定——通常 Yii 2 扩展以 yii2- 为前缀,以区别于完全不同的 Yii 1.x(通常以 yii- 为前缀)。到目前为止一切顺利 - 有一致的命名约定,可以避免框架版本之间的混淆。

但是现在 Yii 想使用 semver。这自然需要发布下一个主要版本——Yii 3.0。 3.0 不会完全重写——只会改变框架的某些部分。创建新的 yii3 存储库和新包是没有意义的。所以要么我们在 yii2 存储库中有 Yii 3,要么我们需要重命名存储库和包名称(它被成千上万的应用程序和扩展用作依赖项)。两个选项都很糟糕。


所以我不建议创建新的存储库,除非您想将其视为全新的框架(使用不同的名称,而不仅仅是 myframework2)。使用 2 作为后缀创建新的存储库和包可能看起来很诱人,因为它可能会解决一些问题,但从长远来看,它可能弊大于利。