英語 ▾ トピック ▾ 最新バージョン ▾ git-upload-pack は 2.45.1 で最終更新されました

名前

git-upload-pack - パックされたオブジェクトを git-fetch-pack に送り返します

概要

git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]
		  [--advertise-refs] <directory>

説明

git fetch-pack によって呼び出され、相手側が欠落しているオブジェクトを学習し、パックした後にそれらを送信します。

このコマンドは通常、エンドユーザーによって直接呼び出されることはありません。プロトコルのUIはgit fetch-pack側にあり、このプログラムのペアはリモートリポジトリから更新をプルするために使用されます。プッシュ操作については、git send-packを参照してください。

オプション

--[no-]strict

<directory>がGitディレクトリでない場合、<directory>/.git/ を試行しません。

--timeout=<n>

<n>秒間アクティビティがない場合、転送を中断します。

--stateless-rpc

標準入力と標準出力を使用して、単一の読み書きサイクルのみを実行します。これは、プログラムがリクエストを読み取り、レスポンスを書き込み、終了する必要があるHTTP POSTリクエスト処理モデルに適合します。

--http-backend-info-refs

git-http-backend[1] によって、$GIT_URL/info/refs?service=git-upload-pack リクエストを処理するために使用されます。gitprotocol-http[5] の「スマートクライアント」および gitprotocol-v2[5] ドキュメントの「HTTPトランスポート」を参照してください。git-receive-pack[1] でも理解されます。

<directory>

同期元のリポジトリ。

環境変数

GIT_PROTOCOL

ワイヤプロトコルのハンドシェイクに使用される内部変数です。サーバー管理者は、この変数が渡されることを許可するように、一部のトランスポートを設定する必要があるかもしれません。git[1] の議論を参照してください。

GIT_NO_LAZY_FETCH

部分的なリポジトリ(つまり、それ自体が--filterでクローンされたもの)からクローンまたはフェッチする場合、サーバー側のupload-packは、リクエストを完了するために、そのアップストリームから追加のオブジェクトをフェッチする必要がある場合があります。デフォルトでは、upload-packはこのような遅延フェッチを実行することを拒否します。これは、git fetchがソースリポジトリの設定やフックで指定された任意のコマンドを実行する可能性があり(upload-packは信頼できない.gitディレクトリでも安全に実行しようとします)、危険であるためです。

これは、upload-packが内部的にGIT_NO_LAZY_FETCH変数を1に設定することで実装されます。これをオーバーライドしたい場合(部分的なクローンからフェッチしており、それを信頼していることが確実であるため)、GIT_NO_LAZY_FETCHを明示的に0に設定できます。

セキュリティ

ほとんどのGitコマンドは、信頼できない.gitディレクトリ内で実行すべきではありません(git[1]SECURITYセクションを参照)。upload-packは、提供しているリポジトリからの危険な設定オプションやフックを回避しようとし、信頼できないディレクトリをクローンして、結果のクローン上でコマンドを実行することを安全にします。

さらなる安全レベルのために、upload-packを代替ユーザーとして実行できる場合があります。詳細はプラットフォームに依存しますが、多くのシステムでは次のように実行できます。

git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...

関連項目

GIT

git[1] スイートの一部

scroll-to-top