ワークフローにバージョン管理を追加するにはどうすればよいですか?


11

私はテーマを開発していますが、たくさんあります。PSDが渡され、HTML / CSSをコード化し、コードをWordpressにスラップし、QCが得られたら修正します。ライブになると、クライアントは通常のようにブログ投稿を編集したり、カスタムプラグインを使用して写真をアップロードしたりできます。

テーマやページ/投稿コンテンツに変更を加える必要がある場合があります。つまり、それらをライブにするか、クライアントが承認するために開発環境にサイトをダウンロードしてセットアップする必要があります。バックアップもバージョン管理もありません。これを変更する必要があることに気付きました。

GitとMercurialが提案されているので、これらのツールを利用したいのですが、ワークフローにどのように組み込むかについて混乱しています。

開発サーバー上のサイトへのすべての変更を要求し、承認後にそれらをライブでプッシュしますか?ブログの投稿についてはどうですか?開発者に投稿を書いて変更をライブにプッシュするのはやり過ぎのようですが、ライブサイトで編集されたデータベースを同期するにはどうすればよいですか?インターネットを調べました。いくつかのガイダンスをいただければ幸いです。


これは、範囲外の生態系問題と見なされます。進行中の議論についてはこちらをご覧ください
チップベネット

4
@ChipBennett同意しない。WordPressのテーマ、プラグイン、データベース間の特定の依存関係、およびそれらが一般的な開発者の実践にどのように影響するかは歓迎されます。
fuxia

@toscho私は確かにそれを確信することができました。それが私がメタの議論を指摘した理由です。:)
チップベネット

回答:


9

まず、ここには2つのワークフローがあることを認識する必要があります。自分とクライアントです。

あなたのワークフロー

  • PSDを受信
  • コードHTML / CSS
  • コードWordPressテンプレート
  • ライブWordPressサイトにテーマをデプロイする

彼らのワークフロー

  • 必要な変更を考案し、メールで送信します
  • 投稿を書く
  • 写真をアップロードする

問題

ここでバージョン管理を実装しても、クライアントのワークフローとはまったく関係ありません。WordPressテーマに使用するコードを追跡することがすべてです。すべてのテーマファイル、カスタムプラグインなどは、バージョン管理システム(Git、Mercurial、Subversion、または使用するものを選択したもの)に含める必要があります。

ワークフローは次のようになります。

  • コードを書く
  • バージョン管理システムへの変更をコミットします
  • 変更を本番サイトにプッシュする
  • クライアントからコメントを受け取る
  • コードを書く
  • 変更をコミットする
  • コードを書く
  • 変更をコミットする
  • 変更を本番サイトにプッシュする

これは、コードのバージョン管理履歴を維持するためのものです。コードはクライアントが変更してはならないものであり、本番稼働中は本番サイトでコードを変更しないでください。

ただし、コンテンツ(投稿、写真など)の変更は、バージョン管理システムの範囲外です。つまり、開発で変更を加えてから、データベースを本番環境にプッシュしません。これは開発の習慣としては不十分です。devデータベースとprodデータベースを同期させる必要がある場合は、本番環境のボックスから定期的にバックアップをプルし、そのバックアップからローカルバージョンを復元する必要があります。

コードの変更は、開発から本番に流れます。
データベースの変更は、本番から開発に流れます。


コンテンツデータがデータベースに格納される方法を管理する特別なスクリプトがない限り、データベースを簡単に同期することはできません。これが、ワークフローのコンテンツからコードを分離する理由です。代わりに、ステージングサーバーを使用するか、db同期スクリプトの1つを使用するか、独自のスクリプトを作成します。
Wyck

@EAMann素晴らしい回答、ありがとうございます!あなたが説明したワークフローに追加する唯一のものは、コードの記述、変更のコミット、開発サイトへのプッシュ、クライアントからのコメントの取得です... ...定期的に変更する必要があるため、2つの個別のワークフローは考慮していませんクライアントのためのコンテンツ。コンテンツ内の特別なリクエスト(特別なスタイルなど)に対応するために、コンテンツにHTMLを配置する必要がある場合があります。稼働する前にクライアントの承認が必要な場合があるため、データベースを同期する必要があります。この種のセットアップのベストプラクティスはありますか?
cfree

@Wyckテーマに沿ってコンテンツをドロップするのではなく、2つのプロセスを分離する方が理にかなっています。テーマ設定のための開発領域と、コンテンツを個別にドロップするためのステージング領域のアイデアが気に入っています。私が目にする唯一の問題は、クライアントがそれをライブで起動する前に、テーマとコンテンツ(サイト全体、静的ページ)の両方を確認したいということです。
cfree

通常、データベースの変更を同期することは問題ではありません。私が言ったことは、本番データベースのダンプを取り、ローカル開発データベースをそれに置き換えるということです。確かに、スクリプトを使用して自動化できますが、あまり頻繁には実行しないでしょう。
EAMann 2012

3
そこでは、まだないが、それは本当にワードプレスの側のとげであるが、特に多くのCMSのようにワードプレスの問題は、この問題を持っていない、あなたはここでそれについて読むことができますwordpress.stackexchange.com/questions/119/...以上の深さで、いくつかのスクリプトはそこに存在しますが、特定の環境に固有であるため、ほとんどが社内にあります。
Wyck

1

データベースを同期するソフトウェアを使用できます。しかし、http://chronicdb.comのようなものでデータ自体をバージョン管理するオプションもあります。


これは面白そうです。問題のかなりの数を解決するかもしれません。私はこれをチェックするつもりです、ありがとう。
cfree

1

これに対する完全な答えを別の質問に書きました。個人的に私はgitを使用していますが、素晴らしいです。それを使い始めるという点では、http: //gitref.org/http://help.github.com/mac-set-up-git/をチェックすることをお勧めします。あなたはブックタイプであれば、私が読んだ本1を、それは間違いなく、$ 22の電子ブックの価格価値があります。自分でやらせてください。その決定を後悔することはありません。


よろしくお願いします。マスター/スレーブデータベースのセットアップは興味深いようです。ガイダンスをありがとう
cfree
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.