問題タブ [git-post-receive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git Web サイトのデプロイ - 2 つの方法
私は git Web サイトの展開について調査してきましたが、2 つの異なる方法に出会いました。どちらも機能しているように見えますが、私が見逃している長所/短所は何なのか疑問に思っています。これら 2 つの方法のうち、どちらを使用しますか。また、その理由は何ですか?
- 公開の www ディレクトリに作業ツリーを切り離したレポ。リポジトリにプッシュすると、更新後のフックがチェックアウト -f を実行します (これに似ています) 。
- パブリック www ディレクトリ内のベア レポと非ベア レポ。Post-update フックは git reset を実行してから git pull を実行します。(これに似ています)
心配するレポが 1 つしかないので、方法 1 の方が簡単に思えますが、何か足りないものがあるのではないかと思います。
git - git を使用して実稼働 Web サイトを管理していますか?
運用サーバー上に約 15,000 個のファイルを含む Web サイトがあります。現在、リモートの開発者がサイトで大部分の作業を行っていますが、編集も必要になる場合があります。バージョン管理が必要なのは明らかなので、git をセットアップしようとしています。
セットアップをシンプルかつ簡単に保ちたいと思います。変更を確認するためのインテグレータは必要ありません。両方とも、変更を本番サイトにプッシュすることについて完全に信頼されています。また、変更をライブにする前にステージング サーバーにプッシュする必要もないと思います。ローカル マシンでテストできないものはステージング サーバーでテストできないからです。私は基本的に、お互いのファイルを壊さないようにする何かが欲しいだけです。これが私が念頭に置いているシナリオです:
質問:
このワークフローは 2 人の開発者のチーム (そのうちの 1 人は不定期にしか編集しない) にとって理にかなっていますか、それとももっと良いワークフローがありますか?
開発者と実動サーバーの間にステージング・サーバーを追加する利点はありますか?
運用サーバーは、webroot フォルダーを指す post-receive フックを備えたベア リポジトリである必要があり、各開発者のマシンにコピーを複製してから、git commit / git push を実行して変更を運用に戻す必要があると思いますか?
運用サーバー上にベア リポジトリを作成し、サイトの既存の 15,000 ファイルを追加する簡単な方法はありますか? それとも、ローカル ワークステーションのクローン リポジトリにダウンロードしてから、git add / commit / push を実行して本番サーバー リポジトリにロードする必要がありますか? (アップロードには約 13 時間かかる場合があります。)
ありがとう!
git - (ローカルではなく) リモートマシンで Git post-receive フックを使用する方法は?
GitベアリポジトリをホストするためにWindows開発サーバーを使用しています。サーバーへの直接ファイル アクセスを使用します (SSH、GIT、HTTP は使用しません)。これはうまく機能し、チームは満足しています。
現在、誰かがベア リポジトリにコードをプッシュするたびに、開発サーバーにデプロイ操作を実行させようとしています。サーバーにローカル リポジトリを作成し、ベア リポジトリをリモートとして追加しました。
post-receive フックでローカル パスを使用してもまったく機能しないことがわかりました。post-receive フックは、サーバー自体ではなく、クライアントのシステム上のフォルダーを検索するようです。サーバーで //server/c$/[path] を使用すると (サーバーのローカル リポジトリのリモート設定にも)、すべてが機能しているように見えますが、非常に低速です。現在、それは私たちを狂わせ始めているので、今のところ使用をやめました:( .
要するに、私たちの質問は次のとおりです。
- post-receive にクライアント ローカル スコープがあるというのは本当ですか?
- 1 が true の場合: post-receive をサーバーのスコープ内で動作させることは可能ですか?
- 上記のようなメカニズムをうまく使用した人はいますか?
助けてくれてどうもありがとう!
php - Githubサービスフック:PHP経由での受信後
サービスフックを介したデプロイで問題が発生し、権限の問題だと思いますが、最初にすべての事実を述べます。
サーバー:ArchLinux上のPHP-FPMを使用したNginx
Nginxはユーザーhttpとして実行されており、スクリプトによって更新されるディレクトリの所有権を持っています。HTTP用のSSHキーも作成し、GitHubにインストールしました。他のコマンドはshell_execを介して正常に機能しているように見えますが、リセットまたはプルを完了させることができず、どちらからも出力が返されません。どんな助けでもいただければ幸いです。ありがとう!
フックスクリプト(PHP):
rvm - 受信後フックが正しい Ruby を使用していない
超初心者で何を言っているのかわからないのでご容赦ください。
ここで説明されているように、Jekyll サイトをデプロイするために Git post-receive フックをセットアップしようとしています。その内容は
PATH
トラブルシューティングの目的でエコーしています。ssh経由でログインし、スクリプトを手動で実行すると~/git/jekyll.git/hooks/post-receive
、すべてが正常に機能し、コンソールが読み取ります
ただし、git push deploy master
ラップトップからすると、次のエラーが表示されます。
post-receive
の結果としてフックが実行されるとgit push
、間違ったルビ (1.8.7、おそらくシステムのもの?) が使用されているようです。PATH
変数はインスタンスごとに異なることに注意してください。
それが問題なら、それは私が理解できる限りです。これを修正するにはどうすればよいですか?
git - 更新を受信したときに Github をリモート サーバーにプッシュする
Github が更新をリモート サーバーに自動的にプッシュするように設定するにはどうすればよいですか?
これは、Github でコードベースを維持し、そのコードベースからウェブサイトを運営するのに役立ちます。
私は自分のコンピューターにレポを持っています。これが私が働いている場所です。
変更をローカル リポジトリにコミットし、Github リポジトリにプッシュします。
Github リポジトリで、これらの変更をリモート サーバーにプッシュする必要があります。
私は一日中研究してきましたが、「フック」を使用するのは理にかなっているように思えます。おそらく、Github で「post-receive」フックを使用して、リモート サーバーにプッシュ コマンドを実行します。
助言がありますか?
git - gittracpost-receiveフック
最近、tracを0.10から1.0にアップグレードし、tracインスタンスをsvnおよびgitリポジトリに正常にリンクしました。
ただし、受信後のgitリポジトリのセットアップ中にいくつかの大きな問題が発生しました。
ここでプラグインスクリプトを試しました:
http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts
しかし、git post receiveは、標準入力で$OLD_REVと$NEW_REVを提供していないように見えるため、これは機能しません。
ウィキはまた、次のように呼び出すだけでよいと述べています
だから私はgitの受信後のスクリプトに次のように入れました、
ほとんどの場合は機能します。ただし、ユーザーが一度に複数のコミットをプッシュしようとすると、git rev-parse HEAD
(最後のプッシュに属するコミットIDのリストではなく)最後のコミットIDのみが取得されるため、Tracから(node_change
tracのテーブルから)一部のコミットが失われます。 db)。
最新のgitpushのすべてのコミットIDを取得する方法があるのだろうか?または、私は実際にここで何かを見落としていましたが、それを行うためのもっと簡単な方法がいくつかありますか?
ありがとう。
git - サイド プロジェクトのブランチ git
私は git の初心者なので、知識不足を許してください。しかし、Google でどのような質問を検索すればよいかさえわかりません。
私は大規模なプロジェクトを持っていますが、ローカルで開発し、git を使用してリモート Web サーバーにプッシュすることに取り組んでいます。サーバーには、次のコマンドで提供するファイルをコピーする post-receive フックがあります。
これは何ヶ月もうまく機能しています。
今、私はスピンオフを構築し、私の webserver で新しいブランチを実行したいと考えています。また、スピンオフ ブランチとマスター ブランチを切り替えたり、サーバーのコードを上書きしたりして、1 つのサーバーだけで 2 つの別個の Web サイトを同時に開発できるようにしたいと考えています。まず、新しい git ブランチを作成します。
次の行を追加してコミットしました。
今、リモートブランチにプッシュしようとしています。これは動作しません
このコマンドは期待どおりにプッシュしますが、Web サーバー経由でファイルをコピーしません。
マスターにプッシュするように設定しても役に立たないようです:
[@Klas Mellbourn の指摘に従って編集] これは git 1.7 の構文です。. あなたがgit 1.8を持っている場合。、構文は次のとおりです。
ここでいくつかの重要な重要な概念が欠けていることはわかっています。私の推測では、予想どおり 2 つのリモート リポジトリがあると思われますが、スピンオフ リポジトリから Web サーバーにコピーするために別のものをセットアップする必要があります。
リモートリポジトリの HEAD ファイルを編集する必要があると思いますか? これには現在以下が含まれています。
git - Git 受信後のデプロイが遅い
ウェブサイトで git バージョン管理をテストしています。現在のセットアップでは、ネットワーク共有ドライブ /g/ に 2 つのベア リポジトリがあります (1 つはイントラネット用、もう 1 つはインターネット用)。このリポジトリにプッシュするときに、サイトを /x/ の Web サーバーに自動的にチェックアウトしたいと考えています。ここでのいくつかのブログと質問の提案に従って、次のように post-receive フックを設定しました。
これは、各リポジトリのマスター ブランチをデプロイするのにうまく機能しました。各展開にはおそらく 5 ~ 10 秒かかりました。ただし、/y/ の開発サーバーに自動的にチェックアウトされる開発ブランチも必要です。私の改訂されたフックは次のようになりました:
これは非常に問題がありました。現在プッシュすると約 15 分かかるからです。問題は、変更されたファイルを更新するだけでなく、各ブランチの作業ディレクトリ全体が書き直されたことにあるようです。どのブランチがプッシュされたかをチェックして、そのブランチだけをチェックアウトする条件を追加しても、以前にプッシュされたブランチ以外のブランチをプッシュすると、プッシュに 10 分ほどかかります。明らかにこれは受け入れられません。
私の現在の試みでは、各サーバーに 2 つのリポジトリ (1 つのイントラネットと 1 つのインターネット) があります。現在実行中のフックは次のようになります。
このフックは、実行する必要があると感じるよりもまだ時間がかかります (レポの 1 つで自分でプルを実行するのに約 4 秒かかるのに比べて、約 2 分かかります)。私の実装のいずれかに問題はありますか? または、問題を解決する別の方法はありますか?
編集:マウントされたドライブを git bash シェルで使用することが問題なのだろうかと思っていましたか?