每次我做一个项目时,我都会开发几个通用的例程/模块/库,我希望我会在其他项目中使用它们。
由于开发速度的原因,我没有花很多时间使这些模块变得完美——对于这个项目来说已经足够好了,并且有足够的文档和可隔离性,我可以轻松地将它们添加到另一个项目中。
到现在为止还挺好。
现在,当我在另一个项目中使用它们时,我不可避免地会改进它们——添加新特性/功能、修复错误、使它们更通用等。
那时我有几个问题:
你如何管理这个?当您的团队在不同项目中处理不同模块时,这些问题有何不同?
-亚当
最佳答案
如果你的所有项目都使用 Subversion,你可以简单地使用 svn:externals
:这允许一个存储库引用另一个存储库,可选择固定在特定修订版。例如,
svn://svn/shared
svn://svn/project1
|- 目录1
|- 目录2
\- svn:externals "shared -r 3 svn://svn/shared"
svn://svn/project2
|- 目录3
\- svn:externals "shared -r 5 svn://svn/shared"
将您的更改提交到 svn://svn/shared
,并修改svn:externals
准备好后,在各个项目中使用属性。
否则,使用其他 VCS,您可能只是在 shared
上保留一堆标签。 , 每个项目使用 shared
,指向他们使用的版本。准备好后将每个标签推进到更高版本。这需要手动更新每个项目的 shared
副本, 但是(使 svn:externals
好的一件事是它自动发生)。
如果您要 fork /分支 shared
对于每个单独的项目......嗯,这可以工作,但需要人力来维护和合并更改。
[编辑]
更多引用资料:
见 External Definitions在 svn book有关 svn:externals
的教程和更多详细信息, 和 git-submodule tutorial DVCS 中的类似功能 git .
关于version-control - 如何管理共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179004/