2009-07-31 65 views
1

我们公司有很多解决方案。他们中的大多数人正在使用一组用于不同功能的通用库(日志记录,缓存,数据访问)。跨项目管理和版本控制公共库

我的问题是你如何确保他们得到妥善管理?

参考跟踪项目直接从Windows APP1

优点:你不必合并和分支。

缺点:您可以在重新编译代码时在系统中引入问题。从现在起它正在编译最新版本。

分支为每个项目跟踪并合并它们每隔一段时间 利弊是第一选择完全相反。

我可能完全没有想法,但我相信必须有更好的方法。

回答

1

我们在这里所做的只是不断更新和改进我们的通用库,然后当我们得到一个我们感到满意的点,并且需要在应用程序中使用它时,我们将主要或次要版本根据更改数量,为其构建安装程序,并将其标记在源代码管理中。

我们需要对该应用程序进行更改时,通过将其升级到最新版本来处理旧应用程序。

我为通用库构建SDK和Redistributable安装程序。 SDK包含所有开发人员,包括源代码,模板,文档,将DLL放在驱动器上,并将DLL放入其GAC中。可再发行组件简单地将这些DLL放入GAC中。我们在服务器上安装可再发行组件。

我们很快就会去找一种方法,在这种方法中我们不会生成一个可再发行组件。我们只会生成一个SDK,并且在该SDK中将成为公共库的合并模块。当开发人员使用该库并准备将其应用程序移至生产环境时,他们将为其构建安装程序并在该安装程序中包含合并模块,这样应用程序的部署始终具有正确版本的公用库,而我们不必担心首先将其安装在服务器上。

我对你的环境一无所知,所以我不知道这些技术是如何为你工作的,但它现在对我们来说工作得非常好。

+1

我想补充说,来自其他项目的团队可以根据自己的项目需要来决定使用哪种版本的普通libruary。 – 2009-09-04 13:51:36

0

要做出的一个重要区别是,如果服务器上的两个子项目运行不同版本的“共享”代码,那么它是否很重要。图书馆,你可能没问题。共享服务?可能不会。如果是后者,那么分支变得更加棘手,因为每个人都很容易失去同步。如果你可以负担得起并行运行不同的版本,那么我会选择分支方法,因为它可以让每个项目/区域更好地控制何时接受更改。

您没有提到的一个选项是将常见项目的二进制文件存储在源代码管理中,并使用二进制引用。这与第二个选项(分支)具有相似的属性。与直接引用项目相比,问题少,因为只有已知好的(或至少可编译的)版本可用。其中一个缺点是,编辑共享项目并行使用它可能会有点痛苦。

这也有助于避免您的大型解决方案混乱。

你也可以用这个设置做一些聪明的事情,比如在你的共享项目上用一个自定义后期构建任务设置一个CI构建来检查新的二进制文件。