【问题标题】:Migrating a production site with no VCS at all to Git将完全没有 VCS 的生产站点迁移到 Git
【发布时间】: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


    【解决方案1】:

    如果您对使用 Capistrano 等较重的部署解决方案不感兴趣,那么您可以在裸存储库上设置一个接收后挂钩,以将最新更改检出到您的生产 docroot 中。您可以为开发和生产设置单独的挂钩。这是一个pretty good guide 这样做。

    【讨论】:

    • Capistrano 只有 Ruby,不是吗?抱歉,应该指定这是一个 PHP 项目。现在开始浏览指南。干杯!
    • 非常有用的指南,不敢相信我还没有偶然发现它。指南中的示例(为了论证)从本地代码存储库开始。这没什么大不了的,我现在可以把网站卷起来,然后把它放在开发盒上。我想我唯一的问题是:当我推送到 website.git 目录并且 post-receive 钩子启动时,它会简单地用签出的更改覆盖 docroot 中的文件吗?
    • 是的,我认为这就是 git checkout -f 命令的职责。无论如何都会强制覆盖所有内容。
    猜你喜欢
    • 1970-01-01
    • 2016-03-15
    • 2019-07-25
    • 2017-06-30
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2012-10-04
    • 2015-10-24
    相关资源
    最近更新 更多