Git/Rails /共享主机(Dreamhost)工作流程

tri*_*nth 4 git workflow ruby-on-rails passenger dreamhost

这主要是关于有效Git使用的问题.我应该首先说我不是Rails的专家(至少在生产意义上)并且绝对是Git新手,但是,我有一些使用SVN的经验.

我的问题是我正在尝试创建一个rails应用程序,但不知道在我的计算机上保持开发本地但是能够部署到Dreamhost上的共享主机帐户的最佳方法.

我认为Git会允许我这样做,但我不完全确定如何.我想在服务器上创建一个Git repo,并在每次提交后将我的本地内容推送到它上面.我已经阅读了一些关于Git的教程,但我仍然对于该怎么做感到困惑.替代方法是只使用FTP并复制文件,但这似乎不对.

有没有人有一些我可以使用的第一步和/或命令?这种部署方法是否可疑还是有更好的方法吗?

And*_*ack 8

我为威斯康星州的一个铜管乐队运行一个Rails网站,设置与你所描述的非常相似,尽管它目前在hostingrails.com之外运行.我在github上托管我的代码,虽然没有理由你不能私下托管它.我的流量在过去的一年半中发生了变化,因此从短期来看,只需要你所需要的东西.

在我的流程的中心,我已经设置了一个半精细的Capistrano脚本来处理部署,包括一个单独的暂存环境,它生成生产数据库的完整副本以进行测试.这需要一段时间(几小时,而不是几天)来构建,但它是如此值得.

我的工作流程至少保留了2个分支:

  • current_release:现场制作代码.紧急错误修正在这里.
  • master:已完成的功能已准备好发布.这些功能在这里等待现场测试.紧急错误修正从中合并current_release.
  • <feature_name>:正在开发的功能.我尝试在任何特定时间都没有超过3个.紧急错误修正被合并,并master经常合并以保持功能最新.

有了这个设置,我可以同时处理好几件事.每周一周(因为这远不是全职职业),我做了以下几点:

  1. 我在功能分支中编辑.我来回切换,感到无聊,兴奋,无论如何.有时我会合并两个共同成长的功能.

    [edit]
    $ git commit
    $ git push github [feature]

  2. 准备好进行即时部署的已完成功能将一次一个地合并到master分支机构.

    $ git checkout master
    $ git merge [feature]
    [fix immediate problems or inconsistencies]
    $ git commit
    $ git push github master
    $ git branch -d [feature]

  3. 我将网站上传到私人网址(恰好是stage.madisonbrass.com).该分级环境总是从拉master分支.

    $ cap staging deploy # master is now live at stage.madisonbrass.com

  4. Bam,在我测试的时候,我在公共网站上发现了一个紧急错误.幸运的是,我已经current_release单独工作,因此可以单独修复和部署它.

    $ git checkout current_release
    [fix bug]
    $ git commit
    $ git push github current_release
    $ cap production deploy

  5. 我回到master分支机构,首先合并紧急修复程序.

    $ git checkout master
    $ git merge current_release

  6. 我继续测试master.希望不会出现新问题,但如果他们这样做我将它们修复为master,我将这些更改合并到current_release另一个生产部署中.

    $ git checkout current_release
    $ git merge master
    $ git push github current_release
    $ cap production deploy

  7. 我拆除了我的暂存环境,以免以某种方式被搜索引擎索引.

    $ git staging teardown