質問

GITの初心者で、どれだけ自分のニーズに合うかはまだわかりませんが、印象的です。

異なる顧客(django + javascript)に使用する単一のWebアプリがあります

GITを使用して、これらの異なる顧客のバージョンをブランチとして処理する予定です。各顧客は、カスタムファイル、フォルダー、設定、改善されたバージョンを持つことができますが、同じ「コア」を共有する必要があります。私たちは小さなチームであり、githubアカウントを登録しています。

このケースを処理するのにブランチは良い方法ですか?

設定ファイルについて、どのように進みますか?顧客固有の設定ファイルを.gitignoreして、repoなどのsettings.xml.sampleファイルを追加しますか?

また、一部のファイルがマスターにマージされるのを防ぐ方法はありますか? (ただし、顧客ブランチにコミット)。たとえば、idは一部の顧客データを顧客ブランチに保存しますが、マスターへのコミットを防ぎます。

.gitignoreファイルはブランチ固有ですか? はい

編集 すべての答えを読んだ後(ありがとう!)、djangoプロジェクト構造を最初にリファクタリングして、アプリサブフォルダーでコアアプリと異なるアプリを分離することにしました。これを行うと、プロジェクトがよりクリーンになり、.gitignoreファイルを微調整することで、Gitブランチを使用してさまざまな顧客と設定を簡単に管理できるようになります!

Ju。

役に立ちましたか?

解決

cpharmstonの答えに加えて、リファクタリングを行って、クライアントごとに本当にカスタムなものとそうでないものを区別する必要があるように思えます。次に、各クライアントのカスタマイズを追跡するために追加のリポジトリを追加することを検討することができます(ブランチではなく、完全に新しいリポジトリ)。その後、デプロイメントで「コア」を取得できます。メインリポジトリから、およびそのリポジトリからのクライアント固有のもの。

他のヒント

あなたがしようとしていることを達成するためにブランチを使用しません。

ソース管理では、ブランチはトランクにマージされることを意図したものに使用することを目的としています。たとえば、 Alex Gaynor 夏のコード 最終的にDjangoトランクにマージすることを目標に、複数のデータベースのサポートが可能になります。

チェックアウト(またはGitの場合はクローン)は、あなたが試しているものにより適している可能性がありますする。プロジェクトのすべてのベースファイル(および必要に応じて.sampleファイル)を含むレポを作成し、コードをデプロイするさまざまな場所すべてにレポをクローンします。次に、各デプロイメントで設定ファイルとカスタマイズファイルを手動で作成します(レポジトリに追加)。リポジトリのコードを更新するたびに、 pull 各展開で、コードを更新します。ビオラ!

Matthew Talbertは正しいです。カスタムのものと非カスタムのものを分ける必要があります。すべてのコアコードを1つのディレクトリに含めるようにリファクタリングできる場合、クライアントはそれを読み取り専用のgitサブモジュールとして使用できます。追加の利点は、コアコードの明示的なバージョンにロックすることです。これは、彼らが意識的に新しいリビジョンに更新する必要があることを意味します。

その他の答えは、コアコードをクライアントごとのカスタムコードから分離する範囲で、メンテナンスに最適な形になるということです。ただし、私は群衆から離れて、それができない場合(特定のクライアントのコアコードに追加機能を追加する必要があるため)、DVCSブランチはあなたがやりたいことに対してうまく機能すると言います。この目的のためにリポジトリ内のブランチよりもディレクトリごとのブランチをお勧めします(gitはディレクトリごとのブランチも実行できますが、分岐するのはクローンリポジトリだけです)。

gitではなくhgを使用していますが、Djangoプロジェクトはすべて同じベースの「プロジェクトテンプレート」から複製されています。ユーティリティスクリプト、INSTALLED_APPSの基本的な共通セットなどを含むレポ。これは、そのプロジェクトテンプレートに変更を加えると、それらの共通の更新を既存のプロジェクトに簡単にマージできることを意味します。これは計画しているものとまったく同じではありませんが、似ています。特定のクライアント用に既にカスタマイズしたコアの同じコード領域を変更する場合、マージの競合に対処する必要がある場合があります。

すべての答えを読んだ後(ありがとう!)、djangoプロジェクト構造を最初にリファクタリングして、アプリサブフォルダーでコアアプリと異なるアプリを分離することにしました。これを行うと、よりクリーンなプロジェクトが作成され、さまざまなブランチファイルで.gitignoreを調整することで、gitブランチを使用してさまざまな顧客と設定を簡単に管理できます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top