代码之家  ›  专栏  ›  技术社区  ›  PreciousBodilyFluids

如何使用Git子模块在Heroku应用程序之间共享代码?

  •  2
  • PreciousBodilyFluids  · 技术社区  · 14 年前

    我有一些部署到Heroku的Rails3应用程序需要共享一些业务逻辑。显然,尽管Heroku的Bundler支持相当可靠,但它还不能从私有的Github回购中获得支持。因此,我构建了几个gem,在每个应用程序中贩卖它们,将它们检入git,并将它们与我的其余代码一起推送。

    这已经奏效了,但是每次我想改变这些共享gems中的某些东西时,我都必须去每个应用程序,gem解包到正确的目录,git add/git删除所有已经改变的文件,等等,这变得有点痛苦。我可能还想建立我的业务逻辑的不同分支,让不同的应用程序跟随不同的分支,但我不知道如何通过销售来实现这一点。

    看起来Git子模块是为这种情况而发明的,但是上次我尝试子模块时,我发现它们非常混乱。我想这就是我需要做的,但是Heroku作为链接示例给出的代码片段也非常令人困惑。

    所以,我的问题是:

    1. 子模块是我想在这里使用的吗?
    2. 为了完成我所描述的工作,我需要的最简单的Git工作流是什么?

    我不是Git的初学者,但我也不是很中级,我想从一组简单的步骤开始学习。我需要从vendor/gems目录中跟踪本地Git存储库,定期从该存储库拉入更新,这样做的方式是,Heroku/Bundler在我尝试将整个应用程序推送到生产环境时不会抛出合适的文件。

    谢谢您!

    3 回复  |  直到 12 年前
        1
  •  2
  •   Chris Johnsen    14 年前

    git subtree Git’s subtree merge

    git subtree add --prefix=vendor/gems/shiny remote-or-url-to-shiny-gem branch
    

    git subtree pull --prefix=vendor/gems/shiny remote-or-url-to-shiny-gem branch
    

    --squash

        2
  •  1
  •   shingara    14 年前