每次我创建一个项目时,我都会开发几个通用的例程/模块/库,我希望它能用于其他项目。
由于开发速度快,我不会花很多时间来完善这些模块 - 对于这个项目来说已经足够好了,并且有足够的记录和可隔离性,我可以很容易地将它们添加到另一个项目中。
到目前为止一切顺利。
现在,当我在另一个项目中使用它们时,我不可避免地要改进它们 - 要么添加新的功能/功能,修复bug,使它们更通用等等。
那时我有几个问题:
你是如何管理的?当团队在不同项目中处理各种模块时,这些问题有何不同?
- 亚当
答案 0 :(得分:11)
如果您对所有项目使用Subversion,则只需使用svn:externals
:这允许一个存储库引用另一个存储库,可选择固定在特定修订版本中。例如,
svn://svn/shared svn://svn/project1 |- dir1 |- dir2 \- svn:externals "shared -r 3 svn://svn/shared" svn://svn/project2 |- dir3 \- svn:externals "shared -r 5 svn://svn/shared"
将您的更改提交到svn://svn/shared
,并在准备好后修改各个项目中的svn:externals
属性。
否则,使用其他VCS,您可能只需在shared
上保留一堆标记,每个项目使用shared
一个,指向他们使用的版本。准备好后,将每个标签推进到更高版本。这需要手动更新每个项目的shared
副本(让svn:externals
很好的一件事就是它会自动发生)。
如果您为每个项目分配shared
......那么,这可行,但需要人力来维护和合并更改。
进一步参考:
请参阅External Definitions中的svn book获取有关svn:externals
的详细信息,以及有关DVCS git-submodule tutorial中类似功能的git的详细信息。
答案 1 :(得分:1)
当然,正如PersistenceOfVision所说,使用版本控制,并保持每晚构建以确保您不会破坏旧项目。
答案 2 :(得分:0)
如果代码足够通用,你在多个项目中使用它,你是否有可能重新发明轮子?相反,如果您对现有库进行标准化,那么您将拥有经过充分测试和优化的代码,并且您将无需维护任何内容。
答案 3 :(得分:-1)
选择软件版本控制包...
例如:
SVN + TortoiseSVN是我们目前的解决方案。 (免费)
有些人更喜欢Visual Source Safe。 (不是免费的)