前言
大多数时候,我们在开发一个项目的时候,只对应一个版本库,早期的时候我们用SVN,后来我们更常用Git。一般来说这样也就足够了,我这里和大家探讨的是多版本库协同工作的可能性。
Git与SVN同时用
说到这个话题,大家可以在网上搜到一大把文章,一般的场景是说我之前用的SVN,或者公司中心版本库是SVN,但我开发时想用Git进行版本控制之类的。是的这完全可以做得到,只需要让SVN忽略Git信息文件夹.git,Git忽略SVN信息文件夹.svn即可。
注:SVN忽略Git的最佳实践是把配置写在客户端全局,而Git忽略SVN可以在Git的.gitignore中配置,而Git忽略Git则是Git内置的特性。
换一个思路
我这里想说的是多版本库协同,不仅是SVN与Git,也可以是Git与Git,一个大的项目下,各个组件的文件夹分别指向各自的版本库(一般组件版本库我们用Git)。
为什么要这么做呢,意味着某些复用组件,我可以单独开发和测试,而对于大的项目而言,只是这个组件的其中一个调用实例。
注意事项
这样我们在开发项目时,如果改动了一个组件,我们需要先提交到组件版本库,然后我们可以有几个选择:
- 如果初次引用,只需要删除同名文件夹,重新
git clone
即可。 - 如果只有自己在维护,可以直接同时提交给本地项目。
- 如果组件本身是多人维护的,那么我们可以
git pull
拉回最新代码,然后在本地项目完成对兼容性的测试。
好处在哪里?
如果这样划分项目,我们除了得到一个可以工作的项目之外,还可以得到若干可复用的组件。对于一些项目型公司来说,会逐渐积累起自己的核心竞争力。
当然,这已经非常类似于一些组件依赖的包管理工具的核心原理了,所以这里的做法是在没有包管理规范的前提下,提炼复用组件的一种思路。