Browser Bare Bones
git instaweb --httpd=webrick
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:
Aktifkan alur kerja git yang didesentralisasi: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-paths .git /"
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 dapat menggunakan fasilitas git untuk mengirim email tambalan. Tapi itu agak tidak tepat dan membutuhkan sedikit pengetahuan tentang cara menerapkan tambalan email.
- Anda dapat membuat akun di mesin Anda sendiri untuk kolaborator Anda ssh ke. Tetapi mungkin Anda tidak memiliki akses root lokal, atau mungkin Anda tidak mempercayai mereka dengan akses SSH ke kotak Anda.
- Anda bisa mengkloning repo Anda ke thumbdrive dan meneruskannya bolak-balik. Tapi itu agak membosankan, terutama jika Anda berada di jaringan lokal yang sama, dan memerlukan thumb drive.
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 menyebutnya git serve
. Lari:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
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 :
- Lari
git serve
. "Siap bergemuruh," itu akan melaporkan. Git buruk.
- Temukan alamat IP Anda. Katakan itu 192.168.1.123.
- Katakan "hai Jane, saya tidak siap / mampu mendorong komit ini sampai ke asal, tetapi Anda dapat mengambil komit saya ke klon Anda dengan menjalankan
git fetch git://192.168.1.123/
"
- Tekan ctrl + c ketika Anda tidak ingin lagi melayani repo itu.
Anda juga bisa memberi tahu Jane git clone git://192.168.1.123/ local-repo-name
jika dia belum memiliki tiruan dari repositori. Atau, gunakan git 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