2011-09-27 5 views
45

これが明白で簡単なことをお詫び申し上げます。私はgit/githubチュートリアルをよく見ていますが、私がやっていることが正しいことを確認してください。開発/テスト/プロダクションサーバを使ったGit/GitHub-PHPシステムの適切な使い方

私は開発チームとプロセスにVC(明白な理由から)を組み込みたいと思っています。

(Dreamweaverを使用)現在の開発プロセス:
*チケット(または作業順序)を受信
開発サーバー
上*ダウンロードファイル*ファイル
への変更を行います*アップロードバック開発サーバー
にファイル*変更が*
を検証/テストした私は、私たちの新しいdevelopmeを作る方法を把握しようとしている本番サーバーに


を送りますGitを使用したntプロセス

私はPHPStorm(これはGitとの直接統合を備えた実際のPHP IDEです)に切り替わります。

それは私があると仮定し、何かを変更したファイル

  • チェックアウト/アップデート/ダウンロードファイル(複数可)
  • チケット(または作業順序)を受信
    • よう
    • ファイルのアップロード(だろう現在の作業ディレクトリ...?)
    • 今日の最後に、コミットしてください
    • ビルドスクリプトがテストサーバーにデータを送信しました(夜間ビルドD)

    それとも、チケット(または作業指示を受信

    • のような何かをする方が良いでしょう)
    • チェックアウト/アップデート/ダウンロードファイル(複数可)
    • 変更ファイル
    • アップロードファイル/コミット
    • ビルドスクリプトでテストサーバーにデータを送信する(夜間ビルド)

    別の方法がありますか?最適なフローは何かを理解するのに苦労しますか?

    ご協力いただければ幸いです。


    編集

    私はそれがローカルに(すべての開発者を)サーバーのバージョンを持っていることが最善であるかどうかを確認しようと、あなたが7かそこらを持っている場合、もしそうなら、どのように仕事をしています枝?

    もしそうでなければ、Web上に7かそこらのブランチをどう扱っていますか?あなたはFTPファイルをアップしたり、Git Hooksを使って自動更新しますか?

    アップデート2012年7月26日

    今かなり長い間Gitリポジトリで正常に働いた後、私は大きな成功を収め、この分岐モデル、次のしてきた: A Successful Git Branching Model

    上記の答えをしてはい - 間違いなくサーバーのローカルバージョンが必要です。

  • +4

    これはgitブランチとワークフローを管理するための一般的な選択です:http://nvie.com/posts/a-successful-git-branching-model/ –

    +0

    @ Mike - これはすばらしいモデルです。それを使って。あなたはそれがどのように働くか知っていますか?つまり、それぞれのブランチごとに別々のサーバーまたはセクションを設定しているのでしょうか?また、すべての人が自分のマシンにサーバーのローカルコピーを持っていて、各ブランチ内で作業していますか? –

    答えて

    67

    ライブサーバーと開発サーバーがあると仮定して、これらの行に沿って何かを実行します。

    も、私は、少なくとも2本の枝だろう、開発サイクルを開始する前に:

    1. マスター - 開発サーバは、このブランチ安定
    2. 上で動作します - ライブサーバーは、このブランチ上で実行されます。
    3. だから、

    開発者は、彼/彼女は、次のアクションを実行しますチケットまたは作業順序を取得する場合:チケットIDとして名前

    1. gitのプル原点マスター
    2. GitのブランチfeatureBranch(
    3. git checkout featureBranch
    4. 希望する変更を行う変更を行います。必要なだけ頻繁にコミットします。あなたが貴重な歴史を作り出すからです。たとえば、問題へのアプローチを試みることができます。問題が解決しない場合は、問題を放棄します。 1日後にライトを見て、ソリューションを再適用したい場合、それはあなたの歴史にあります!
    5. この機能を完全に開発してローカルでテストする場合は、マスターをチェックしてください。
    6. gitがfeatureBranch
    7. Gitのプッシュ原点マスター
    8. テストあなたの開発サーバー上のプッシュされた変更をマージします。これはあなたが考えることができるすべてのテストを実行する瞬間です。
    9. すべて機能している場合は、機能または修正プログラムを安定したブランチにマージします。今、変化はあなたの顧客のために生きています。
    10. サーバー上のコード

      サーバの更新は問題にはならないの取得

    。基本的には、あなたが開発者であるように、私はそれらをユーザーとして設定します。私の会社では、サーバーを読み取り専用ユーザーとしてセットアップしました。基本的には、サーバーは決して何かを押すことはできませんが、いつでも引き出す​​ことができるということです。これを設定することは自明ではありませんので、単純にgit pullを許可する単純なwebinterfaceを構築することもできます。あなたはライブの実装上のものをやってから、あなたの開発を続けることができれば、あなたは安全だ:)

    この反応のコメントで尋ねた最後の質問に応答して、[EDIT]

    I私はあなたの質問を正しく理解しているかどうかわからないが、基本的に(少し簡素化)これは私がこれを行う方法です、私はあなたの靴でした。 Example setup

    テストマシン(またはテスト実装として機能するウェブルート)には、マスターブランチをチェックアウトしたgitリポジトリに基づいたソースコードがあります。このリポジトリを作成している間は、他のすべてのブランチへの参照をすべて削除することもできるので、このリポジトリ内の間違ったブランチをチェックアウトすることはできません。だから、基本的にテストマシンにはチェックアウトされているマスターブランチだけを持つGitリポジトリがあります。

    ライブサーバーの場合、私はまったく同じことをしますが、今回は安定したブランチをチェックアウトしました。開発者は、すべてのブランチが存在するローカルリポジトリをクローンとして作成する必要があります。あなたが構築するソフトウェアのローカル実装。このソフトウェアは、ローカルのgitリポジトリからソースを取得します。つまり、このリポジトリの現在チェックアウトされているブランチからです。

    実際の新機能が望まれる場合は、ローカル機能ブランチは、現在のマスターに基づいて行うことができる

    をコーディングします。ブランチがチェックアウトされると、開発者が変更を行うことができます(ソフトウェアは機能ブランチのソース上で実行されているため)。

    すべてが整っていると思われる場合、変更は機能ブランチからマスターにマージされ、 "gitマシン"にプッシュされます。 "あなたのギブス"は話すように。テストでは変更が反映されるようになり、必要なすべてのテストをQAで実行できるようになりました。彼らはすべてが問題ないと判断した場合、開発者はマスターからの変更をマージして、再度プッシュできます。

    残っているすべてのものが、実際のマシンから引き上げられています。

    +0

    その回答をいただきありがとうございます - 非常に役に立ちます。サーバーの観点からは、ファイルのアップロード/ダウンロードはどのように機能しますか? PHPでテストするために、私は実際にサーバー上で(明らかに)それを見る必要があります。いつも私は開発サーバーを使用しています(いつものようにFTPしていますか?)ありがとう! –

    +0

    サーバーの観点から、私はそれらの情報を引き出すgitをしたいと思います。回答自体に詳細な情報を追加します – hoppa

    +0

    更新していただきありがとうございます。しかし、ファイルを更新するたびに(開発サーバーについて)サーバープルをトリガーしますか?私は、私のプロダクションサーバーがどのように(私はCIサーバーを使用して)終わるのか知っていますが、開発の迅速な変更のために私が見ているものがあります。あるいは、何かが開発ブランチ上でコミットされるたびに、それを引っ張り出します(それはかなり即効性がある限り動作するようです) –

    関連する問題