2011-07-22 5 views
1

私はgitサブモジュールをプロジェクトに持っています。このサブモジュールは一連の設定ファイルで構成されています。プロジェクトごとに微調整が必​​要です。Gitサブモジュール:コミットされていないローカル編集を行うことはできますか?

これをサブモジュールで行うことは可能ですか、ここで間違ったやり方をしていますか?明らかに、サブモジュールのリポジトリへの変更をプロジェクト特有のものとしてコミットしたくないのです。

何かヒントや指摘があれば幸いです。

EDIT:注これらのローカル編集はプロジェクトに対してローカルであり、そしてプロジェクトは、それが(gitのファブリックを使用して)、サーバーにデプロイされるときに、これらの変更を保持する必要があること。

答えて

1

ローカルで変更することは可能ですが、実際には実現できません。

サブモジュールに変更があることがわかり、それがあなたに表示されます。これらの変更はどこかにプッシュされないので、スーパーモジュール内の変更サブモジュールをコミットすることはできません。誰かがそのサブモジュールをチェックアウトしようとすると、gitはそのサブモジュールに対して記録されたコミットを見つけることができないので、不平を言うでしょう。

プロジェクト単位で、マシンごとの違いではない場合、プロジェクト固有の変更が行われたサブモジュールリポジトリにブランチを作成できます。これらの変更をサブモジュールにコミットしてプッシュすることができます。

これらの変更をサブモジュールリポジトリの一部にしたい場合は、自分で決定する必要がありますが、これがgitで行う唯一の方法です。

+0

ああ、OKです。変更はプロジェクトのローカルではありますが(マシンごとではありません)、私はそれらの変更をどこかにコミットできる必要があります。私はそれがサブモジュールでは不可能だと推測しています。 –

0

私が使用したアプローチの1つは、プロジェクトのソースファイルを指すサブモジュールディレクトリにシンボリックリンクがあることです。例えば、Drupalのウェブサイトに:あなたはDrupalのに慣れていない場合は

/project 
    /drupal 
    /sites 

sitesディレクトリは、任意の追加のモジュール、テーマ、またはマルチサイトの情報を含むことになり、通常はこの中で(Drupalのルートの内側に位置していますケース、/project/drupal)。あなたのプロジェクトでは、drupalはあなたのメインコードベースに置き換えられ、sitesはあなたのプロジェクト固有の設定を含みます。

この場合、drupalは、projectのサブモジュールで、公式リポジトリを指しています。 /project/drupal/sitesから/project/sitesへのシンボリックリンクを追加したので、sitesへの変更はプロジェクトレベルでチェックインされましたが、Drupalは依然としてサブディレクトリのふりをすることができます。

あなたのプロジェクトでは、同様の設定がうまくいけばいいと思います。注目すべき点の1つは、シンボリックリンクがsitesの変更をdrupalにも表示することになるため、.gitignoreファイルにシンボリックリンクを追加したいと考えています。もう一つの欠点は、プロジェクトを設定した各マシンのシンボリックリンクを再設定する必要がありますが、それは簡単にデプロイメントスクリプトの一部になる可能性があることです。

関連する問題