プロジェクトをチームと共有するための git サーバーのインストールを探しています。Git アクセスが必要な開発者ごとに、サーバー上に SSH アクセスできるユーザー アカウントを作成したくありません。この問題をカバーする2つの同時解決策があるようです: gitosis & gitolite.
両方のソリューションの比較は見つかりませんでした。それらの主な違いは何ですか?他の同様の解決策はありますか?
プロジェクトをチームと共有するための git サーバーのインストールを探しています。
git サーバーを用意するには、リモート サーバーで必要なのは git だけです。きめの細かいパーミッション (あなたのチームのみと共有することは可能性があることを示唆しています) やその他の機能を必要としない場合は、gitolite などは必要ありません。
リモートサーバーで git が利用できる場合は、何もせずに今求めていることを行うことができます
ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare
ローカル:
cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master
専用の git ユーザーで何かをしたい場合は、git サーバーをセットアップするためのドキュメントが短いです。
要約すれば:
.ssh/authorized_keys
ファイルに追加しますgit-shell
専用の git ユーザーを使用する場合と使用しない場合の唯一の違いは、使用するように git ユーザーを設定すると、git-shell
それ以外のことを実行できないことです。ただし、git サーバーとして機能するという点では、インストール不要のソリューションと同じです。
主な違いは、gitosis が廃止され、積極的にメンテナンスされなくなったことです。
Gitolite はさらに多くの機能を備えており、 3 番目のバージョンをリリースしました。
その最も興味深い機能は、仮想参照 (略して VREF)です。これにより、必要な数の更新フックを宣言できます。これにより、次の方法でプッシュを制限できます。
dir/file name :
非常に複雑なため、若い開発者が変更を Makefile にプッシュしたくないとします。
- VREF/NAME/Makefile = @junior-devs
number of new files :後輩の開発者に 1 回のコミットで 9 個以上のファイルをプッシュ
してほしくないとします。
- VREF/COUNT/9/NEWFILES = @junior-devs
高度なファイルタイプ検出:
ファイルに標準の拡張子 (「gitignore」できない) が付いている場合がありますが、実際には自動的に生成されます。これをキャッチする 1 つの方法を次に示します。検出メカニズムを確認するには、「参照」を参照してください
- VREF/FILETYPE/AUTOGENERATED = @all
。src/VREF/FILETETYPE
作者の電子メールを確認する:
「自分のコミットのみをプッシュできる」ことを確認したい人もいます。
- VREF/EMAIL-CHECK = @all
を参照してくださいsrc/VREF/EMAIL-CHECK
。
コミットの投票:コミット
の投票の基本的な実装は驚くほど簡単です:
- VREF/EMAIL-CHECK = @all
. 実装については、
# 2 votes required to push master, but trusted devs don't have this restriction
# RW+ VREF/VOTES/2/master = @trusted-devs
# - VREF/VOTES/2/master = @devs
を参照してください。src/VREF/VOTES
等々...
ただの補足です。必要に応じてGerritを使用することもできます。
まず、Gerrit はコード レビューに使用されているように見えますが、実際にはユーザーの管理にも使用でき、適切に定義された権限を付与できます。コードレビュー (アクセス制御のトラフ)をバイパスして、プロジェクトと ssh キーを管理するためだけに使用できます。Gerrit には非常に強力なアクセス制御メカニズムがあります。
任意のブランチ、タグ、またはアクセス制御ドキュメントで定義されていると想像できるあらゆるものをプッシュするように制限できます。