2011-07-19 7 views
2

私は4つのRailsアプリケーションを持っています。彼らは共有:コードと設定を共有する複数のRailsアプリケーションとサービスをどのように管理しますか?

  • スタイルシート
  • JavaScriptの
  • サードパーティ製の宝石
  • 同じActiveRecordのモデルのいくつかの
  • 当社独自のRubyライブラリ
  • 設定/環境変数

I上記と相互作用するrabbitmqサービスがたくさんあるRailsアプリケーション。

私はどのようにsanelyバージョンのすべてのこれらのものを制御するかを把握しようとしています。今、私は1つの巨大なgitリポジトリ内のすべてを持っている、のような構造:

 
/sites/rails1 
/sites/rails2 
/sites/rails3 
/services/service1 
/services/service2 
/services/service2 
/lib/our_code 
/lib/common_js 
/lib/common_css 
/config/common_configuration_files 

が、これはそれを行うためのまともな方法は何ですか?

すべてを自分のgitプロジェクトに分割すると、共有されたgem/library/cssファイルが更新されるたびに(gems/bundlerなどで)個々のプロジェクトを個別に更新するように思えます。

1つのプロジェクトにすべてのことがあって残念なことは、私が1つのアプリやサービスをHerokuに(簡単に)置くことができないことです。

サブツリーマージのヘルプはここにありますか?たぶん、各サイト/サービスが独自のブランチですか?

答えて

2

プロジェクトあたり1つのレポ。共有されたものは独自のリポジトリに入れられます。一定のファイル構造を仮定すると、ソフトファイルリンクを使用してそれらのディレクトリを含めることができます。 Gitはそれらのソフトファイルリンクを尊重し、それらをチェックインしますが、プロジェクトのレポに参照されるディレクトリは含めません。

大きなリポジトリを1つ作成すると、プロジェクトのセマンティクス部門に関係のないブランチ(Railsアプリ)が存在するため、レポジスログを読みにくくなります。もちろん、すべての情報はです。特定のファイルやディレクトリに何が起こったのかを把握したい場合は、一般的なgit log --name-statusにすべてのプロジェクトに関する情報が含まれますが、これはあまり望ましくないフィルターをかける(gitの上にアドホックシステムを作らずに)。

+0

私は定数ファイル構造に数えられません。開発者は自分のマシンで開発します。私は別のファイル構造に展開します。 CIマシンは、何か別のもので動作します(Jenkinsと一緒に)。 Herokuは独自のものを使用します。これらの違いのため、私はシンボリックリンクをgitにチェックインできるとは思わない。 –

+0

また、1つの大きなプロジェクトはどのようにマージを不可能にしますか? –

+0

@Joe Van Dyk、それは...私は答えのその部分を編集するつもりです。 –

関連する問題