it-swarm.dev

Gitを使用したサイトの管理

Joomlaサイトのビルドを管理するためにGitを使い始めており、いくつかのベストプラクティスのガイダンスを探しています。現状のまま:

  • WHMを使用して新しいアカウントをプロビジョニングします。インストール後フックを記述して、GoomhubからJoomlaを自動的にダウンロードし、関連するpublic_htmlディレクトリに配置し、データベースとDBユーザーを作成します。
  • Webインターフェースを介してJoomlaを手動でインストールします(現在、これも自動化する方法を探しています)
  • public_htmlの上にベアリポジトリをセットアップします-これは、ユーザーがプッシュおよびプルする場所です。これをOriginと呼びます
  • public_htmlに標準のリポジトリをセットアップする
  • Joomla固有の.gitignoreを追加します
  • ベアリポジトリをリモートとして指定します(git remote add Origin ../repo.git
  • git add .、次にgit commit -m"Initial J! Commit"、次にgit Push Origin masterを実行して、ベアリポジトリにデフォルトのインストールを取得します。
  • post-receiveフックをベアリポジトリに追加して、変更をpublic_htmlのリポジトリに自動的にプルします(ベアリポジトリは開発者がローカルの変更をプッシュする場所であるため)
  • 誰かがサーバーで変更を行った場合に備えて、post-updateフックをpublic_htmlのリポジトリに追加します...

現時点では、データベースについてあまり心配していません。私の主な問題は、Joomlaファイルの追加/変更を処理することです。明らかに、テンプレートと拡張機能をインストールすると、特定のファイルが追加および削除されます。同様に、Joomlaの更新は変更を引き起こします。

これらのサーバー上の変更に対処する最良の方法は何ですか?私は、PHPGitを使用してgit add .git commitgit Push Origin masterを実行するonAfterRenderなどを実行する小さなプラグインを書くことを考えていました。次に、私のローカルコピーで、pullを実行すると、すべてが実行されます。それとももっと良い方法がありますか?

8
codinghands

なぜあなたが裸/公共の構造を設定したのか理解できません。

私はpublic_htmlをリポジトリのルートとしてのみ使用し、非常に完全な.gitignoreを使用します(これは、Joomla!の新しい更新ごとに更新する必要があります。git statusを使用して、新しいファイルを見つけて追加しますバージョンを取得します)。

開発者は開発ブランチにプッシュします。最終的にリリースが承認されると、リリースはマスターに対してリベースされ、テストされて本番環境にプッシュされます。

私はフックを使用していませんが、共有したい関連するデータベースパーツをダンプするいくつかのスクリプトがありますが、必要に応じてユーザーにインポートスクリプトを実行させることができます。このようにして、誰かが新しい拡張機能で作業している場合、共有する準備ができるまで、構成を保持します。

Less/sassを使用する場合は、ポストコミットフックでコンパイルを実行して、サーバーで圧縮フラグが常にオンになるようにすることができます。

-更新:.gitignore-

すべてのJoomlaで変更される可能性があるため、ここで.gitignoreを共有することはできません!更新。まず、Eclipse .project .settingsなど、除外するその他のファイルがconfiguration.phpおよび.htaccessとともにマスター.gitignoreにあることを確認してください。私のマスター.gitignoreは、キャッシュやtmpの代わりに独自のフォルダーに変更を書き込む厄介なコンポーネントを含むサイトでは、次のようになります。さらに、sassを使用します。

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

だから私はそれを(ウェブルートから)コピーすることから始めます:

cp /home/_core/.gitignore .

次に、更新パック(完全な更新パッケージ)を展開し、実行します

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

[〜#〜] warning [〜#〜]更新パッケージでのみ、ライブサイトで検索を実行しないでください!

いくつかのテストを実行し、手順を完了する前に毎回何が追加されるかをgitステータスで確認し、そのためのbashスクリプトを記述します。これは私が使用しているものですが、要件に適合することは保証されていません100%

4
Riccardo Zorn