140

プロジェクトをチームと共有するための git サーバーのインストールを探しています。Git アクセスが必要な開発者ごとに、サーバー上に SSH アクセスできるユーザー アカウントを作成したくありません。この問題をカバーする2つの同時解決策があるようです: gitosis & gitolite.

両方のソリューションの比較は見つかりませんでした。それらの主な違いは何ですか?他の同様の解決策はありますか?

4

5 に答える 5

193

プロジェクトをチームと共有するための git サーバーのインストールを探しています。

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 ユーザーで何かをしたい場合は、git サーバーをセットアップするためのドキュメントが短いです。

要約すれば:

  • git をインストールする
  • git という名前のユーザーを作成します
  • あなたとあなたのチームの公開鍵を git ユーザーの.ssh/authorized_keysファイルに追加します
  • git ユーザーのシェルを次のように変更します。git-shell
  • サーバー上にリポジトリを作成する
  • git@yourserver.com への git pull/push を開始します

専用の git ユーザーを使用する場合と使用しない場合の唯一の違いは、使用するように git ユーザーを設定すると、git-shellそれ以外のことを実行できないことです。ただし、git サーバーとして機能するという点では、インストール不要のソリューションと同じです。

于 2012-06-04T21:19:43.547 に答える
143

主な違いは、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

  • 等々...

于 2012-06-04T21:06:07.850 に答える
15

ただの補足です。必要に応じてGerritを使用することもできます。

Gerrit コード レビュー

まず、Gerrit はコード レビューに使用されているように見えますが、実際にはユーザーの管理にも使用でき、適切に定義された権限を付与できます。コードレビュー (アクセス制御のトラフ)をバイパスして、プロジェクトと ssh キーを管理するためだけに使用できます。Gerrit には非常に強力なアクセス制御メカニズムがあります。

Gerrit アクセス制御

任意のブランチ、タグ、またはアクセス制御ドキュメントで定義されていると想像できるあらゆるものをプッシュするように制限できます。

于 2012-06-05T12:40:06.707 に答える
8

さらに迅速で汚れたソリューションを得るには、git デーモンを使用してピアツーピアに移行します。これはまさにそれを行うための記事です。

編集:これはOPの質問に厳密には答えていないことを認識しています。これは主に、私のように、エンタープライズ github アカウントが設定されるまでコードを共有するためのダウンした汚れた方法を探しているときに、これに遭遇する人のためにここに置きます。

于 2013-04-15T14:31:36.203 に答える