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


8

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の更新は変更を引き起こします。

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

回答:


4

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

私は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

警告ライブサイトでは検索を実行せず、更新パッケージでのみ実行してください!

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


あなたの答えをありがとう-あなたはあなたを公表しても構わないと思います.gitignoreか?現在私は唯一の開発者であり、Gitを初めて使用するので、オンラインでWeb開発ワークフローガイダンスに従って現在の場所にたどり着き、ベア/パブリック構造につ​​ながっていました。
codehands 2014年

いいえ、ここには貼り付けません。私はそれを作成するための指示を追加しました
Riccardo Zorn

こんにちはリカルド-ありがとう、私はすでにかなり完全なを持っていますが.gitignore、違いを確認したかっただけです。
codehands 2014年

フォルダーをグローバルに無視できます。例:すべての場所のキャッシュフォルダーを無視するcache/には、.gitignoreに追加するだけ
jackJoe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.