我有一组服务器,上面有代码库。我们称它们为p1,p2,p3。我有一个开发服务器,用于存储代码d1。每个p服务器都有不同的代码库。
我正在试图弄清楚如何正确管理git repo,以便每个“p”服务器都能使“d1”服务器保持最新状态。
这就是我所做的。
我的d1服务器现在有一个包含子文件夹的/ git /文件夹
p1,p2,p3。这些中的每一个都具有正常的
内容HEAD分支配置描述钩子信息对象引用。
我可以将这些存储库克隆到另一台机器或文件夹,然后我可以看到实际的文件,这正是我想要的。
好的,这是我的问题。
当有人克隆d1副本并提交时,如何使p1 repo保持最新状态。
我是否需要在p1上运行git fetch
或者我应该让人们改变p1然后git推送到d1。
答案 0 :(得分:1)
您可以使用gitolite实施镜像,以使中央服务器保留其他人的所有最新代码
来自http://gitolite.com/gitolite/mirroring.html
镜像很简单:你有一个" master"服务器和一个或多个 "从"服务器。奴隶只从主人那里获得更新;到了 在世界其他地方,他们充其量只读。
在下面的图片中,每个方框(A,B,C,...)都是一个回购。该 回购的主服务器为红色,从属为绿色。用户 推送到主服务器(红色)和主服务器上的repo - 一旦用户的推送成功 - 然后执行git push - 镜像到从属。箭头显示了这个镜像推动。
第一张照片显示了gitolite镜像曾经像一个长镜头 很久以前(实际上是v2.1之前)。只有一个主服务器; 其余的都是奴隶。每个奴隶镜像所有的回购 掌握,不多也不少。
这很容易理解和管理,实际上可能没问题 对于许多小网站。镜子更多"热备用"什么都没有 其他
但是,如果你有超过4000名开发人员使用25台服务器进行500次回购 城市,那个单一的服务器往往会变得有点紧张。 特别是当你意识到很多项目都有很高的本地化 开发团队。例如,如果项目的大多数开发人员都是 在城市X,可能有一些在城市Y,然后有主服务器 在城市Z是......次优的: - )
所以,现在大约3年,gitolite可以做到这一点:
您可以轻松查看此方案中的差异,但此处还有更多内容 关于gitolite可以做什么的完整描述:
不同回购的不同主人和奴隶。
这可以让您执行以下操作:
使用最接近大多数开发人员的服务器作为主服务器 回购。仅将repo镜像到某些服务器。有回购那个 纯粹是服务器的本地服务器(根本没有镜像)。推送到奴隶 需求或通过cron(有助于处理带宽或连接 约束)。无论是否是gitolite-admin,这一切都是可能的 repo是镜像的 - 也就是说,所有服务器都具有完全相同的功能 gitolite-admin repo与否。
推送到奴隶可以透明地转发给真正的主人。
您的开发人员无需担心回购主的位置 - 他们 只需写入所有回购的本地镜像,即使是他们的本地 镜子只是某些人的奴隶。