git一个本地分支与多个远程分支同步:如何?

时间:2011-11-02 16:38:13

标签: git synchronization heroku

我有一个应用程序,我卖给多个客户端。每个客户都有自己的专用应用程序(在Heroku上)。

这些客户的应用程序仅有3个配置文件:database.yml,aws.yml和corporate.rb

在本地,我有一个主分支机构和许多其他本地分支机构,因为我有客户。我需要这些本地分支来存储每个客户的3个配置文件。每当我对主人进行更改时,我会将其与每个客户分支合并,然后将它们逐个推送到Heroku。

这很重......

根据这篇文章的建议:pull/push from multiple remote locations,我创建了一个远程分组分支并破解了我的配置文件,以便该分支与多个网址相关联。

问题在于,当我尝试推送它时,它拒绝这样做,因为遥控器没有正确同步。如果我强制推送,它会覆盖我的配置文件,这也不是解决方案。

我试图在.gitignore中包含这些配置文件,但它一直在推动它们。

有什么想法解决这个问题吗?感谢!!!

2 个答案:

答案 0 :(得分:1)

我使用Heroku的环境变量解决了这个问题。 实际上,我没有设置任何变量来使用它们。我只是使用APP_NAME变量并为初始化文件中的每个应用设置我的配置:

# Custom values

  case ENV['APP_NAME']
  when 'pgp'
    CORPORATE_NAME = 'PGP Development'
    S3_BUCKET = 'pgpdevelopment'
  when 'anchor'
    CORPORATE_NAME = 'Anchor Group'
    S3_BUCKET = 'anchorgroup'
  when 'corionl'
    CORPORATE_NAME = 'Corio NL'
  when 'masterproj'
    CORPORATE_NAME = 'Corporate Demo'
  when 'adg'
    CORPORATE_NAME = 'ADG'
  end

#Default values

  CORPORATE_NAME ||= ENV['APP_NAME']
  DEPARTMENT_SELECTION ||= false
  GEOSCOPE_SELECTION ||= false
  GEOSCOPE_DEFAULT ||= 'world'
  DEPARTMENT_DEFAULT ||= 'all'
  S3_BUCKET ||= ENV['APP_NAME']

  S3_CREDENTIALS = {
  :access_key_id => my_key_id,
  :secret_access_key => my_access_key
  }
  if Rails.env == "production"
       S3_CREDENTIALS[:bucket] = S3_BUCKET
  else
       S3_CREDENTIALS[:bucket] = "#{S3_BUCKET}_dev"
  end

让我走上正确的轨道!

答案 1 :(得分:0)

我不会在您的存储库中控制客户特定工件的版本。在其他地方进行转换,然后从那里推送到heroku。你需要一个“管理员”仓库。