混帐后收到收银台远程机器?(git post-receive checkout to remote

2019-08-07 21:43发布

如果您添加下面的脚本作为hooks/post-receive钩裸git仓库foo.git

#!/bin/sh
GIT_WORK_TREE=/bar git checkout -f

那么每当有人推到库目前的状态将在目录中更新bar

这要求barfoo.git是同一台机器上。

什么是修改它,这样结账在远程机器上进行的最简单的方法(比如baz:/bar )?

一种方法是:

#!/bin/sh
GIT_WORK_TREE=/tmp/bar git checkout -f
rsync ... /tmp/bar baz:/bar

有没有更好的办法? 也许并不需要中间临时目录? (如果没有什么是正确的选项传递给rsync的,使得所得目录,张玉峰,以直接出院了吗?)

Answer 1:

GIT_WORK_TREE=/bar意味着bar是一个git回购。

如果bar是在远程侧的git仓库,那么它可以从一个裸回购拉bare_bar.git (也在远程侧),可向其中推到。

换句话说,你的post-receive钩将推动通过ssh来bare_bar回购和post-receive的裸回购钩会从实际回购触发拉bar :见“ 创建从生产文件夹中的git仓库 ”。


我宁愿是保持远程服务器没有任何git的迪尔斯的解决方案(甚至git的包本身最好)

在这种情况下,你的职位,收到钩和rsync命令似乎是逐步的新数据复制到远程工作树的唯一途径。

  • git archive将每次存档的一切。
  • git bundle将需要在另一边的git。


文章来源: git post-receive checkout to remote machine?