我需要了解在多个应用程序中使用相同源代码/库的最佳实践。要求是,例如,我正在将我的代码/库出售给某个公司,比方说xyx
,然后我应该在我的包中使用xyz
作为公司名称(如果需要,还可以使用其他地方)。
稍后,如果某个其他公司pqr想要该代码/库,我需要再次手动去更改所有包名(和其他包)并在源代码管理软件中创建另一个存储库。这项任务非常耗时,而且一点也不好 每当我在基本代码中发现错误时,我都需要在相同代码的所有副本中提交更改并将库发布到所有公司。
我试图找到如何应对这种情况。
我在这里谈论一些Java软件包(包含我希望在所有公司的软件中使用的非常基本的功能),并且我使用togoise svn作为存储库。
答案 0 :(得分:3)
如果您要销售代码/库,则表示您提供的是交付,这是因为包装操作。
换句话说,你不会给出repo本身,而是一组打包的文件(例如,档案,zip文件)
这意味着您的回购中的版本来源不必包含公司名称。它们可以包含模板字段(如@COMPANY@
),以及在检查该代码时能够使用正确的值代替该模板字段的脚本。
在git中,这被称为content filter driver,使用.gitattribute
中声明的脚本(作为in here),并将实际值存储在 git中回购(这样,他们不能被误推)
(图片来自" Customizing Git Attributes"来自Git Book)
使用SVN,您可以考虑使用" Keyword Substitution"。
在这两种情况下(Git或SVN),其想法是在其中使用@ COMPANY @对源文件进行版本化,并在需要发布该库时按需生成正确值的文件客户。
不要将开发(发生在您的Git或SVN仓库中)与发布管理混合(可以使用不同的流程,如代表目标公司名称的文件,用于评估源文件。如果是文件不存在,源文件在结帐时保持不变)