2

所以我对 Git 很陌生。我在本地使用了一段时间,但从来没有达到分布式团队协作的预期目的。

背景: 最近我公司的外部开发人员开始推动我自己和我公司的另一名员工,他们一直在对我们的网站进行微小的更改,以开始承诺他们的回购。他们使用 git flow 工作流程。

计划的流程: 我的公司在流程和控制方面非常强大,所以我们的 IT 部门有一个人,如果你愿意的话,他将充当那种“看门人”。他将我们开发人员的 repo 副本克隆到我们的网络,员工 #2,然后我从看门人的克隆中克隆。员工 #2 和我永远不会直接访问开发人员的仓库。我检查了看门人的克隆,他拥有我们开发者仓库的所有跟踪分支。我的他的克隆没有任何跟踪分支。为了获得跟踪分支,他是否必须检查我们需要的所有分支,然后让我和员工 #2 进行提取?并且将我们的分支进入他的(看门人)分支进入他们的(开发人员)分支是否可能存在问题。

这是计划过程的一个小ASCII图:

   Developer repo
         |
         |
 Company "Gate keeper"
        / \
       /   \
      /     \
     me     employee #2

似乎如果我没有适当的开发分支来创建功能分支,它就会把事情搞砸。

抱歉,拖了这么久,感谢您的帮助!

tl;dr从没有原始的所有远程跟踪分支的克隆的克隆中工作,我如何获得它们以及潜在的问题是什么?

4

3 回答 3

0

您和#2将把Gatekeeper存储库作为远程,并从中获取。当你这样做时,你只会获得Gatekeeper本地分支的状态,在它们当前各自的提交中。

因此,Gatekeeper需要相关分支以从开发者git pull存储库中获取最新更改。然后您可以从Gatekeeper拉取最新的更改。

这对我来说似乎很不方便,因为它依赖于Gatekeeper定期拉动以便您可以拉动。另外,如果有他不喜欢的变化, Gatekeeper应该怎么做?git revert它?

一个可能更好的替代您的工作流程的方法是Integration-Manager WorkflowGatekeeper可以是集成经理,而您、#2开发人员可以是贡献者。

什么是最好的很大程度上取决于看门人的角色。是他负责代码,还是开发人员负责?

于 2013-06-05T17:44:46.060 回答
0

我会说一般来说这是不好的做法,除非看门人和你们两个是唯一在存储库上工作的开发人员。Git 的优势之一是保持本地功能分支,您可以通过合并来自主分支的最新更改(在 git 流的情况下为开发分支)轻松保持最新状态。

想象一下,你有一个功能分支,它的开发时间很长,比如 2 周。如果开发分支经常被其他开发人员推送到并且看门人不经常更新他的存储库,那么在尝试合并它时,您会因冲突而头疼。如果你幸运的话,当他试图将它合并到主存储库时,这将是看门人的头痛。

您的主存储库托管在哪里?如果它托管在例如 Bitbucket 或 Github 上,更好的方法是授予您对存储库的读取权限,以便您可以分叉它。然后你可以分叉存储库,提交到你自己的副本,然后对主库执行拉取请求。这样,您可以使您的 fork(和您的本地工作空间)保持最新,而看门人和其他人可以在您的代码合并到主存储库之前对其进行审查。

设置看起来像这样

-------------------           -------------------------------
| Main repository |           | Your forked repository      |
-------------------           | (Main repository as remote) |
Gatekeeper can read/write     -------------------------------
You can read                  You have read/write access
                              You can fetch/pull the latest changes from main
                              You can push your commits

现在,您可以轻松地获取/拉取最新更改到您的分叉存储库并启动其中的功能分支。如果主存储库已更新,您始终可以获取/提取更改并将它们合并到您的功能分支中。

完成本地功能分支了吗?将整个分支推送到您的分叉存储库,然后向主存储库发出拉取请求,然后可以对其进行审查、合并或拒绝。

这将为您和其他相关开发人员节省公司时间和很多麻烦。

于 2013-06-05T18:18:29.720 回答
0

假设承包商的仓库同样(裸露和)DMZ'd,我会考虑在每个仓库中都有接收后挂钩,以便相互推动。为了防止在公司间边界发现推送冲突,使 dmz 存储库中的每个分支只能由一家公司或另一家公司更新。

于 2013-06-05T19:31:27.250 回答