我们有一个内部项目,例如,一个身份验证后端。此后端的代码纯粹是为了满足我们公司的需求而定制的。但是,我们正在将我们的项目作为开源项目发布。为此,我们创建了一个新的身份验证后端,它使用标准和开放软件。因此,我们可以使用新的后端公开发布,并为我们保留另一个。
现在问题:
我们想拥有没有自定义内部的公共git存储库 码。如何分离公共/私人代码而不冒最终导致彼此漂移的两个项目?
我们看到很多选项有一些赞成和反对意见,所以我们来到这里看是否有人遇到过这种情况或有任何建议?
答案 0 :(得分:1)
单方面确保开源项目的未来发展方向是徒劳无功的。您可能施加的任何控制措施只会被社区规避(例如通过分叉),如果它们最终限制了人们想要采取的方向。
因此,在某种程度上,保持一致性意味着您必须在内部承诺保持内部版本与风向OSS版本的任何地方保持一致。 (这样的承诺不是绝对的......只是,如果公众的变化超出了你愿意跟上的变化,那么项目将分歧。)
也就是说,你可以做的事情可能会阻止导致公共和私人版本发生变化的变化。对我而言,这意味着两件事:
1)您希望阻止对auth后端和主项目之间的接口进行更改,以便仍然可以在公共和私有身份验证后端之间进行交换。
虽然看起来有点薄,但一步就是将auth后端与主项目分开发布。每个都可以拥有自己的git repo,并假设您在构建工具中使用依赖项管理器,后端可以列为主项目的依赖项。然后,对主项目进行修改的人甚至可能无法下载auth后端的源代码;无论如何,要改变两者之间的界面,他们必须对两个公共项目进行协调的改变。这样就不太可能随便发生。
2)您还希望确保发生做的任何更改,您可以在项目的公共版本和本地版本之间来回传递它们。
这可以通过保留一个回购物来帮助,因为它们是相同的" (主要项目)和单独的回购(公共和私人)为"什么是不同的" (auth后端)。