4

DrupalでWebサイトを開発していますが、開発ディレクトリツリーは次のとおりです。

modules
    -->moduleA
        -->moduleA.inc
        -->moduleA.info
        -->moduleA.php
    -->moduleB
        -->moduleB.inc
        -->moduleB.info
        -->moduleB.php
themes
    -->themeA
        -->themeA.info
        -->page.tpl.php
    -->themeB
        -->themeB.info
        -->page.tpl.php
ShellScripts
    -->scriptA.sh
    -->scriptB.sh
legacyPerlScripts
    -->script1.pl
    -->script2.pl

大規模な開発チームはありません。私はすべてのモジュールとテーマを自分で開発しています。モジュールとテーマはある程度独立しており、それぞれに独自のバージョン番号があります。ただし、一部の大規模なタスクでは、いくつかのモジュールへのアップグレードが必要になる場合があります。さらに、モジュール、テーマ、およびスクリプトを一緒にデプロイする必要があります。たとえば、モジュールBはモジュールAの新機能に依存する可能性があるため、現在のバージョンのモジュールAを古いバージョンのモジュールBと一緒に使用することはお勧めできません。 。

リビジョン管理にgitを使用するためのベストプラクティスは何ですか?私が見ているオプションは次のとおりです。

  1. すべてを1つの大きなモノリシックリポジトリに配置します。
  2. モジュール、テーマ、スクリプトディレクトリごとに個別のリポジトリを作成します。
  3. git-slave(gits)を使用して、モジュール、テーマ、およびスクリプトディレクトリごとにサブプロジェクトを作成します。
  4. gitサブモジュールを使用する
  5. gitサブツリーを使用する

このようなWeb開発プロジェクトで最も一般的な5つのオプションはどれですか?

4

2 に答える 2

2

すべてを1つのリポジトリに保管します。あなたはすでにすべてをディレクトリごとに整理しています。どちらかといえば、ディレクトリのいずれかへの変更を伴う可能性のある、クライアントごとに個別のブランチ追跡作業が必要になる場合があります。

于 2012-04-04T06:20:44.777 に答える
2

サブモジュールは、密結合のコードには適していません。両方のプロジェクトが依存するデータベース移行用のサブプロジェクトを共有する2つの主要なプロジェクトがありました。これをサブモジュールで実装しました。移行を変更する手順は次のようになりました。

  1. サブモジュールに変更をコミットします。
  2. 変更を元にプッシュします。
  3. 現在参加しているスーパープロジェクトにバックアップします。
  4. 新しいサブモジュール参照をコミットしてプッシュします。
  5. 他のスーパープロジェクトのサブモジュールのコピーに移動します。
  6. 元の場所から最新の変更をプルします。
  7. そのスーパープロジェクトにバックアップします。
  8. 新しいサブモジュール参照をコミットしてプッシュします。

その上、3つのプロジェクトすべてで正しいブランチにいることを常に確認する必要がありました。大変な苦痛でした。サブモジュールは、そのような開発のために作成されたものではありません。最終的に、データベースの移行を2つの主要なプロジェクトの1つに含めることになり、コードは共有されなくなりました(とにかく、便宜上共有されただけです)。

サブツリーのマージを調べましたが、サブモジュールよりもわずかに良く見えました。

特に、これをすべて一緒にデプロイする場合は、1つのリポジトリとして残し、分岐とタグ付けを使用してさまざまなモジュールのさまざまなバージョンを管理する必要があるようです。

于 2012-04-04T15:28:53.297 に答える