我在我的linux服务器上托管一个webapp。在我的本地系统和我的github帐户上,我有三个分支 - >掌握,开发和测试。我希望我的服务器上有三个URL指向每个分支,如下所示
我已经为上述三个子域配置了DNS设置,指向我服务器上的三个不同目录。是否可以配置git来保存每个目录中一个特定分支的数据?
提前感谢您的帮助。
答案 0 :(得分:2)
您可以让每个目录成为git存储库的独特克隆,并且每个目录都会检出“他们的”分支,并按照自己的时间表从github获取。
请注意,通过这种部署,您将整个git历史记录暴露给网络上任何想要在网址末尾添加“/.git”的人,除非您将Web服务器配置为排除这些文件。您可能需要考虑一个脚本来将特定分支rsync到正确的目录,不包括.git目录。换句话说,请考虑将VCS与部署方法分开。
答案 1 :(得分:1)
我会在你的服务器上创建repos,用于你的prod,dev和test目录的父目录(进一步称为parent_path
)。
首先,ssh进入您的服务器 - ssh user_name@server.url
,然后cd到parent_path
- 然后
mkdir test.git
cd test.git
git init --bare
然后,添加一个post-receive挂钩将codez复制到相应的目录,如下所示:
echo "#!/bin/sh
GIT_WORK_TREE=../test_directory/ git checkout -f" >> hooks/post-receive
哦,并使用chmod +x hooks/post-receive
同样为dev.git
和prod.git
执行此操作(注意在post-receive hook中提及正确的目录 - 这是您的域指向的目录)。
现在完成,回到本地 - 将这些添加为遥控器:
git remote add test ssh://user_name@server.url/parent_path/test.git
git remote add dev ssh://user_name@server.url/parent_path/dev.git
git remote add prod ssh://user_name@server.url/parent_path/prod.git
Boom,您现在需要做的就是检查您想要的分支,并推送到相应的遥控器。