問題タブ [git-daemon]

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.

0 投票する
1 に答える
817 参照

git - Git デーモンのログ、それを有効にしてログをファイルに保存する方法 (例: /var/log/git.log?)

これが、このような質問を投稿する SE の適切なセクションではないと思われる場合は、どこに投稿すればよいか教えてください。移動します。

ともかく。launchd で動作する OS X マシンをgit daemonセットアップしました。内部の .plist ファイルは次の/Library/LaunchDaemons/とおりです。

すべてが魔法のように機能しますが、デーモンはその情報を に記録します/var/log/system.log。その情報(stdout、stderr)を専用のファイルに記録するように指示する方法はあります/var/log/git.logか?

編集StandardOutPath:およびキーも .plistに追加しようとしましたStandardErrPathが、そうすると、launchd が何らかの理由で git デーモンを起動できなくなりますが、その理由はわかりません ( にService could not initialize:for git デーモンが表示されます/var/log/system.log):

編集: .plist ファイルを編集したところ、デーモンはこの構成で動作します (StandardOutPath、StandardErrorPath も問題を引き起こすようです)。これが機能するものです:

さて、どうすればデーモンのログを次のようなファイルにリダイレクトできます/var/log/git.logか?

0 投票する
2 に答える
3193 参照

git - コード スタイルの規則に違反するプッシュを確実に拒否する Git の「pre-receive」フックと「git-clang-format」スクリプト

pre-receive私がすでに書いたフックの断片からすぐに始めましょう:

注:
無関係なコードのある場所は、 でスタブ化されてい# ...ます。

注:
に慣れていない場合はgit-clang-formatこちらをご覧ください。

そのフックは期待どおりに機能し、これまでのところバグに気付きませんでしたが、問題を見つけたり、改善の提案があれば、報告をお待ちしています. おそらく、このフックの背後にある意図についてコメントする必要があります。プッシュされたすべてのリビジョンが を使用してコード スタイルの規則に準拠しているgit-clang-formatかどうかをチェックし、準拠していないものがあれば、それぞれに関連する diff (開発者に何を修正する必要があるかを伝えるもの) を出力します。基本的に、このフックに関して 2 つの詳細な質問があります。

まず、リモート (サーバー) のベア リポジトリを一時ディレクトリにコピーし、そこで分析用にコードをチェックアウトしていることに注意してください。その意図を説明しよう。プッシュされたすべてのリビジョンを個別git checkoutに. ここで回避しようとしているのは、リモートの (サーバー) ベア リポジトリへのプッシュ アクセスにおける (可能性のある) 同時実行の問題です。つまり、複数の開発者がこのフックがインストールされたリモートに同時にプッシュしようとすると、これらのプッシュ「セッション」のそれぞれがプライベートコピーでs とs を実行しない場合、問題が発生する可能性があるという印象を受けています。リポジトリの。つまり、簡単に言えば、git resetforgit-clang-formatpre-receivegit checkoutgit resetgit-daemon同時プッシュ「セッション」のロック管理が組み込まれていますか? 対応するpre-receiveフック インスタンスを厳密に順番に実行しますか、それともインターリーブの可能性がありますか (未定義の動作を引き起こす可能性があります)。この問題には、具体的な保証を備えた組み込みの解決策があるはずだと何かが教えてくれます。そうしないと、リモートは一般的に(複雑なフックがなくても)同時プッシュにさらされてどのように機能しますか?そのような組み込みソリューションがある場合、コピーは冗長であり、ベア リポジトリを再利用するだけで実際に処理が高速化されます。ところで、この質問に関する公式ドキュメントへの参照は大歓迎です。

次に、ステージングされた(コミットされていない) 変更と特定のコミット (デフォルト)git-clang-formatのみを処理します。したがって、コーナーケースがどこにあるかを簡単に確認できます。はい、ルートコミット (リビジョン) と一緒です。実際には、リセット先の親がないため、ルート コミットには適用できません。したがって、2番目の質問に対する次のチェックがあります。HEADgit reset --soft 'HEAD~1'

試してみましgit update-ref -d 'HEAD'たが、これによりリポジトリが壊れてしまい、git-clang-format処理できなくなります。これは、分析されているこれらのプッシュされたリビジョン (このルート リビジョンを含む) のすべてが実際にはまだどのブランチにも属していないという事実に関連していると思います。つまり、切り離され HEADた状態です。このコーナー ケースの解決策も見つけて、最初のコミットでもgit-clang-formatコード スタイルの規則に準拠しているかどうかを同じようにチェックできるようにすることができれば完璧です。

平和。

0 投票する
0 に答える
280 参照

windows - Windows から "git://" リポジトリにプッシュできますか?

私は (Linux マシン上に) レポを持っています。このレポはgit://プロトコルを使用して公開されています。
Linux マシンからそのレポに正常に複製、フェッチ、およびプッシュできます。
ただし、Windows マシンからは、そのレポからのみ複製およびフェッチできます。
プッシュしようとすると、操作がハングします。git デーモンからの最後のメッセージは
Request receive-pack for '<my_repo_name>'.

Windows から使用するためのプッシュ可能なgit://プロトコルはまだ実装されていませんか?