我們有一些大項目,以前一直用的TFS管理,現在需要轉移到git來使用。
但是轉移的過程中遇到一些問題。
例如,在TFS裡面,我們有一個核心項目,其他很多項目都會引用這個核心項目。在GIT裡面,每個專案就是一個repo,所以repo之間要如何互相引用呢?
我畫了一個示意圖:
我試過submodule和subtree,他們都會在主項目的repo下拷貝一份引用的項目的程式碼,這樣程式碼就會有很多份。 GIT有沒有一種方式能像TFS一樣,無論多少個項目互相引用,都只有一份程式碼,而且很好維護?
目前我們的專案結構大概是這樣的:
如果用GIT,那麼product_core的程式碼就會被拷貝很多份。有沒有會自動引用項目且不會拷貝多份程式碼的解決方案呢?
如果是java工程的话,推荐用
Maven
或者gradle
管理项目依赖,再用git管理项目工程。当然Maven
,gradle
也能管理非java工程。搜索了一番,这个问题与题主类似:
http://programmers.stackexchange.com/questions/114719/organizing-git-repositories-with-common-nested-sub-modules
我的理解是你们各个模块耦合在了一起。但是有些时候也是无法避免的。
公共组件或代码尽量少改动。模块化,不建议把多个项目缩成一个项目
来管理。现在很多语言都会有自己的第三方组件,这些插件也是单独用git
管理的,发行一个稳定版,日后组件有更新了再去项目中进行更新。
我理解下来,你的core相当于基础项目,这个引用关系为什么要放在源代码层面来维护呢?项目源码本来就应该是相对独立的,这样耦合在一起的目的是什么呢?
maven不是正是用来做这个工作的吗?为什么一定要在源码层引用?
拆分成独立的应用,你这种结构多分支开发很快会蛋碎一地