【发布时间】:2013-02-04 06:56:34
【问题描述】:
考虑以下情况:
我有一个 git 存储库 foo.git,其中包含 javascript 项目的代码。在这个存储库中有一个分支production,其中包含由从/var/www/foo 获取代码的网络服务器提供的代码状态。此存储库是项目的主存储库。每个人都在推拉它。
每当有人推送到特定分支时,是否可以将/var/www/foo 更新为生产 结帐?您可以假设 git 守护进程(或用户 git,即所有人登录以通过 SSH 连接的用户)有权写入所述目录。
【问题讨论】:
-
所以你有一个像 /git/foo.git 这样的 git 存储库,当你推送到 production 分支时,你希望你的网络服务器的 git 存储库位于 /var/www/ foo 来拉取你的新提交?
-
@tewe 是的。但在 /var/www/foo 处不必有 git 存储库。如果 /var/www/foo 只包含一个结帐也没关系。
-
那么你必须在某个地方有一个中间存储库,我不认为你可以在没有 git 存储库的情况下结帐,并且你不能让另一个非裸露的,因为那样你就不能推送到 production 分支(如果它已在那里签出)。
-
@tewe 我记得可以将(裸)存储库的特定版本检出到任意目录中。
-
顺便说一句,如果你把我的答案和@Jacob 结合起来,你就会得到你想要的。