Saya sudah lama menjadi pengguna Subversi yang akan mencoba Git. Saya telah membaca beberapa tentangnya dan memahami sifat yang didistribusikan - saya dapat melihat banyak manfaatnya.
Namun, saya suka ide server pusat yang dapat mengambil peran cadangan, sistem catatan, dll, sementara masih menggunakan Git untuk percabangan dan berbagi lokal saya. Saya tidak melakukan proyek open source, jadi saya tidak bisa menggunakan Github (tanpa membayar), jadi pertanyaan saya sebenarnya adalah: apa cara praktik terbaik untuk menjalankan server git lokal?
Saya menyadari ini mungkin bertentangan dengan pola penggunaan standar Git, tetapi ini akan berguna untuk proyek saya. Namun, segala kekhawatiran yang mungkin saya abaikan selalu diterima.
Terima kasih!
Jawaban:
Anda bisa mengatur server ssh dan menjalankan repositori pusat di sana. Semua pengembang kemudian hanya setuju (sebagai kebijakan) untuk mendorong ke server ketika mereka selesai membuat komitmen. Ini adalah pola penggunaan di tempat kerja saya. Sangat mirip CVS dan SVN.
/var/gitroot
misalnya).mkdir project.git && cd project.git && git init --bare --shared=group
).git clone ssh://yourserver.com/var/gitroot/project.git && cd project
)git add README
)git commit -m "Initial import"
),git push origin master
)Ini harus mengatur segalanya untuk Anda.
sumber
git init --bare project.git
?Gitorious adalah antarmuka web open source untuk git yang dapat Anda jalankan di server Anda sendiri, seperti github:
http://getgitorious.com/
Memperbarui:
http://gitlab.org/ adalah alternatif lain sekarang juga.
Pembaruan 2:
Gitorious sekarang telah bergabung dengan GitLab
sumber
Coba GitLab
Alat GUI Git terbaik yang pernah saya gunakan. Ini sangat mirip dengan GitHub.
Ini adalah open source (Lisensi MIT) dan merupakan perangkat lunak manajemen git paling banyak diinstal dengan lebih dari 25.000 instalasi. Ini memiliki rilis bulanan dan komunitas aktif dengan lebih dari 375 kontributor. Anda dapat memiliki repositori pribadi, internal dan publik tanpa batas di server Anda sendiri. Ini adalah aplikasi Ruby on Rails yang berjalan di sebagian besar platform Unix.
sumber
Jika Anda tidak keberatan turun dan kotor dengan baris perintah, gitolite adalah hadiah mutlak ketika bekerja di lingkungan perusahaan di mana Anda perlu menetapkan hak akses yang berbeda pada repositori yang berbeda. Ini semacam versi gitosis yang lebih baru yang disebutkan oleh @Chris.
Berikut ini ringkasan dari situs web penulis:
Ini memiliki set fitur yang cukup komprehensif, tetapi satu hal yang sangat saya sukai, adalah bahwa pengeditan konfigurasi sehari-hari dilakukan melalui repositori git khusus. Artinya, menambahkan pengguna itu adil
Dan ketika perlu melihat kode melalui browser, gitolite memiliki dukungan untuk konfigurasi "sinkronisasi" dengan gitweb. Atau jika Anda suka cgit , yang merupakan antarmuka web yang sangat bagus untuk git yang ditulis dalam C, lebih baik, maka Anda harus melihat caranya .
sumber
Anda mungkin mempertimbangkan Gitblit , server Java View, sumber, dan pengelola repositori open-source, terintegrasi, murni untuk workgroup kecil.
sumber
Browser Bare Bones
dari buku git scm
menggabungkannya dengan sesuatu seperti pendekatan yang dijelaskan di sini untuk pengembangan terdistribusi (kredit untuk datagrok untuk konsep yang dijelaskan dengan baik)
Luncurkan server git satu kali dari repositori lokal mana pun.
Saya sudah tweet ini tapi saya pikir itu bisa menggunakan beberapa ekspansi:
Katakanlah Anda menggunakan alur kerja git yang melibatkan bekerja dengan repositori inti "resmi" yang Anda tarik dan dorong perubahan Anda dari dan ke. Saya yakin banyak perusahaan melakukan ini, seperti halnya banyak pengguna layanan hosting git seperti Github.
Katakanlah server itu, atau Github, turun sebentar.
Bagaimanapun juga, jangan khawatir, salah satu alasan Anda menggunakan git adalah agar Anda memiliki salinan seluruh riwayat proyek di klon lokal Anda.
Anda dapat terus melakukan pengkodean dan melakukan, sementara Anda menunggu tim operasi menghidupkan kembali server. Catatan untuk diri sendiri: beli donat untuk tim operasi.
Tetapi bagaimana jika, selama waktu tidak aktif ini, Anda ingin berkolaborasi dengan orang lain, yang mungkin bukan ahli git, pada repositori yang sama?
Atau, daripada downtime, bagaimana jika Anda dan kolaborator Anda ada di lapangan, dan untuk beberapa alasan Anda tidak bisa mendapatkan VPN untuk membiarkan Anda terhubung ke repo resmi Anda?
Atau, bagaimana jika Anda dan kolaborator Anda mengeluarkan banyak perubahan eksperimental, dan meskipun Anda memiliki akses, Anda tidak ingin mendorong kekacauan yang belum selesai ke dalam repositori pusat resmi? (Bahkan tidak sebagai cabang fitur.) Mungkin Anda berada di tengah-tengah membersihkan rebase atau penggabungan bencana dan cabang-cabang ada di semua tempat.
Yah, git, seperti yang mungkin Anda sadari, adalah sistem kontrol versi "terdistribusi" .
Meskipun Anda mungkin menggunakan repositori git "resmi" pusat dalam alur kerja Anda, Anda masih memiliki kemampuan untuk menggunakan git secara peer-to-peer, di mana Anda dan kolaborator Anda hanya membangun dan berbagi komitmen satu sama lain, dan pusat Server bahkan tidak pernah tahu.
Jadi, bagaimana Anda mendapatkan cabang Anda dan berkomitmen untuk mereka, atau sebaliknya?
Anda mungkin bisa memikirkan metode lain juga. Tetapi ada cara yang sangat mudah: jika Anda dapat melihat satu sama lain di jaringan, Anda dapat meluncurkan server git satu kali yang dapat mereka gunakan sebagai remote untuk mengkloning, mengambil, dan menarik perubahan Anda, dan membunuhnya ketika Anda selesai dengan itu.
Alat yang memungkinkan ini adalah
git daemon
, yang memiliki banyak opsi dan fungsionalitas, tetapi untuk tujuan mengaktifkan yang mudah ini "hanya melayani repo yang saya masuki," cara untuk menggunakannya adalah dengan membuat alias. Saya suka menyebutnyagit serve
. Lari:Menggunakan alias sebenarnya penting, karena alias git dieksekusi di direktori dasar pohon kerja Anda. Jadi path '.git' akan selalu mengarah ke tempat yang tepat, di mana pun Anda berada dalam pohon direktori repositori Anda.
Gunakan
git serve
seperti baru Anda :git serve
. "Siap bergemuruh," itu akan melaporkan. Git buruk.git fetch git://192.168.1.123/
"Anda juga bisa memberi tahu Jane
git clone git://192.168.1.123/ local-repo-name
jika dia belum memiliki tiruan dari repositori. Atau, gunakangit pull git://192.168.1.123/ branchname
untuk melakukan pengambilan dan penggabungan sekaligus, berguna jika Anda bekerja bersama pada cabang fitur.Namun perhatikan bahwa Anda tidak boleh melakukan ini di jaringan yang bermusuhan jika Anda menyimpan rahasia di repositori Anda, karena tidak ada otentikasi. Itu tidak mengiklankan keberadaannya, tetapi siapa pun dengan pemindai port dapat menemukannya, terhubung, dan mengkloning repo Anda.
Tapi itu tidak super berbahaya karena hanya-baca secara default. Baca
git daemon
halaman manual dengan hati-hati jika Anda berpikir ingin mengaktifkan akses tulis. Dalam kasus di mana Anda ingin mendapatkan komitmen kolaborator Anda, jauh lebih aman untuk membiarkannya hanya baca, dan minta kolaborator Anda untuk juga menjalankan perintah ini, sehingga Anda dapat menarik darinya.Terkait secara tangensial: pada masalah server satu kali, jika Anda ingin berbagi sementara file statis melalui HTTP:
python -m SimpleHTTPServer
sumber
Jika Anda membutuhkan server GIT yang bagus dan mudah daripada Anda harus mencoba GitBlit. Saya juga menggunakan gitolite tetapi hanya server, dengan GitBlit Anda mendapatkan semuanya dalam satu, server, admin, repos. pengelola ... URL: http://gitblit.com/
sumber
https://rhodecode.com adalah aplikasi web sumber terbuka untuk Git & Mercurial yang dapat dengan mudah dipasang di bawah sistem operasi apa pun (termasuk pemasang).
RhodeCode (versi baru disebut RhodeCode Enterprise) menambahkan fitur Git yang hilang seperti review kode dan secara umum sangat cepat dan dapat diandalkan.
sumber
Anda juga dapat menginstal Indefero , ini adalah klon GPL dari GoogleCode, karena mendukung Subversion dan Git, Anda dapat memiliki transisi yang mulus. Saya penulis Indefero.
sumber
Anda bahkan dapat menginstal GitHub di server lokal Anda (tetapi tidak gratis):
https://enterprise.github.com/
sumber
Ini mungkin bukan pengaturan git server yang paling umum , tetapi setelah bermain dengan berbagai tata letak, alat, mirroring dan skema izin, saya akan mengatakan salah satu alternatif yang cukup solid untuk repositori perusahaan adalah Gerrit , yang mungkin tampak mengejutkan karena lebih dikenal sebagai alat ulasan kode. Kami mulai menggunakannya sebagai ulasan kode dan perlahan-lahan menjadi repositori utama kami, mencabut g3 / gitolite
Selain itu, ini digunakan oleh proyek-proyek besar (misalnya android, chrome) sehingga skala dan sekarang cukup solid. Berikan saja izin PUSH kepada pengguna Anda jika Anda ingin mengizinkan melewati bagian tinjauan kode.
sumber
Untuk hosting jarak jauh Seperti yang orang lain katakan, bitbucket.org menawarkan repositori pribadi gratis, saya telah menggunakannya tanpa masalah.
Untuk jaringan lokal atau LAN, saya akan menambahkan yang ini scm-manager.org (Satu file yang dapat dieksekusi, sangat mudah dipasang, dibuat di Jawa sehingga dapat berjalan di Linux atau Windows). Jika Anda menginstalnya, ini adalah kata sandi standar.
sumber
Sementara itu, situs hosting Mercurial Bitbucket telah mulai menawarkan repositori Git juga.
Jadi jika Anda tidak memerlukan server lokal , hanya beberapa tempat sentral di mana Anda dapat meng-host repositori pribadi Git secara gratis, IMO Bitbucket adalah pilihan terbaik.
Gratis, Anda mendapatkan repositori Git dan Mercurial pribadi dan publik tanpa batas.
Satu-satunya batasan adalah bahwa dalam paket gratis, tidak lebih dari lima pengguna dapat mengakses repositori pribadi Anda (lebih dari itu, Anda harus membayar).
Lihat https://bitbucket.org/plans untuk info lebih lanjut!
sumber
Jika Anda ingin menarik permintaan, ada proyek sumber terbuka RhodeCode dan GitLab dan Stash berbayar
sumber
Jika Anda hanya ingin repositori Anda di tempat sentral, ini cukup mudah dengan kontrol versi terdistribusi seperti Git:
Anda bisa meletakkan repositori pusat Anda di beberapa folder bersama pada mesin pusat dan semua orang dapat mengkloningnya dari sana.
Jika Anda ingin situs web "nyata" di server lokal Anda, saya tahu situs web Git hosting http://repo.or.cz .
Tampaknya memiliki lebih sedikit fitur daripada GitHub, tetapi tidak seperti GitHub, Anda bisa mendapatkan kode sumber dan menyimpannya di server lokal Anda sendiri.
Penafian: Saya hanya membaca tentang repo.or.cz, saya tidak pernah mencobanya sendiri!
sumber
untuk pengaturan sederhana, Anda dapat memberikan akses ssh ke server pusat, dan mengatur direktori kerja setiap pengguna untuk mendorong / menarik dari 'asal' ini. Itu akan menjadi pengaturan paling sederhana dan umum untuk tim kecil.
Anda mungkin juga melihat gitosis yang memberi Anda server http dan kemampuan untuk mengelolanya dari jarak jauh. Dengan begitu Anda tidak perlu memberikan akses ssh dan semua yang diperlukan untuk setiap pengendara.
sumber
Untuk menambah apa yang dikatakan Chris, Anda dapat menggunakan gitosis (http://eagain.net/gitweb/?p=gitosis.git) untuk mengontrol siapa yang sebenarnya dapat mengakses repo.
Tergantung pada penggunaan Anda, Anda juga dapat menggunakan kait (dalam folder .git / kait) sehingga kode Anda akan secara otomatis ditarik ke sistem file server ketika Anda mendorong dari mesin lokal Anda. Inilah skrip yang populer untuk melakukan itu: http://utsl.gen.nz/git/post-update . Ini tidak akan diperlukan dalam semua kasus.
sumber
http://repo.or.cz , sementara yang cukup bagus cenderung memiliki beberapa masalah dengan beberapa pengguna.
Jika Anda salah satunya, saya sarankan Anda mencoba http://unfuddle.com karena Anda berasal dari latar belakang subversi.
Lihat " The 30 Second Tour ": http://unfuddle.com/about/tour/plans
sumber
http://code.google.com/p/luna-tool/ adalah aplikasi scala yang mengimplementasikan sebagian besar yang diperlukan untuk saya bagian dari github
sumber