使用 'git checkout -f' 从 Gitlab 中的裸 git 仓库部署文件

Using 'git checkout -f' to deploy files from a bare git repo in Gitlab

我正在我的工作场所实施 Gitlab 并将所有人转移到它以进行更好的代码审查、与提交直接相关的问题管理以及与 Pivotal tracker 上的用户故事的集成。

我当前的测试应用程序设置如下:

  1. Git 裸仓库,包含我基于 PHP 的网络应用程序的所有代码,位于:/var/opt/gitlab/git-data/repositories/git/test-app.git

  2. 部署目录为:/var/www/test-app

在 Git 回购目录中,我做了以下操作:

export GIT_WORK_TREE=/var/www/test-app
git checkout -f master

这非常有效,所有文件都可以按预期在 /var/www/test-app 中访问。

这就是我难倒的地方。我希望 Gitlab 服务器仅托管 Git 裸仓库而不是部署目录。部署目录将托管在单独的服务器上。

有没有办法设置与 GIT_WORK_TREE 不同的服务器?我尝试将服务器的详细信息放在那里,例如:

GIT_WORK_TREE=git@devserver.mydomain.com:/var/www/test-app

但没有骰子。

这有可能吗,还是我找错树了?希望得到一些建议。

谢谢。

与其尝试在远程服务器上结帐,不如(在同一个 post-receive 挂钩中)推送到该远程服务器。

Git 2.3.3 and 2.4.0, using a push-to-deploy 起,在 git 服务器端使用配置 receive.denyCurrentBranch = updateInstead
请注意,此方法有一些注意事项。

  • Your server will contain a .git directory containing the entire history of your project. You probably want to make extra sure that it cannot be served to users!
  • During deploys, it will be possible for users momentarily to encounter the site in an inconsistent state, with some files at the old version and others at the new version, or even half-written files. If this is a problem for your project, push-to-deploy is probably not for you.
  • If your project needs a "build" step, then you will have to set that up explicitly, perhaps via githooks.