在我的公司享受从SVN到 Git 的转变,我们正在重新思考我们的工作流程和开发流程,以提高效率。
以下是我们项目之间依赖关系的描述:
first_app/
└── first_specific_dep
└── common_dep
second_app/
└── second_specific_dep
└── common_dep
我们正在寻找在Git中表示依赖关系的更好方法,尤其是在从分支切换到另一个分支时。
为了在整个开发过程中保持舒适,根项目中的 git checkout 最好自动执行子项目中的所有其他检出,因此测试人员不会担心什么是依赖的分支。
答案 0 :(得分:1)
不幸的是,在这种情况下没有灵丹妙药。有些人试图使用Git子模块来解决这个问题,但据我所知,这个问题取得了不同的成功。 (但是,我自己没有经验,所以我欢迎其他选择。)
在我现在的公司,我们刚刚从CVS过渡到Git,我们面临同样的挑战。我们学到了两条实用指南:
如果您的功能分支通常涉及多个存储库,则应考虑合并存储库或重新组织代码。作为一个粗略的指导原则,您应该将开发的90%以上用于一个分支上的功能。否则,功能要么太大,要么组件(存储库后面)没有很好地分离。
实用功能确实是一个问题,因为您无法避免在项目之间共享它们(这是它们的目的)。但是,大多数时候,它们应该相对稳定。当您在功能分支内部进行开发时,相对很少需要修改实用程序功能。
换句话说,代码的逻辑结构越好,你就越不会遇到问题。
最后,如果怀疑是否要拆分存储库,我建议将其保留在一个存储库中。但是,如果您拥有庞大的代码库,则不建议使用一个大型存储库,您的推送通常会被拒绝为非快进。
我们还在Git上构建了几个脚本,以便更容易地检查项目的所有依赖性,但同样,这在很大程度上取决于您的环境。