子项目中的Git自动结账

时间:2013-01-18 17:33:38

标签: git workflow

在我的公司享受从SVN到 Git 的转变,我们正在重新思考我们的工作流程和开发流程,以提高效率。

以下是我们项目之间依赖关系的描述:

first_app/
└── first_specific_dep
    └── common_dep

second_app/
└── second_specific_dep
    └── common_dep
  • 两个应用程序都是相互依赖的,因此单个用户故事可能涉及两个项目的开发。
  • 可以同时实现多重开发,因此功能分支似乎是一个好主意。
  • 同时,第一级应用程序中的开发可能涉及一个或两个依赖项的开发。

我们正在寻找在Git中表示依赖关系的更好方法,尤其是在从分支切换到另一个分支时。

为了在整个开发过程中保持舒适,根项目中的 git checkout 最好自动执行子项目中的所有其他检出,因此测试人员不会担心什么是依赖的分支。

1 个答案:

答案 0 :(得分:1)

不幸的是,在这种情况下没有灵丹妙药。有些人试图使用Git子模块来解决这个问题,但据我所知,这个问题取得了不同的成功。 (但是,我自己没有经验,所以我欢迎其他选择。)

在我现在的公司,我们刚刚从CVS过渡到Git,我们面临同样的挑战。我们学到了两条实用指南:

  • 如果您的功能分支通常涉及多个存储库,则应考虑合并存储库或重新组织代码。作为一个粗略的指导原则,您应该将开发的90%以上用于一个分支上的功能。否则,功能要么太大,要么组件(存储库后面)没有很好地分离。

  • 实用功能确实是一个问题,因为您无法避免在项目之间共享它们(这是它们的目的)。但是,大多数时候,它们应该相对稳定。当您在功能分支内部进行开发时,相对很少需要修改实用程序功能。

换句话说,代码的逻辑结构越好,你就越不会遇到问题。

最后,如果怀疑是否要拆分存储库,我建议将其保留在一个存储库中。但是,如果您拥有庞大的代码库,则不建议使用一个大型存储库,您的推送通常会被拒绝为非快进。

我们还在Git上构建了几个脚本,以便更容易地检查项目的所有依赖性,但同样,这在很大程度上取决于您的环境。