编辑:(在看到卢克的回答之后)
我正在寻找开发网站,所有工作都将远程完成(没有本地开发服务器)。这样做的原因是我的共享托管公司a2hosting有一个特定的配置(symfony,mysql,git),当我可以通过ssh和远程开发或通过netbeans远程编辑功能时,我不想花时间复制。
我的问题是如何使用git将我的网站分成三个区域:live,staging和dev。
这是我的初步想法:
public_html(live site and git repo)
测试:用于视觉测试的网站镜像(完整的git repo)
dev / ticket#:用于功能和错误修复的public_html的git分支(完整的git repo)
使用git进行版本控制:
初始设置:
cd public_html
git init
git add *
git commit -m ‘initial commit of the site’
cd ..
git clone public_html testing
mkdir dev
开发:
cd /dev
git clone ../testing ticket#
all work is done in ./dev/ticket#,
then visit www.domain.com/dev/ticket# to visually test
make granular commits as necessary until dev is done
git push origin master:ticket#
if the above fails:
merge latest testing state into current dev work: git merge origin/master
then try the push again
mark ticket# as ready for integration
集成和部署过程:
cd ../../testing
git merge ticket# -m "integration test for ticket# --no-ff (check for conflicts )
run hudson tests
visit www.domain.com/testing for visual test
if all tests pass:
if this ticket marks the end of a big dev sprint:
make a snapshot with git tag
git push --tags origin
else
git push origin
cd ../public_html
git checkout -f (live site should have the latest dev from ticket#)
else:
revert the merge: git checkout master~1; git commit -m "reverting ticket#"
update ticket# that testing failed with the failure details
快照:
每个主要部署sprint都应具有标准名称并进行跟踪。 方法:git标签 命名惯例:TBD
将网站恢复到以前的状态
如果出现问题,请恢复到之前的快照 并使用新票证调试dev中的问题#。修复错误后,请关注 再次部署过程。
我的问题:
1 - 如果没有任何建议,此工作流程是否有意义 2 - 我的恢复方法是正确还是有更好的方式来说'恢复到x提交之前'
感谢您花时间阅读这篇非常长篇文章:)
答案 0 :(得分:2)
我只会解决问题1 - 3(简称5)。首先,我认为您不应该在生产服务器上托管您的规范存储库。
由于你不想在本地设置它,我建议你在服务器上的某个地方创建存储库而不是public_html,将它推送到GitHub(或你选择的Git主机),然后git克隆它public_html等。
此外,我会使用master作为生产分支,为开发创建功能分支,然后将它们合并到分段中进行测试,然后在分段测试后推送到master。
回顾一下:
public_html - 签出了master分支 - 只需执行git pull即可更新 staging - staging branch签出 dev - 您正在处理的任何功能分支等
这只是一个git分支策略,但它是我的团队成功使用的策略。
对于3,您需要设置Hudson,以便自动提取分段的最新更改。请参阅What's the workflow of Continuous Integration With Hudson?或查看右侧边栏以了解如何使其正常工作。 CI的要点是它需要自动化,否则它不是CI:)
最后,限制访问网站的一种简单方法是使用.htacess文件(假设您的主机使用Apache,他们似乎)。请参阅http://httpd.apache.org/docs/2.2/howto/htaccess.html或Google .htaccess。