日本語 ▾ トピック ▾ 最新バージョン ▾ 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] の「Smart Clients」と gitprotocol-v2[5] ドキュメントの「HTTP Transport」を参照してください。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_FETCH0 に設定できます。

セキュリティ

ほとんどの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