0

我必须根据软件供应商的现有源代码设置 git 存储库以开发软件。源代码会定期更新,我正在寻找最有效的方法,我提出了 2 种工作模型,我很想听听您对哪一种(或另一种)最有效的意见情况。

总体而言,将有 3 个完全独立的团队,每个团队在各自独立的代码存储库中工作:A、B、C。

源代码存储库/团队 A 是基于供应商代码的退出位置。源代码存储库/团队 B 是基于供应商代码退出 + 第三方扩展的地方。我正在尝试设置的源代码存储库/团队 C,它应该基于 A + B 和我们自己的扩展。

每当存储库 A 发生变化时,B 团队的人都会将其拉入他们的存储库,集成并使其可供 C 团队使用。

团队 B 也可以自行发布独立版本(无需团队 A 的任何更改),他们将为团队 C 提供这些版本。

对于团队 C,我将设置存储库单独的分支:

master
TeamA
TeamB
develop

分支 TeamA 和 TeamB 将由我们(团队 C)管理 - 每当我们收到来自团队 A 和 B 的代码并将它们合并到开发中时,我们都会自行更新它们。

目标是能够理解 TeamA 和 TeamB 之间的差异(开发)(以及 TeamA 和 TeamB 之间的差异),并且最容易地将团队 A 和 B 的更改集成到开发中。

我想知道如果我设置以下结构是否有任何区别:

1)基于master制作所有分支

master
    TeamA
    TeamB
    develop

或者,2)使分支的以下父子结构

master
    TeamA
        TeamB
            develop

我想知道它是否有任何实际区别。

过去有没有人遇到过类似的情况,您会推荐什么方法?

4

1 回答 1

0

在 Git 存储库中,每个分支都是单独工作的。因此,您提供的两种结构实际上与其他结构相同。您的分支结构可以为您的团队(团队 C)工作。

您还可以在 repoC 中豁免TeamATeamB分支,将更改从 repoA 和 repoBdevelop直接拉到分支:

git remote add -f teamA <URL for repoA>
git checkout develop
#Use git fetch teamA and git fetch teamB when there has new changes on repoA and repoB
git pull teamA/master --allow-unrelated-histories
git pull teamB/master --allow-unrelated-histories
#After making changes and commit changes on develop branch
git checkout master
git merge develop

注意:无论您使用哪种分支结构,您都应该注意合并冲突,因为三个 repos 包含相同的文件/代码。

于 2017-09-27T06:43:30.423 回答