【发布时间】:2011-08-15 17:06:33
【问题描述】:
我想我会把它扔出去,看看能不能得到一些可靠的建议。
我有一个包含相当大代码库的生产站点,并且刚刚在其上安装了 Git,与测试站点相同。我有一个本地盒子,它基本上是集成点。我们的团队会推送到本地机器,小侏儒会过来把所有东西转移到我们不同的服务器上——或者至少这是我最接近实施 Git 的方式。
我真的不知道从哪里开始一点。我有一个庞大的、挑剔的、遗留的代码库,我害怕在美好的一天碰触它。 Git 是一个大清理过程的起点,我只是不知道如何开始。
我正在考虑基于我的生产 docroot(使用适用的 .gitignore 内容)创建一个裸 .git 存储库,然后克隆到测试和开发环境,然后个人将克隆开发并开始工作,然后推回开发然后以某种方式神奇地告诉 git 在对裸仓库进行更改时更新 docroot。
我打算在开发中安装 git-flow(无法让它在我的生产服务器上工作),然后推送到生产。由于它们在一天结束时只是分支,我想我可以不用在产品/测试服务器上使用 git-flow。
这看起来一切都很好,我只是不知道我是应该推动测试/产品,还是从开发者拉到测试/产品。也许只是生产 docroot 中的直接 git init ?创建一个 .git 目录并 git init 到那个目录? git init git giggidy giggidy...
感谢您的见解。
编辑
这是我最终做的,希望其他人会发现它有用。
已将当前生产代码下载到开发服务器 (LAMP)
设置 .gitignore 文件并在目录中运行 git init 并执行初始导入/提交
在暂存/生产服务器上:
创建 YOURNAME.git 目录并使用 git init --bare
创建裸存储库
将工作树设置为 /path/to/my/public_html,将 bare 设置为 false,并将 receive.denycurrentbranch 设置为忽略
在 hooks/post-receive 中添加了一行:git checkout -f 确保我的 git 用户有权写入工作树
返回开发服务器:
git remote add [staging|production] ssh://myuser@myserver/path/to/my.git
git push [staging|production] master
要更新我的生产和登台站点,它是一个简单的 git push [production|staging],我不必大惊小怪地将 .git 目录隐藏在公众视野中。
来源:
http://www.deanoj.co.uk/programming/git/using-git-and-a-post-receive-hook-script-for-auto-deployment/
http://toroid.org/ams/git-website-howto
希望这对某人有所帮助!
再次编辑
此外,在 1.7.3.3 或更高版本上效果最佳。我正在运行一个用于开发的虚拟化 ubuntu 盒子,并在 Samba 上遇到了一些问题。在与这个问题斗争了几个小时后,阅读该问题已在 1.7.3.3 中修复。我在 1.7.3.1。
【问题讨论】:
标签: php git deployment workflow production