コードドロップダウンリストでのカスタムGitクライアント
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ版
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
プロジェクトページのコードドロップダウンリストのプログラムから開くセクションにカスタムクライアントを追加します。これにより、ユーザーはGitLabがデフォルトでリストしていないGitクライアントに直接リポジトリをクローンできます。
カスタムクライアントの設定
前提条件:
- 管理者である必要があります。
custom_code_dropdown_clients機能フラグを有効にする必要があります。
エントリを設定するには:
- 右上隅で、管理者を選択します。
- 設定 > リポジトリを選択します。
- 一般を展開します。
- クライアントの追加を選択します。
- フィールドに入力します。少なくとも1つのURLテンプレートを入力します。
- 表示名: ドロップダウンリストでユーザーに表示されるラベルです。翻訳されません。
- SSH URLテンプレート: ユーザーがSSHを選択したときに開かれるURLです。
- HTTPS URLテンプレート: ユーザーがHTTPSを選択したときに開かれるURLです。
- 追加を選択します。
エントリを編集するには、その横にあるクライアントの編集( )を選択し、フィールドを更新してから保存を選択します。
エントリを削除するには、その横にあるクライアントの削除( )を選択し、確認ダイアログでクライアントの削除を選択します。
最大20個のエントリを設定できます。
URLテンプレート
各URLテンプレートには、プレースホルダー{url}を必ず1回含める必要があります。コードドロップダウンリストがレンダリングされると、GitLabはサーバー側でプレースホルダーをプロジェクトのパーセントエンコードされたクローンURLに置き換えます。
許可されるURLスキーム
統合先のクライアントが想定しているスキームを入力してください。ブラウザがスクリプトの実行やローカルファイルの読み取りに使用できる次のスキームを除き、任意のURLスキームを使用できます:
javascriptdatavbscriptfileblobfilesystemabout
エントリを選択すると、そのスキームに対してユーザーのオペレーティングシステムが登録しているアプリケーションにURLが渡されます。
GitLabは、そのアプリケーションがURLに対して何を行うかを確認できません。信頼できるクライアントのみを追加してください。
ユーザーのオペレーティングシステムでそのスキームに対して登録されたアプリケーションがない場合、ブラウザはリンクを開くことができません。
例
以下のエントリは、ベンダーのドキュメントに照らして検証済みです。
エントリをユーザーに公開する前に、統合先のクライアントの公式ドキュメントで現在のURIスキームを必ず確認してください。
| 表示名 | SSH URLテンプレート | HTTPS URLテンプレート | ソース |
|---|---|---|---|
| VSCodium | vscodium://vscode.git/clone?url={url} | vscodium://vscode.git/clone?url={url} | VSCodium prepare_vscode.shは、urlProtocolをvscodiumとして登録し、アップストリームのVS Codeのvscode.git/cloneハンドラーを再利用します。 |
| Tower | gittower://openRepo/{url} | gittower://openRepo/{url} | Towerのドキュメント(macOS)、Towerのドキュメント(Windows) |
| Sourcetree、Fork | sourcetree://cloneRepo?cloneUrl={url} | sourcetree://cloneRepo?cloneUrl={url} | Forkは同じスキームをインターセプトします。 |
一部のクライアントは、単一の{url}プレースホルダーモデルと互換性がありません。たとえば、GitKrakenやGitHub Desktopにはリポジトリごとに追加のパラメータが必要です。ZedやWorking Copyなどの他のクライアントはサードパーティのドキュメントに記載されていますが、公式のベンダーURIスキームのリファレンスがありません。このようなエントリを追加する前に、ベンダーに確認してください。