1

在我们的服务器上,每个项目都有 2 个文件夹:/repository 和 /htdocs。Htdocs 是存储库的克隆,它是裸存储库。每个开发人员都有自己的存储库克隆可供使用。htdocs 可用于向项目经理预览项目。

我想设置一个 post-receive 挂钩,当开发人员推送更新时自动更新 htdocs。

我在接收后挂钩中有以下内容:

#!/bin/sh
GIT_WORK_TREE=../htdocs git pull origin master

但是,当我推送时,我看到以下错误:git错误

谁能告诉我出了什么问题?

注意

#!/bin/sh
GIT_WORK_TREE=../htdocs git checkout -f

有效,但这有点慢(因为项目很大)。也有可能有人在 htdocs 中做了一些错误修复,checkout -f如果他们没有提交,这些错误修复会丢失。

4

1 回答 1

1

这应该有效:

 GIT_WORK_TREE=../htdocs GIT_DIR=../htdocs/.git git pull origin master

如果您不指定 GIT_DIR,git 认为 repo 仍然是“ repository”(裸 repo),它可能没有名为“ origin”的远程(因此出现错误消息)。

于 2012-12-15T00:53:15.373 回答