ジトシス対ジトリット?[閉まっている]


139

チームとプロジェクトを共有するためのgitサーバーのインストールを探しています。gitアクセスが必要な開発者ごとに、SSHアクセスが可能なサーバー上にユーザーアカウントを作成したくありません。この問題をカバーする2つの並行ソリューションがあるようです:gitosisとgitolite。

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

回答:


191

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

git だけを使用できます。

gitサーバーを持つためにリモートサーバーで必要なのはgitだけです。きめの細かい権限(チームとのみ共有することで可能であることが示唆されています)やその他の機能が必要ない場合は、ギトリライトなどは必要ありません。

インストール不要のソリューション

リモートサーバーで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 pull / pushingをgit@yourserver.comに開始します

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


13
GitLab + Gitoliteである獣をインストールした後、プロジェクトなどを細かく制御する必要がない場合は、これで完了です。
アンドリューTフィネル

この回答ありがとうございます!実際に、それぞれにユーザーアカウントを作成したくないと言ったとき、gitユーザーがsshを介してサーバーシェルにアクセスできないようにする必要があることも述べました。あなたのソリューションでは、「git」ユーザーを介してシェルにアクセスできると思いますよね?
greydet

2
@wsams:あとでgit push -u origin master使用できますgit push。私の意見では、リポジトリにアクセスする人はリモートシステム上での絶対パスを気にする必要がないので、私はgito *を好みます。
ThiefMaster

8
@ThiefMaster /home/git/は、プロジェクトにアクセスするためにURLにリポジトリを配置した場合、あなたが何を意味するのかを推測しますgit@server:project.git
AD7six 2012

1
@wsamsは、「gitユーザーのシェルをgit-shellに変更する」という回答のこの部分を読みました。
fabspro 2013年

142

主な違いは、gitosisが廃止され、積極的に維持されなくなったことです。

Gitoliteははるかに機能が充実しており、3番目のバージョンがリリースされました。

その最も興味深い機能は、仮想参照(略してVREF)です。これにより、必要なだけ更新フックを宣言でき、プッシュを次のように制限できます。

  • dir / file name
    ジュニア開発者がMakefileに変更をプッシュしたくない場合は、非常に複雑です。
    - VREF/NAME/Makefile = @junior-devs

  • 新しいファイルの数
    小さなコミット を作成するために、ジュニア開発者がコミットごとに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実装 については、を参照してください。

  • 等々...


3
私は3年間以上Gitoliteを使用しています。それに問題がなかった。私たちのプロダクションサーバーとステージングサーバーは、必要に応じてリポジトリへの読み取り専用アクセス権を持っています。そして、プロジェクトを他の開発チームと共有するのは簡単な仕事です。また、unixとgitを既に知っている場合は、簡単にセットアップできます:)
complistic

Gitoliteのドキュメントでは、選択肢との比較が含まれていますgitolite.com/gitolite/gitolite.html#alt
クインComendant

15

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

Gerritコードレビュー

最初に、Gerritはコードレビューに使用されているようですが、実際にはユーザーの管理にも使用でき、適切に定義されたアクセス許可を付与できます。次のことができバイパスのコード・レビュー(トラフアクセス制御)とちょうどプロジェクトとssh-鍵を管理するためにそれを使用。Gerritには、非常に強力なアクセス制御メカニズムがあります。

Gerritアクセス制御

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


8

さらに迅速で汚れたソリューションの場合は、gitデーモンを使用してピアツーピアにします。ここに記事があります行うことについては次のとおりです。

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


2

私はgitサーバーをLDAPアクセス、きめの細かいアクセス制御などで動作させるためにしばらくいじっています...発見を発見:Gitlabを使用:

  • gitリポジトリ
  • 細かいアクセス(afaik gitlabはフードの下でgitoliteを使用)

迅速かつ迅速なインストール方法が必要な場合:bitnamiインストーラーを使用


はい、しかしGitLab(gitlab-shellを使用)は、Gitoliteで簡単にセットアップできるすべてのVREFフックを失いました。そして、多くの人々はそれらを元に戻したいと思っています:github.com/gitlabhq/gitlab-shell/issues/14およびgithub.com/gitlabhq/gitlab-shell/pull/85
VonC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.