1

我在 apache2 上使用 DAV 配置的 git 有一个奇怪的问题。

如果需要,我将提供更多详细信息,但这里是该问题的高级概述。

我有一个存储库的 3 个克隆:

  1. 可以推拉的光秃秃的
  2. 机器 A 上的一个
  3. 机器 B 上的一个

我在机器 A 上进行了最后一次更改,我推送了所有更改,并对两者都进行了拉动。问题是,由于某种原因,我在打开机器 B 后看不到我的最后一次更改。

也没有任何关于在任何一台机器上领先于远程的消息。

奇怪的部分是:

  • 如果我在裸存储库上执行“git log”,则机器 A 的最后更改将在那里
  • 如果我对裸存储库进行另一个克隆,则更改将不存在。它只会取决于机器 B 看到的最后一次更改。

这是服务器配置问题还是 git 问题?我已经有这个问题好几个月了。

git branch -a印刷:

机器A:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

机器 B:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

.git/config对彼此而言:

[core]
  repositoryformatversion = 0
  filemode = false
  bare = false
  logallrefupdates = true
[branch "master"]
  remote = origin
  merge = refs/heads/master
[remote "origin"]
  url = http://<url>/p/home.git
  fetch = +refs/heads/*:refs/remotes/origin/*
4

1 回答 1

3

既然你已经在评论中确认我的猜测是正确的,我会添加这个作为答案:) 听起来问题是这个 git FAQ 中描述的问题:

https://git.wiki.kernel.org/index.php/GitFaq#My_HTTP_repository_has_updates.2C_which_.27git_clone.27_misses._What_happened.3F

在 .git/hooks/ 中有一个名为 post-update.sample 的示例钩子,您可以将其重命名为 post-update 以便git update-server-info在推送后自动运行。这会生成哑 HTTP 传输所需的信息。

于 2011-01-03T14:27:37.787 回答