如果您将以下脚本作为hooks/post-receive
挂钩添加到裸 git 存储库foo.git
:
#!/bin/sh
GIT_WORK_TREE=/bar git checkout -f
然后每当有人推送到存储库时,当前状态将在目录中更新bar
。
这要求bar
和foo.git
必须在同一台机器上。
修改它以便在远程机器上进行结帐的最简单方法是什么(比如说baz:/bar
)?
一种方法是:
#!/bin/sh
GIT_WORK_TREE=/tmp/bar git checkout -f
rsync ... /tmp/bar baz:/bar
有没有更好的办法?也许不需要中间临时目录?(如果不是,传递给 rsync 以使生成的目录与直接签出相同的正确选项是什么?)