私はバックエンド開発を行い、別の人がフロントエンド開発を担当するプロジェクトを割り当てられました。フロントエンドの開発者は、開発サーバーやプロジェクトコードにアクセスできないという要件があります。そこで、フロントエンド用に別のリポジトリを作成することにしました。gitサブモジュールを自動的に引き出すには?
問題は、何かがリモートのリポジトリにコミットされたときに、リモートサーバーからすぐに引き出すサブモジュールを作成する方法がわかりません。私は開発者にコミットし、フロントエンドの変更をすぐに確認する必要があります。
私はgitフックについて読んでおり、post-receive
フックを使ってこれを行うことができます。しかし、それは動作していないようです。ここに私がやったことです:
- をメインプロジェクトのルートディレクトリから、私は次のディレクトリには、私が許可され、実行権限を持つ
post-receive
ファイルを作成し - /.git/modules/submodule-directory/hooksました。
post-receive
ファイルの 内容:
#!/bin/sh git pull
は、サブモジュールのレポへの私のローカルマシンからの変更をプッシュが、何も起こりませんでした。
私は間違っていますか?
編集:私は私の質問に関するいくつかの点を明確にするつもりです。
私は2つのリポジトリを持っています: "メイン"リポジトリは、プロジェクト全体です。フロントエンドのもの(ビュー、アセットなど)である別のリポジトリ。この "フロントエンド"リポジトリと呼ぶことにしましょう。
私のメインリポジトリには、/ submodules/frontend内にあるサブモジュールとしてfrontend repoを追加しました。このように、アウトソーシングされたフロントエンドの開発者は、実際のプロジェクトについては何も見ることができません。彼らは彼らが取り組んでいるものだけを見るでしょう。
これは実際にはアクセス制御の点では完全に機能し、フロントエンド開発の進捗状況をプロジェクトとは別に簡単に監視できます。しかし、私はどのようにするか分からないという一つの問題があります。
私たちのプロジェクトには、開発サーバーと運用サーバーの2つのサーバーがあります。開発サーバーは、メインリポジトリとフロントエンドリポジトリの両方のために常にマスターブランチに存在する必要があります。このようにして、フロントエンドチームとバックエンドチームの両方がアップデートを見ることができます。フロントエンドチームは主にテンプレートで動作しますが、テンプレートはデータベースに格納されたデータにアクセスし、バックエンド(たとえばモデル)に統合された多くのものを使用しています。
この「システム」が機能するためには、「フロントエンド」に新しいコミットがあるときは常に、フロントエンドのリポジトリをフェッチしてマージする必要がありますリモートリポジトリ。つまり、フロントエンドチームがgit commit
とgit push
の場合、開発サーバーの「フロントエンド」レポサブモジュールはすぐにgit pull
になる必要があります。だから、フロントエンドの人が自分のものをテストしようとすると、直ちに最新の変更が表示されます。
私はそれを読むことができるpost-receive
フックことができますが、私はこのフックがサブモジュールのためだけに存在する必要があることをお読みください。だから、いくつかの掘り出した後、私はすべてのサブモジュールのフックが/.git/modules/submodules/frontend/hooks
に存在することを発見しました。だから、私は次のコードでそのディレクトリにpost-receive
フックを作成しました:
#!/bin/sh
git pull
しかし、これは動作しませんでした。私の質問は、ポスト受信サブモジュール内のフックを動作させる方法ですか?
は私が取ったルートは完璧にはほど遠いです知っているが、それは一つのディレクトリ開発サーバーへのアクセスを持たずにのみアクセスする開発者を許可することになると、これは私には理にかなっている唯一の方法です。
これは意味があると思います。
マニュアル 'git pull'はヒントを与えるかもしれません – renemilk
もう一つの精度ミス:例えば、開発サーバーについて、ローカルからリポジトリにプッシュしますか? '--bare'リポジトリへ?直接開発に使用されるディレクトリに? – Asenar
あなたは(あなたのローカルマシン上の)2ローカルリポジトリを持っているので、私は(のがないようにしましょう、OK Gitlab.com – Gasim