セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.18.1 → 2.50.1 変更なし
-
2.18.0
2018-06-21
- 2.11.4 → 2.17.6 変更なし
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.1.4 → 2.8.6 変更なし
-
2.0.5
2014-12-17
概要
chsh -s $(command -v git-shell) <user> git clone <user>@localhost:/path/to/repo.git
ssh <user>@localhost
説明
これは、SSH アカウントに制限付き Git アクセスを提供するログインシェルです。プル/プッシュ機能を実装するサーバー側の Git コマンドのみ、およびユーザーのホームディレクトリ内の git-shell-commands
という名前のサブディレクトリに存在するカスタムコマンドのみの実行を許可します。
コマンド
git shell は -c
オプションの後に以下のコマンドを受け入れます
- git receive-pack <引数>
- git upload-pack <引数>
- git upload-archive <引数>
-
クライアントの git push、git fetch、または git archive --remote リクエストをサポートするために、対応するサーバー側コマンドを呼び出します。
- cvs server
-
CVS サーバーを模倣します。git-cvsserver[1] を参照してください。
~/git-shell-commands
ディレクトリが存在する場合、git shell はユーザーのホームディレクトリから「git-shell-commands/
<コマンド> <引数>」を実行することで、他のカスタムコマンドも処理します。
対話的使用
デフォルトでは、上記のコマンドは -c
オプションでのみ実行でき、シェルは対話式ではありません。
~/git-shell-commands
ディレクトリが存在する場合、git shell は対話式に(引数なしで)実行することもできます。git-shell-commands
ディレクトリに help
コマンドが存在する場合、許可されているアクションの概要をユーザーに提供するために実行されます。その後、「git> 」プロンプトが表示され、git-shell-commands
ディレクトリからの任意のコマンド、または接続を閉じるための exit
を入力できます。
通常、このモードは、ユーザーがアクセス権を持つリポジトリを一覧表示したり、リポジトリを作成、削除、名前変更したり、リポジトリの説明や権限を変更したりできるようにする管理インターフェースとして使用されます。
no-interactive-login
コマンドが存在する場合、それが実行され、対話型シェルは中断されます。
例
インタラクティブログインを無効にして、代わりに挨拶を表示するには
$ chsh -s /usr/bin/git-shell $ mkdir $HOME/git-shell-commands $ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF #!/bin/sh printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not" printf '%s\n' "provide interactive shell access." exit 128 EOF $ chmod +x $HOME/git-shell-commands/no-interactive-login
git-cvsserver アクセスを有効にするには(git-shell-commands ディレクトリを作成するとインタラクティブログインが許可されるため、通常、上記の no-interactive-login
の例が前提条件となるはずです)
$ cat >$HOME/git-shell-commands/cvs <<\EOF if ! test $# = 1 && test "$1" = "server" then echo >&2 "git-cvsserver only handles \"server\"" exit 1 fi exec git cvsserver server EOF $ chmod +x $HOME/git-shell-commands/cvs
関連項目
ssh(1)、git-daemon[1]、contrib/git-shell-commands/README
GIT
git[1]スイートの一部