1

まず、この質問を読んでいただきありがとうございます。

私は現在、どの Git ワークフローが自分の会社での Web サイト開発に最も適しているかを研究しています。ネット上にはさまざまなガイドがありますが、それらはほとんどが概念的なものです。私の実装方法が間違っている場合はお知らせください:

1. コンセプト

概念的には、開発、統合、ステージング、本番の 4 つの層があります。開発層はローカルに保存され、Git の助けを借りて統合が行われ、運用層は public_html に直接配置され、リリース前にサイトをプレビューするためのステージング層は、保護されたディレクトリ __dev/staging (またはさらに良いことに、__dev/[branch_name] ? )。

2. フォルダ構造 (ステージングおよびプロダクション層)

  • ギット
    • project.git (これは、この Web サイト プロジェクトのベア リポジトリです)
  • public_html
    • __dev (パスワードで保護されたディレクトリ)
      • ステージング (これは、ステージング層として使用される public_html のコピーのようなものです)

3. ローカル コピー内の Git セットアップ (開発および統合層)

git remote add origin ssh://path_to_project.git
git branch staging

そうすれば、マスターとステージングの 2 つのブランチを開始できます。

私がする時

git push origin master

サイトのオンライン バージョンは、サイトに ssh 接続しなくても更新されるはずです。そして、私がするとき

git push origin [branchname]

__dev/[branchname] は自動的に更新されます。

上記のすべては、git フックを介して実行できます。ssh 接続とプルの代わりにこの自動化を行う理由は、開発を高速化するためです (そうでなければ、ftp よりも手間がかかる場合は、どうすればよいでしょうか? 同意しますか?)

4.フック

これは私がかなり混乱したところです。

私が念頭に置いていたのは、次の 2 つのフレーバーのいずれかでした。

を。クローンとコピー

サイトにプッシュすると、フックはベア リポジトリを一時ディレクトリに複製し、送信したブランチに応じて public_html または __dev/branch にコピーします。

b. リセットして引く

サイトにプッシュすると、フックは public_html または __dev/branch 内に .git ディレクトリが既に存在するかどうかを確認します

何も見つからない場合は、cd でそのディレクトリに移動し、git init を実行してから git pull を実行します。

見つかった場合は、そのディレクトリに cd し、git reset --head を実行してから git pull を実行します。

installatron または softaculous を使用したアプリのインストール

ときどき、installatron から Web アプリをインストールして、それを作業ベースとして使用したいことがあります。残念ながら、インストール後に git に自動的にプッシュするフックがないため、ssh に接続して次の操作を行う必要があります。

git add .
git commit -a -m "installed xxx app"
git push origin master

次に、ローカル リポジトリにプルします。

結論と質問

私が考えていたワークフローについてどう思いますか? 改善する必要がある場所はありますか?枝の配置は大丈夫ですか?4.a. どちらのフレーバーが良いですか? または4.b.、または別のものがありますか?

ありがとうございました。

4

1 に答える 1

1

4a と 4b の両方が一般的に使用されます。

私は 4b を好みます。これは、レポのすべての履歴をプロダクション フォルダーで直接利用できるためです。あなたはでもっと見ることができます:

ブランチに関しては、簡単に始めて、必要に応じて追加してください。ただし、分散型VCS を使用すると、いくつかのテストを実行するために、Jenkins などのジョブ スケジューラに新しい commit を通知できる中間リポジトリにプッシュできることを
忘れないでください。 これらのテストに合格したら prod リポジトリにプッシュできます。

于 2013-10-27T09:09:43.840 に答える