gitosis vs gitolit? [Tutup]

139

Saya mencari untuk menginstal server git untuk berbagi proyek dengan tim saya. Saya tidak ingin membuat akun pengguna di server dengan akses SSH untuk setiap pengembang yang membutuhkan akses git. Tampaknya ada dua solusi bersamaan yang mencakup masalah ini: gitosis & gitolite.

Saya tidak dapat menemukan perbandingan antara kedua solusi. Apa perbedaan utama di antara mereka? Apakah ada solusi serupa lainnya?

greydet
sumber

Jawaban:

191

Saya mencari untuk menginstal server git untuk berbagi proyek dengan tim saya.

Anda dapat hanya menggunakan git.

Untuk memiliki git server, satu-satunya hal yang Anda perlukan di server jauh adalah git. Jika Anda tidak memerlukan izin berbutir halus (berbagi hanya dengan tim Anda menunjukkan kemungkinan itu) atau fitur tambahan, Anda tidak perlu gitolite, atau serupa.

Solusi tanpa pemasangan

Jika git tersedia di server jarak jauh, Anda dapat melakukan apa yang Anda minta sekarang, tanpa melakukan apa pun

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare

Secara lokal:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master

Menyiapkan git server itu mudah.

Jika Anda ingin melakukan hal-hal dengan pengguna git khusus, dokumen untuk menyiapkan server git pendek - karena itu sangat mudah dilakukan.

Singkatnya:

  • Instal git
  • Buat pengguna bernama git
  • Tambahkan kunci publik Anda dan tim Anda ke .ssh/authorized_keysfile pengguna git
  • Ubah shell pengguna git menjadi git-shell
  • Buat repo di server
  • mulai git pull / mendorong ke [email protected]

Satu- satunya perbedaan antara menggunakan pengguna git khusus dan tidak, adalah bahwa jika Anda mengatur pengguna git untuk menggunakannya git-shelltidak akan membiarkan dirinya melakukan hal lain. Dalam hal bertindak sebagai server git, itu identik dengan solusi tanpa pemasangan

AD7six
sumber
13
Setelah memasang beast yang merupakan GitLab + Gitolite, jika Anda tidak memerlukan kontrol yang baik atas proyek dll, ini adalah cara yang harus dilakukan.
Andrew T Finnell
Terima kasih atas jawaban ini! Sebenarnya ketika saya mengatakan bahwa saya tidak ingin membuat akun pengguna untuk masing-masing, saya seharusnya juga menyebutkan bahwa saya tidak ingin pengguna git saya memiliki akses ke server shell melalui ssh. Dengan solusi Anda, saya pikir mereka akan memiliki akses ke shell melalui pengguna "git", kan?
greydet
2
@wsams: git push -u origin masterdan Anda dapat menggunakannya git pushsetelahnya. Saya lebih suka gito * karena menurut saya tidak ada yang mengakses repo harus peduli tentang jalur absolut yang ada di sistem remote.
ThiefMaster
8
@ThiefMaster mengambil tebakan liar pada apa yang Anda maksud, jika Anda meletakkan repo di /home/git/url untuk mengakses proyek git@server:project.git.
AD7six
1
@ wsams membaca bagian dari jawaban ini "Ubah shell pengguna git menjadi git-shell".
fabspro
142

Perbedaan utama adalah bahwa gitosis sekarang sudah usang, dan tidak dipelihara secara aktif lagi.

Gitolite adalah fitur yang jauh lebih lengkap , dan baru saja merilis versi ketiganya .

Fitur yang paling menarik adalah Referensi Virtual (singkatnya VREF) yang memungkinkan Anda mendeklarasikan sebanyak mungkin kait pembaruan , yang memungkinkan Anda membatasi dorongan dengan:

  • dir / nama file :
    Katakan Anda tidak ingin pengembang junior mendorong perubahan ke Makefile, karena itu cukup rumit:
    - VREF/NAME/Makefile = @junior-devs

  • jumlah file baru :
    Katakan Anda tidak ingin pengembang junior mendorong lebih dari 9 file per komit, karena Anda ingin mereka membuat komitmen kecil :
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • deteksi tipe file lanjutan :
    Kadang-kadang file memiliki ekstensi standar (yang tidak bisa 'gitignore'd), tetapi sebenarnya dihasilkan secara otomatis. Inilah satu cara untuk menangkapnya:
    - VREF/FILETYPE/AUTOGENERATED = @all
    Lihat src/VREF/FILETETYPEuntuk melihat mekanisme pendeteksian.

  • memeriksa email penulis :
    Beberapa orang ingin memastikan bahwa "Anda hanya bisa mendorong komitmen Anda sendiri".
    - VREF/EMAIL-CHECK = @all
    Lihat src/VREF/EMAIL-CHECK.

  • voting pada komit :
    Implementasi dasar pemungutan suara pada komit mengherankan mudah:
    - 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
    Lihat src/VREF/VOTESimplementasinya.

  • dan seterusnya...

VONC
sumber
3
Saya telah menggunakan Gitolite selama lebih dari 3 tahun sekarang. Tak pernah bermasalah dengan itu. Saya server produksi dan pementasan kami memiliki akses hanya baca ke repo yang dibutuhkan. Dan itu pekerjaan mudah untuk kemudian membagikan proyek dengan tim Pengembangan lainnya. Juga mudah untuk melakukan setup jika Anda sudah tahu unix dan git :)
complistic
Dokumentasi Gitolite termasuk perbandingan dengan alternatif: gitolite.com/gitolite/gitolite.html#alt
Quinn Comendant
15

Hanya sidenote. Anda juga dapat menggunakan Gerrit untuk kebutuhan Anda:

Ulasan Kode Gerrit

Pertama, tampaknya Gerrit digunakan untuk tinjauan Kode, tetapi Anda benar-benar dapat menggunakannya juga untuk mengelola pengguna dan memberi mereka izin yang jelas. Anda dapat mem - bypass review kode (melalui kontrol akses ) dan menggunakannya hanya untuk mengelola proyek dan ssh-key. Gerrit memiliki mekanisme kontrol akses yang sangat kuat:

Kontrol Akses Gerrit

Anda dapat membatasi untuk mendorong cabang, tag, atau apa pun yang dapat Anda bayangkan yang ditentukan dalam dokumen kontrol akses.

Fatih Arslan
sumber
8

Untuk solusi yang lebih cepat dan kotor, gunakan saja daemon git dan lakukan peer-to-peer. Inilah artikel tentang melakukan hal itu.

Sunting: Saya tahu ini tidak sepenuhnya menjawab pertanyaan OP. Saya menempatkan ini di sini terutama untuk mereka, seperti saya, yang menemukan ini sambil mencari cara turun dan kotor untuk berbagi kode sampai akun github perusahaan diatur.

Tim Keating
sumber
2

Saya telah bermain-main untuk sementara waktu untuk mendapatkan server git bekerja dengan akses LDAP, kontrol akses berbutir halus dll ... Menemukan wahyu: Gunakan Gitlab :

  • git repositori
  • akses berbutir halus (afaik gitlab menggunakan gitolite di bawah tenda)

jika Anda menginginkan metode pemasangan cepat dan cepat: gunakan penginstal bitnami

Chris Maes
sumber
Ya, tetapi GitLab (dengan gitlab-shell) kehilangan semua kait VREF yang dapat Anda atur dengan Gitolite dengan mudah. Dan banyak orang ingin mereka kembali: github.com/gitlabhq/gitlab-shell/issues/14 dan github.com/gitlabhq/gitlab-shell/pull/85
VonC