2

私は Github にかなり慣れていないので、ワークフローを調整する方法についてアドバイスをお願いします。

XAMPP を使用して Mac Mini で実行する小さな Web アプリケーションがあります。私たちは全国に数台の Mac Mini を所有しており、ソフトウェアを管理して更新するための良い方法を探していました。さまざまなバージョンのすべてに本当にイライラしていたからです。

問題は、ソフトウェアの一部のファイルが共有されていることですが、一部のファイルは各クライアント/Mac Mini に固有のものです。簡単なセットアップを探しているので、共通ファイルを 1 回だけ変更し、クライアントごとに特定のファイル (テンプレートなど) を保持する必要があります。現在の状況は次のとおりです。

  • htdocs ディレクトリにソフトウェア フォルダが 1 つあります。
  • このフォルダーには、次のように、ルートに特定のファイルと共通のファイルの両方があります。

    • 共有フォルダ
    • shared.html
    • 特定の.html
    • 特定のフォルダ
    • mediafolder (これは無視し、git には入れません)

これを管理する最善の方法を探しています。このトピックについていくつかの調査を行いましたが、誰かがこの特定の状況についてアドバイスしてくれることを願っています. 次の選択肢があると感じています。

  1. すべてを 1 つのリポジトリに入れますが、特定のファイルは別々のブランチに配置します (更新後に共通ファイルへの変更を各クライアント ブランチにプッシュする必要がありますか?)

  2. 2 つのリポジトリを使用します (そして、特定のファイルから共通ファイルを分離するために .gitignore を使用します)。1 つは共通ファイル、もう 1 つはクライアント固有のファイル (別々のブランチ) です。私の初期の調査では、すべてが特定のディレクトリではなくルートにあるため、これは不可能であることがわかりました

  3. git サブツリーを使用する

  4. git サブモジュールを使用する

  5. gitslave を使用する

  6. 他に何か?

OSX Git GUI で管理できるソリューションを探しています。

私のワークフローについて。htdocs のソフトウェア フォルダーからコードにすべての変更を直接加えられることを願っています。共通ファイルのみを変更する場合は、もちろんこれを共通リポジトリにコミットします。特定のファイルに変更を加えた場合、最初に正しいブランチまたはリポジトリに接続してから、これを更新します。用語が間違っていて申し訳ありませんが、それでも十分に明確であることを願っています。

誰かが私を正しい方向に向けることができれば、とてもうれしいです。

4

1 に答える 1

1

私が見る限り、git内で機能する唯一の解決策はオプション1(ブランチ)です。

異なる方法で処理されるファイルがすべて1つのフォルダーにある場合、他のすべては機能しません。

更新後に、共通ファイルへの変更を各クライアントブランチにプッシュする必要がありますか?

そうです。実際には、最初に変更をクライアントブランチにマージし(正確には、クライアントブランチのローカルコピーに)、次にすべてのクライアントブランチをプッシュする必要があります。少し厄介かもしれませんが、それはうまくいくはずです。スクリプトを使用して自動化することで、これを軽減できます。


カスタマイズしたファイルをサブフォルダーに入れることができれば、そうです。git-submodule、git-subtreeなどを使用できます。しかし、あなたの場合はうまくいかないと思います。git-submoduleetal。さまざまなリポジトリに物事を保管したい状況を対象としています。これは、2つの部分(リポジトリ)を個別に複製したり、個別にバージョン管理したり、個別にタグ付けおよび分岐したりできることを意味します。

しかし、私が理解している限り、これはあなたが望むものではありません。カスタマイズされたテンプレートはすべてソフトウェア製品の一部であり、システムの他の部分とともに進化します。したがって、それらを別々のリポジトリに配置すると、問題が発生するだけです(たとえば、分岐する場合は、各サブモジュールを個別に分岐する必要があります。さらに悪いことに、各サブモジュールを個別にマージします)。

いくつかのファイルの異なる「バージョン」を維持したいだけで、これがまさにブランチの目的です。


ただし、別のアプローチ、つまり実行時にシステム固有のカスタマイズを実行することを検討する必要があります。

これを行う方法は詳細によって異なりますが、アイデアとして、システム固有のものの表を作成することができます。次に、起動時にホストシステムを検出し(ホスト名などを取得)、カスタマイズを適用します。

これにより、複数のブランチに関するすべての問題を回避し、それらを同期し、すべてをテストして、正しいブランチを展開するようにします。また、さらに重要なのは、1つのコードベースで作業できるようになり、システム間の類似点を利用できることです。最後に、実行時にカスタマイズの個々の部分のオンとオフを切り替えることができます。これにより、カスタマイズに関連するデバッグの問題が大幅に簡素化されます。

私の経験では、これはファイルをデプロイするよりも単純で堅牢なアプローチであり、システムごとに異なるコードをデプロイする場合もあります。私はこのアイデアをいくつかのプロジェクトで使用しましたが、うまくいきました。

于 2012-10-11T12:09:18.040 に答える