服务器上的裸仓库和非裸仓库

Bare and non-bare repo at the server

我想跟踪存储在服务器上的目录和文件。最初的想法是在服务器上设置一个裸存储库,然后 push/pull 从本地机器(存储非裸存储库的地方)。问题是服务器上必须存在更新的文件。

最初我专注于在服务器上设置一个非裸仓库并从裸仓库中提取,但每次从本地机器进行推送时都需要有人 git pull。我的问题是:是否有可能以一种允许我在本地机器上更改代码、推送这些更改并自动将它们放在服务器上的方式设置裸和非裸回购。如果需要服务器端的非裸仓库,是否可以阻止从中推送?

不必在服务器上手动使用 git pull,是否可以使用 server-side hooks?这可用于以某种方式触发对服务器上非裸存储库的拉取。

post 接收挂钩可能类似于

#!/bin/bash

unset GIT_DIR
git -C /path/to/non/bare/repo pull

另一种选择,如果您可以承受服务器端非裸存储库更新的一些延迟,则可以使用 cron-job 定期从裸存储库中拉取。