【问题标题】:Git + GitHub + HerokuGit + GitHub + Heroku
【发布时间】:2011-02-02 10:16:01
【问题描述】:

我是 Git、GitHub 和 Heroku 世界的新手。到目前为止,我很享受这种范式,但来自 SVN 的背景,在 Git 的世界里,事情对我来说似乎有点复杂。我遇到了一个问题,我正在寻找解决方案。

场景:

1。我在 GitHub 上设置了一个新的私人项目。我分叉了私人项目,现在我的分支中有以下结构:

    /project
      /apps
        /my-apps
          /my-app-1
            ....
          /my-app-2
            ....
          /your-apps
            /your-app-1
              ....
            /your-app-2
              ....
      /plugins
         ....

我可以在我的机器上的任何我想要的文件夹中提交我在 GitHub 上的 Fork 中的代码。稍后,这些将由项目管理员拉入主存储库。

2。对于应用程序文件夹中的每个单独的应用程序,我在 Heroku 上设置了一个应用程序,它本身就是一个 Git 存储库,当我从本地计算机完成用户故事时,我会推送我的更改。简而言之,apps 文件夹中的每个应用程序都是托管在 Heroku 上的 Rails 应用程序。

问题:

我想要的是,当我将更改推送到 Heroku 中时,它们也可以提交到我在 GitHub 上的项目 fork 中,因此它也始终拥有最新的代码。

我看到的问题是 Heroku 上的代码是 Git Repo,而我在 GitHub 上的文件夹是 Repo 的一部分。

到目前为止,我研究的是 Git 世界中有一个叫做 Submodule 的东西可以来拯救,但是,我还没有找到一些新手说明。

社区中的某个人可以分享想法并帮助我确定此问题的解决方案吗?

【问题讨论】:

    标签: ruby-on-rails ruby git github heroku


    【解决方案1】:

    子模块背后的想法是,它们都是独立的 git 存储库,您可以将它们包含到主存储库中,而不是包含所有文件,而是包含指向该子模块的链接。

    如何使用子模块

    要使用子模块,首先必须提取目录并使用git init 将其创建为自己的 git 存储库。然后,您可以将其单独上传到 Github 或 [您选择的地方],并将其用作子模块,使用命令:git submodule add [place/to/put/it] git://github.com/you/proj1

    最好分开

    我认为最好将这些分开作为自己的 git 存储库并从每个存储库推送到 heroku。原因?更有可能(我觉得)你一次只做一个,只为那个做一个git commitgit push heroku master

    如果您希望同时部署所有应用程序,您可以使用放置在顶级目录中的这个 Ruby 脚本向下递归目录树:

    Dir["**/*"].select { |dir| File.directory?(dir) }.each do |f|
      Dir.chdir(dir) do
        `git push origin master`
        `git push heroku master`
      end
    end
    

    当然,这只有在您完成所有更改的情况下才有效。我想不出一种自动化的方法,因为 Ruby

    【讨论】:

    • 感谢您的回复瑞恩。正如您所提到的,需要创建子模块,但是,我想知道每个子模块是否需要单独托管在 GitHub 上,或者它也可以驻留在项目存储库中。
    • 单独托管它们是 imo 的最佳方式。
    • 基本上,我们不想单独托管这些,主要原因是存储库不是公开的,因此我们不想与所有人共享。此外,在 GitHub 上托管私有存储库需要花钱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2020-05-26
    • 2011-07-11
    • 2017-07-15
    相关资源
    最近更新 更多