2014-04-16 127 views
0

我在我的linux服务器上托管一个webapp。在我的本地系统和我的github账户中,我有三个分支 - > master,开发和测试。我想对我的服务器指向三个URL到每个分支如下配置每个git分支到一个特定的文件夹

  1. production.domainName.com指着主分支
  2. develop.domainName.com指着开发分支
  3. test.domainName。 com指向测试分支

我已将上述三个子域的DNS设置配置为指向我服务器上的三个不同目录。是否可以配置git来保存每个目录中某个特定分支的数据?

在此先感谢您的帮助。

回答

2

你可以让每个目录都是独立的git仓库克隆,并且每个目录都会检出'他们'的分支,并从github按照他们自己的时间表进行提取。

请注意,通过这种部署,您可以将整个git历史暴露给网络上任何想将url添加到/ url结尾的人,除非您将web服务器配置为排除这些文件。您可能需要考虑一个脚本,将特定分支rsync同步到正确的目录,不包括.git目录。换句话说,考虑将VCS与您的部署方法分开。

1

我会在您的服务器上为您的prod,dev和test目录的父目录(进一步称为parent_path)创建回购站。

首先,ssh到你的服务器 - ssh [email protected],然后cd到parent_path - 然后

mkdir test.git 
cd test.git 
git init --bare 

然后,添加一个后收到钩来复制你的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://[email protected]/parent_path/test.git 
git remote add dev ssh://[email protected]/parent_path/dev.git 
git remote add prod ssh://[email protected]/parent_path/prod.git 

繁荣,你现在需要做的是检查你想要的分支,并推至相应的遥控器。

+0

嗨,如果我只有一个遥控器,这可以工作。如果我有多个遥控器,则会出现错误。以下是输出。 'System $ git push remote-dev development Counting objects:1718,done。 增量压缩使用多达2个线程。 压缩对象:100%(1223/1223),完成。 写作对象:100%(1718/1718),23.62 MiB |完成111.00 KiB/s。 总计1718(增量509),再利用1651(三角洲446) 远程:致命的:你是在一个分支尚未出生 为SSH://aws/~/fams-dev.git * [新的分支]开发 - > development' – pogo

+0

以下是我的.git/config文件 '系统$猫配置 [核心] \t repositoryformatversion = 0 \t FILEMODE =真 \t logallrefupdates =真 \t precomposeunicode =真 [远程“起源”] \t URL = HTTPS://[email protected]/fams/fams.git \t取= +参/头/ *:参/遥控器/来源/ * [分支 “主”] \t远程=原点 \t合并=参/头/主 [分支 “发展”] \t远程=原点 \t合并=参/头/发展 [分支 “分段”] \t远程=原点 \t合并=参/头/分期 [remote“remote-dev”] \t url = ssh:// aws /〜/ fams-dev .git \t fetch = + refs/heads/*:refs/remotes/remote-dev/*' – pogo

+0

我能够将主分支成功推送到任何文件夹。我认为问题在于,当我执行git init时,git目录中没有开发分支,因此我无法推动开发分支。 – pogo

相关问题