17

私はGITを初めて使用し、それが私のニーズにどれだけ適合するかはまだわかりませんが、印象的です。

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

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

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

設定ファイルについて、どのように進めますか?顧客固有の設定ファイルを.gitignoreして、settings.xml.sampleファイルを追加しますか?たとえば、リポジトリです。

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

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

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

ジュ。

4

5 に答える 5

6

私はあなたがやろうとしていることを成し遂げるために枝を使いません。

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

チェックアウト(またはGitの場合はクローン)は、あなたがやろうとしていることに適しているかもしれません。プロジェクトのすべてのベースファイル(および、必要に応じて.sampleファイル)を含むリポジトリを作成し、コードをデプロイするさまざまな場所すべてにリポジトリのクローンを作成します。次に、各デプロイメントで構成ファイルとカスタマイズファイルを手動で作成します(リポジトリに追加しないように注意してください)。リポジトリ内のコードを更新するときはいつでも、各デプロイメントでプルを実行してコードを更新してください。ビオラ!

于 2009-09-16T00:37:38.043 に答える
6

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

于 2009-09-16T00:46:46.400 に答える
2

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

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

于 2009-09-16T13:30:00.000 に答える
1

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

于 2009-09-16T00:50:30.097 に答える
1

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

于 2009-09-17T08:09:53.417 に答える