セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの規則
- 日々のGit
- よくある質問(FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
低レベルコマンド
- 2.43.1 → 2.47.0 変更なし
-
2.43.0
11/20/23
- 2.38.1 → 2.42.3 変更なし
-
2.38.0
10/02/22
- 2.32.1 → 2.37.7 変更なし
-
2.32.0
06/06/21
Simple-IPC API は、`ipc_` 接頭辞が付いたライブラリルーチンと、IPC クライアントプロセスがアプリケーション固有の IPC 要求メッセージを IPC サーバープロセスに送信し、アプリケーション固有の IPC 応答メッセージを受信できるようにする基本的な通信プロトコルです。
通信は、Windows では名前付きパイプ、他のプラットフォームでは Unix ドメインソケットを介して行われます。 IPC クライアントと IPC サーバーは、事前に合意されたアプリケーション固有のパス名(この設計の範囲外です)でランデブーします。これはコンピューターシステムに対してローカルです。
サーバーアプリケーションプロセス内の IPC サーバールーチンは、接続をリッスンし、複数の同時 IPC クライアントから要求メッセージを受信するためのスレッドプールを作成します。受信されると、これらのメッセージは処理のためにサーバーアプリケーションコールバックにディスパッチされます。 IPC サーバールーチンは、応答を IPC クライアントに増分的にリレーします。
クライアントアプリケーションプロセス内の IPC クライアントルーチンは、IPC サーバーに接続して要求メッセージを送信し、応答を待ちます。受信されると、応答は呼び出し元に返されます。
たとえば、`fsmonitor--daemon` 機能は、IPC サーバーライブラリルーチンの上にサーバーアプリケーションとして構築されます。ファイルシステムイベントを監視するスレッドと、クライアント接続を待機するスレッドプールがあります。 `git status` などのクライアントは、ある時点からのファイルシステムイベントのリストを要求し、サーバーは変更されたファイルとディレクトリのリストで応答します。要求と応答の形式はアプリケーション固有です。 IPC クライアントおよび IPC サーバールーチンは、それらを不透明なバイトストリームとして扱います。
サブプロセスモデルとの比較
Simple-IPC メカニズムは、既存の `sub-process.c` モデル(Documentation/technical/long-running-process-protocol.txt)とは異なり、Git-LFS などのアプリケーションで使用されています。 LFS スタイルのサブプロセスモデルでは、ヘルパーはフォアグラウンドプロセスによって開始され、通信はサブプロセスの stdin/stdout にバインドされたファイル記述子のペアを介して行われ、サブプロセスは現在のフォアグラウンドプロセスのみを提供し、フォアグラウンドプロセスが終了するとサブプロセスは終了します。
Simple-IPC モデルでは、サーバーは非常に長時間実行されるサービスです。同時に多くのクライアントにサービスを提供でき、アクティブな各クライアントへのプライベートソケットまたは名前付きパイプ接続があります。現在のクライアントプロセスによって(オンデマンドで)開始されるか、以前のクライアントまたは起動時に OS によって開始されている可能性があります。サーバープロセスは端末に関連付けられておらず、クライアントが終了した後も存続します。クライアントはサーバープロセスの stdin/stdout にアクセスできないため、ソケットまたは名前付きパイプを介して通信する必要があります。
サーバーの起動とシャットダウン
IPC サーバーに基づくアプリケーションサーバーの起動方法は、Simple-IPC 設計の範囲外でもあり、それを使用するアプリケーションのプロパティです。たとえば、サーバーはルーチンのメンテナンス操作中に開始または再起動されるか、システムの起動シーケンス中にシステムサービスとして開始されるか、必要に応じてフォアグラウンド Git コマンドによってオンデマンドで開始される場合があります。
同様に、サーバーのシャットダウンは、simple-ipc ルーチンを使用するアプリケーションのプロパティです。たとえば、サーバーはアイドル時または明示的な要求があった場合にのみシャットダウンすることを決定する場合があります。
Simple-IPC プロトコル
Simple-IPC プロトコルは、クライアントからの単一の要求メッセージと、サーバーからのオプションの応答メッセージで構成されています。クライアントメッセージとサーバーメッセージはどちらも長さが無制限で、フラッシュパケットで終了します。
pkt-line ルーチン(gitprotocol-common[5])は、メッセージの生成、送信、および受信中のバッファ管理を簡素化するために使用されます。フラッシュパケットは、メッセージの終わりをマークするために使用されます。これにより、送信者はメッセージを増分的に生成および送信できます。受信者は、メッセージをチャンクで増分的に受信し、メッセージ全体を受信した Zeitpunkt を知ることができます。
クライアント要求およびサーバー応答メッセージの実際のバイト形式は、アプリケーション固有です。 IPC レイヤーは、内部のコンテンツを気にせずに、それらを不透明なバイトバッファとして送受信します。要求と応答メッセージの内容を理解するのは、呼び出し元のアプリケーションレイヤーの仕事です。