問題タブ [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 post-receiveフックを使用して、タグがプッシュされないようにします
私のGITの受信後フックでは、タグがプッシュされた場合にコードの実行を回避する必要があります。
環境変数$refnameを使用してみましたが、空に見えます。
何か案が?
ありがとう
ランダム化
git - ポストレシーブフックを使用してDEVサーバーにプッシュすることはうまく機能しますが、リモートの変更をコミットすることはできません
gitは非常に新しく、少し読んだ後、次のワークフローを設定しました。
Githubリポジトリ
ローカルリポジトリ(ワークステーションとラップトップ)
DevServer-裸のリポジトリからファイルが提供されるディレクトリへの受信後のフックプッシュ
これはうまく機能していますが、今日は開発サーバーで行われた変更をコミットしてから、ローカルにプルバックしたいと思いました。
しかし、変更をステージングしてコミットしようとすると、「致命的:gitリポジトリではありません...」というエラーが表示されました。
理由は理解できたと思いますが(すべてのファイルを含むディレクトリがgitリポジトリではないため)、DEVサーバーで変更をコミットしてローカルにプルバックするにはどうすればよいですか?
どんな助けでも大歓迎です-私はデザイナーなので、これを単に申し訳ありませんが説明しなければならないかもしれません。
乾杯
ベン
macos - OS X での HTTP 経由の Git post-receive
私のセットアップは次のとおり
です。 1. Git ストレージ用の Apache サーバーを実行する OS X。
2. Git プロジェクトのディレクトリは次のとおりです: /Library/WebServer/Documents/CI
3. このチュートリアルに従いました: http://www.pkgbox.org/wordpress/2011/08/setting-up-a-git -server-on-macos-x-lion/および HTTP 4 経由の Git アクセスをセットアップしました
。私の gitrepo.conf は次のようになります。
5. HTTP 経由の認証は機能しています。さまざまなユーザーとさまざまなグループがあり、すべて正常に機能しています。
私の問題は 、git で post-receive フックを使用できるようにしたいということです。私はこの質問を読みました: Git post-receive hook not working そして、そこから得られるのは、SMART HTTP をセットアップする必要があるということです。残念ながら、このリンク: http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html get's me 404.
私はここで読んだ:http://progit.org/2010/03/04/smart-http.htmlしかし、私はサーバーをセットアップするのが本当に初心者で、何をすべきか理解していません... GIT フックを有効にするための有効な構成を教えてください。
提案するソリューション SMART HTTP への変更。
これが私の現在のgitrepo.confです
/etc/hosts を変更して、127.0.0.1 を指すように ciserver.smt を追加しましたが、次の要求を行うことができません。
私は得ています:
私はまだ何を間違えましたか?
git - 2番目のプッシュに最初のプッシュからの早送りしかない場合、同時gitプッシュは常に安全ですか?
受信後のフックでコミットをLAN上の中央リポジトリからクラウド内の別の中央リポジトリに自動的にプッシュしたいと思います。LANリポジトリは、git clone --mirror git@cloud:/path/to/repo
または同等のコマンドを使用して作成されます。
コミットされるファイルはアップストリーム帯域幅に比べて大きくなるため、次のようなことが起こる可能性があります。
- アリスはLANリポジトリへのプッシュを開始します。
- ポストレシーブフックが実行されている間、ビルはLANリポジトリからプルします。
- LANリポジトリは、クラウドリポジトリにプッシュしている最中です。
- これは、ビルのローカルリポジトリにアリスがプッシュしたコミットが含まれていることも意味します。テストにより確認済み。
- ビルはLANリポジトリへのプッシュを開始します。
- ビルのプッシュはアリスのプッシュの早送りであるため、LANリポジトリはそれを受け入れます。
LANリポジトリの受信後フックが実行されると、LANリポジトリからクラウドリポジトリへの2回目のプッシュが開始され、2つが同時に実行されます。
gitオブジェクトについては心配していません。最悪のシナリオは、両方のプッシュがアリスのプッシュからすべてのオブジェクトをアップロードすることですが、gitの内部を理解している限り、それは問題ではありません。
私はrefsについて心配しています。アリスがはるかに遅い接続を使用してプッシュし、ビルのプッシュが最初に終了するとします。パケット損失などにより、LANリポジトリからビルのプッシュのクラウドへのフックのプッシュが終了してから、LANリポジトリからアリスのプッシュのクラウドへのフックのプッシュが終了するとします。アリスとビルの両方がマスターブランチをプッシュしていて、ビルのプッシュが最初に終了した場合、マスター参照はクラウドリポジトリに何になりますか?後のプッシュなのでビルのHEADにしたいのですが、アリスのHEADになるのではないかと心配です。
さらなる解明:
ビルのマシンからLANリポジトリへのプッシュが最初に終了した場合、アリスのマシンからLANリポジトリへのプッシュは失敗することに気付きました。その場合、LANリポジトリの受信後フックは実行されません。さらに、誰も強制プッシュを実行しないと想定してください。したがって、受信後フックがLANリポジトリで実行されている場合、すべての参照変更は早送りされます。
git - Git:致命的:execフック/post-receiveが失敗しました
で作成したリモコンがありgit --bare init
ます。
押すと次のようになります。
フック/受信後は次のようになります。
作業ツリーはリモート構成で設定されます(リモートにcdしてワークツリーgit checkout -f
にチェックアウトする場合、パスは問題ありません)。
フックのpermsは次のようになります。
フックが失敗する理由についての手がかりはありますか?
php - 受信後、phpスクリプトをリクエストし、gitリポジトリをプルします
Webサーバーに数行しかないPHPスクリプトgit.phpがあり、そのうちの1行はshell_exec()を使用して
(Webサーバーにプッシュすることはできません。これは無効であり、有効にすることはできません。) example.com/git.phpにアクセスすると、これはすべて正常に機能します。スクリプトが実行され、リポジトリが更新されます。(リポジトリは別の無関係なサーバー上にあります)
私がやろうとしているのは、受信後のフックを使用して、Webサーバー上のgitリポジトリをgitサーバーから更新することです。私はsshを使用して接続しているので、フックは機能するはずです(そして機能します、私はそれをテストしました)、そしてパーミッションの問題がないことをかなり確信しています。
私の質問は、「受信後」スクリプトをどのように作成するかです。
私は運が悪かったいくつかのことを試しました、私のスクリプトは現在1行の長さで、次のようになります
しかし、これは何もしません。:(
私を助けてくれる人はいますか?または、私がもっとうまくできることを提案しますか?前もって感謝します。
git - git post-receive が実行されない
次の受信後をセットアップしました。
これは実行可能です:
したがって、ローカル マシンからプッシュすると、チェックアウトされ、ローカルで行った変更が反映されます。しかし、そうではありません。
ローカル:
その後、リモートマシンで:
そのため、作業ツリーにテストファイルがありません
何が間違っている可能性がありますか?
git - curl (git) を介して post-receive フックでコミット データを送信する際の問題
私のプロジェクトの目的は、開発者が行ったすべてのコミットを mongodb に記録することです。
mongo への投稿で受信したデータを保持する nodejs リスナーをセットアップしました。
私は gitolite サーバーを実行しており、開発者がプッシュするたびに post-receive フックを使用して、curl 経由でノード リスナーにコミットを投稿しています。
0000000000000000000000000000000000000000
古いリビジョンがgit log を実行しようとすると無効な引数を取得する最初のコミットを除いて、私はこれをうまくやっています。
あいまいな引数 '8a2db961045bd4825624b16ad62e75be49dd70b6~1..8a2db961045bd4825624b16ad62e75be49dd70b6': 不明なリビジョンまたはパスが作業ツリーにありません。「--」を使用してパスをリビジョンから分離します
私の bash/post-receive スクリプトからの抜粋を以下に示します。
bashスクリプト/使用しているgitコマンドでこれを処理する方法が正確にはわかりません。
1 つの (怠惰な) オプションは、リビジョン情報なしで git log を使用し、プロジェクト名/git コミット ID を使用してコレクションに重複したコミットを追加しないようにすることです。しかし、それは大規模なリポジトリでは遅くなります。
github - プライベートサーバーのGithubpost-receiveを再作成するにはどうすればよいですか?
私はプロジェクトを管理するために優れたSprint.lyを使用しています。私はソース管理にgitを使用していますが、Sprint.lyは、受信後のメッセージを受け取り、変更をスキャンすることでgithubとの優れた統合を実現しています(ドキュメントを参照)。
このリポジトリをホストするためにgithubを使用していません。代わりに、独自のプライベートサーバーを使用しています。githubの受信後メッセージを再作成してsprint.lyに投稿するにはどうすればよいですか?私はこのようなスクリプトを書くのが苦手なので、助けていただければ幸いです。
git - git post-receive が正しく機能しない
次の問題があります。「post-receive」を特定のディレクトリに cd するように更新し、レポをプルして次のようにデプロイしました。
ただし、ローカルマシンで「git push origin master」を実行すると、次のようになります。
それでも、手動で cd し/var/www/site
て実行すると、git pull origin master
見事に機能します。