我的任务是配置以下设置。
目前,我们有一个开放资源项目的内部规范回购。我们有一个post接收钩子,可以将任何更新推送到公开给公众的远程存储库。
乔·公众可以从公共回购中撤出。
除了回收站钩外,没有人推到遥控器上。
我们有相当多的用户在内部处理代码,我真的不想搅乱他们已经在工作的工作流。
内部用户从内部规范回购中签出代码,并提交相同的代码。
外部开发人员必须提交补丁,然后内部用户将为它们提交(经过审查)。
此时,我们希望开始允许一些外部开发人员对存储库进行提交访问。
这意味着远程回购规范。
它还意味着为用户更改工作流。除非这里的集体能想出我所缺少的关于git的东西。
当前工作流的快速图表。
内部用户。
从内部回购克隆。->猴子用代码->推到内部回购->后接挂钩推到远程回购.
外部用户。
从外部回购克隆。->猴子与代码->提交补丁通过邮件列表->内部用户推送代码到内部回购->后接收钩子被推到远程回购。
理想的新工作流程!!
内部用户。
从内部回购克隆。在提供克隆之前,->可以确保我们有一个来自远程->猴子的更新镜像,其中包含代码->、推到内部回购、->预接收钩子代理、提交到远程回购和同步2。
外部用户。
远程回购的克隆人。->猴子的代码->推到远程回购。
这有点像一个多主的设置。在此,您可以将代码推送到回购和从任何回购中提取代码。
还有一些其他的警告。
内部回购可以从远程回购推拉。远程回购无法到达内部回购。
你认为如何?
发布于 2012-11-06 01:24:53
这会有点麻烦,而且有一些工具被设计用来做这件事--但是每当任何人对其中的任何一个进行更改时,它们都会通过“锁定”所有的存储库来工作。在你的例子中,我认为有一个更简单的方法。
假设远程存储库在ssh://remote/dir/proj.git可用,内部存储库在ssh://internal/someplace/proj.git上可用。添加到每个人的.gitconfig
[url "ssh://remote/dir/"]
pushInsteadOf = "ssh://internal/someplace/"这意味着,与任何克隆内部存储库的人相比,从服务器附近提取的速度仍然很快,但是每个人都推到了同一个远程存储库。一旦在每个人的工作站上以这种方式设置了.gitconfig,您只需要clone、push和pull --不需要额外的标志,也不需要配置东西。
请注意,这种设置的唯一真正好处是从内部存储库获取数据时所获得的额外速度。这是一个惩罚,因为cron作业的粒度控制了内部用户获取更改的速度--但我真的希望您不要让一群猴子在同一个分支上打字。
关于钩子的说明
当从Git获取存储库时,Git中没有触发的钩子。如果您想在响应git fetch时执行这样的操作,您可能可以用一个包装器脚本替换git upload-pack,该脚本在调用真正的git upload-pack之前同步两个存储库。
发布于 2013-06-19 14:37:18
我所处的情况非常相似--我计划的方法是尝试配置本地回购,以执行一个从远程进行拉(自动接受本地合并冲突)的预接收钩子,以及一个推到远程回购的后收挂钩。此外,我还计划设置一个cron作业,它每隔5分钟从遥控器拉到本地,也自动接受本地合并(因为我不能从远程->本地推送)。
这样,远程用户就可以推开他们的回购,但是本地的回购会起到“主人”的作用,而本地用户则会停止本地回购。我想汽车冲突的解决有很多潜在的问题。由于我们的CI设置为每15分钟进行一次构建,当出现提交问题时,就会合理地快速发现问题。现在,如何将所有这些连接起来..。我明天就要开始了..。
https://stackoverflow.com/questions/13242785
复制相似问题