适用于软件项目和配套服务器代码的Git存储库的理想工作流程



我使用Git来管理我的(iOS)项目的源代码,我已经做了一段时间了,效果很好。然而,我现在开始添加一个服务器端组件,我想确保服务器端代码保存在同一个存储库中,但与主代码分开——并在web服务器上设置,这样就无法访问整个代码库和历史记录。使用两台计算机上的代码库(一台本地计算机,另一台位于web服务器上),什么是理想的Git工作流?(顺便说一句,如果Nginx在如何设置服务器配置以隐藏Git文件和历史记录方面有任何不同,我会使用它。)

关于第一个问题,如何以服务器端仍然是一个独立项目的方式同时跟踪客户端和服务器端。您可以将服务器代码作为子模块合并到客户端项目中。

~/client$ git submodule add foo@bar:server.git
~/client$ git commit

这会将服务器repo(可通过SSH URL foo@bar:server.git访问)插入到subdir服务器中的客户端项目中。子模块的另一种选择是子树合并。

至于将服务器代码签入nginx。在服务器上的某个地方创建一个裸回购,比如/var/git/server.git,并将其工作树设置为/var/www/server/

cd /var/git
mkdir server.git && cd server.git
git init --bare
git config --bool core.bare false
git config --path core.worktree /var/www/server/

设置它的后接收挂钩,以检查新HEAD的工作树。

echo '#!/bin/sh' > hooks/post-receive
echo 'git reset --hard HEAD' >> hooks/post-receive

在你的开发中设置一个指向上面的遥控器:

client/server$ git remote add www root@bar:/var/git/server.git
client/server$ git push www master

或者类似的。。。

最新更新