我们在testing服务器上有一个git仓库(我们称之为test1)。 存储库非常简单,只需掌握没有分支或任何东西。 这个回购的目标是跟踪/ etc / puppet及其所有子文件夹的变化。 它通常是干净的,并与头同步。
现在我们想把test1:/ etc / puppet中的所有东西都复制到生产服务器(我们称之为prod1),同时在两台机器之间保持适当的git工作stream程。 每当test1的变化准备好生产,我们想用git把它们从test1推到prod1。 这里的目标是能够快速恢复prod1上的更改,如果有任何事情发生中断。
这是迄今为止我所拥有的:
你怎么看? 我们应该继续使用一个主分支,还是需要创build一个新的分支? 如果我们创builddevel分支,那么我们如何将它与新创build的裸回购一起使用?
如果我总结一下你的请求,你想要的是build立一个具有1个git服务器的架构,它接收用户的所有推送,并在准备就绪时自动推送。
例如,基于gerrit review系统的架构完全是这样做的。 工作stream程如下:
所以这里的优点是,没有人(如果configuration合适的话)可以在没有最less的审查和基本testing的情况下推动主人。 所以你从掌握分支(几乎)总是干净。
其实我已经自己整理出来了。 经过一些testing之后,我在test1上创build了一个中间裸Git回购(git init –bare)。 这将作为一种git服务器,将会接收并推送提交到test1 + prod1回购。
为了做到这一点,我做了以下几点: 在test1机器上: 1. mkdir /opt/puppet.git 2. cd /opt/puppet.git 3. git init –bare 4. cd / etc / puppet(其中当前的git回购与实际的代码位于)5. useradd git && passwd git(允许从远程主机推/拉)6. git远程添加起源git @ test1:/opt/puppet.git 7. git推起源 – 所有我现在有我所有的代码存储在光秃秃的回购在/opt/puppet.git在prod1 1.光盘/ etc 2. git的克隆git @ test1:/opt/puppet.git 3.如果我想拉最新的变化:git pull