将每个git分支配置到特定文件夹

时间:2014-04-16 15:35:29

标签: git web-hosting git-branch

我在我的linux服务器上托管一个webapp。在我的本地系统和我的github帐户上,我有三个分支 - >掌握,开发和测试。我希望我的服务器上有三个URL指向每个分支,如下所示

  1. production.domainName.com指向主分支
  2. develop.domainName.com指向开发分支
  3. 指向测试分支的test.domainName.com
  4. 我已经为上述三个子域配置了DNS设置,指向我服务器上的三个不同目录。是否可以配置git来保存每个目录中一个特定分支的数据?

    提前感谢您的帮助。

2 个答案:

答案 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.gitprod.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,您现在需要做的就是检查您想要的分支,并推送到相应的遥控器。