GitRoot
(gitroot.dev)- GitRoot adalah forge Git kecil yang mengelola repositori dan hak akses dalam satu biner tunggal, lalu menggabungkan issue, board, penggabungan branch, dan antarmuka web melalui plugin mandiri
- Bukan hanya kode, tetapi juga issue, merge request, dan board, semua data disimpan di Git sebagai file biasa sehingga tidak bergantung pada database terpisah atau blob tersembunyi
- Perubahan dikendalikan dengan
.gitroot/users.ymldan izin tulis per branch, sehingga hanya pengguna yang diizinkan yang dapat melakukan push ke branch default yang merepresentasikan status repositori saat ini - Saat ini masih versi alpha dan mendukung repositori, pengguna, plugin, perintah Git lewat SSH, serta penelusuran via HTTP, tetapi belum cocok untuk penggunaan produksi
- Menjelang 1.0, proyek ini akan mengerjakan pembaruan, izin tingkat file, perintah Git via HTTP, grup dan subgrup, serta stabilisasi API plugin; kontribusi saat ini memerlukan pemahaman tentang Git dan alur plugin
grafter
Forge Git kecil yang hanya merangkai fitur yang dibutuhkan
- GitRoot adalah forge Git kecil yang dijalankan dalam satu biner, dengan fungsi dasar dibatasi pada pembuatan repositori dan pengelolaan hak akses per repositori
- Fitur lainnya ditangani oleh plugin yang dapat dipasang secara terpisah dan independen satu sama lain
- Membuat issue, roadmap, sprint, dan milestone
- Menampilkan item dalam bentuk board
- Peninjauan dan penggabungan branch yang di GitRoot disebut
graft - Menyediakan data repositori dan berbagai fitur melalui antarmuka web
- Karena plugin benar-benar terpisah, Anda dapat menggunakan board tanpa antarmuka web, dan juga bisa membuat sendiri plugin sesuai kebutuhan proyek
Desain yang mengubah forge sesuai proyek
- Dengan asumsi bahwa setiap proyek memiliki cara kerja yang berbeda, sistem ini dirancang agar setiap proyek memiliki kebebasan untuk memodifikasi forgenya sendiri
- Lingkungan yang diinginkan pengembang adalah sebagai berikut
- Menyimpan kode, issue, pull/merge request, dan board dalam satu repositori
- Menyediakan fitur yang diperlukan untuk promosi dan operasional proyek, seperti landing page, terjemahan, sistem tiket, dan forum
- Dapat dipindahkan ke forge server lain tanpa skrip migrasi atau kehilangan data maupun atribusi kontributor
- Sebaliknya, mereka ingin menghindari kompleksitas berikut
- Harus membuka browser untuk mengelola pull/merge request atau issue
- Konfigurasi yang pertama-tama menampilkan daftar file dan direktori kepada orang yang baru mengenal proyek
- Forge yang menentukan makna dan alur kerja sprint, milestone, epic, dan user story
- Struktur yang mengharuskan melewati banyak menu hanya untuk mengatur satu izin pengguna
Otonomi dalam instalasi dan operasional
- Proyek ini menargetkan distribusi tanpa dependensi dan tanpa database agar admin mudah memasang dan memeliharanya
- Admin harus bisa mengatur tindakan yang diizinkan per pengguna, dan pengguna juga harus bisa langsung meminta pembuatan maupun akses ke proyek dan fitur tanpa email atau chat
- Tujuannya adalah mengurangi beban upgrade, sekaligus tidak menyerahkan data proyek dan pengguna kepada pihak ketiga, serta tidak bergantung pada penyedia besar yang dapat tiba-tiba mengubah kebijakan operasional
- Ini masih proyek yang belum selesai dan saat ini menerima kontribusi eksternal
Hak akses yang dikelola dengan file biasa dan branch
- Alih-alih database atau blob tersembunyi di dalam tree Git, semua data disimpan dalam file biasa di samping kode
.gitroot/users.ymldi setiap repositori menentukan lokasi yang dapat ditulis oleh tiap pengguna, dan kontrol akses bekerja terutama melalui pembatasan branch- Pada awalnya, hanya pemilik yang dapat mengakses branch default
- Jika pengguna tanpa izin melakukan push ke branch default, GitRoot akan menolak perubahan tersebut
- Siapa pun dapat membuat branch baru, dan pengguna yang membuatnya memperoleh izin tulis untuk branch itu sementara pengguna lain tidak dapat mengubahnya
- Jika
.gitroot/users.ymldiubah atau branch yang menambahkan pengguna itu sendiri digabungkan, pengguna tersebut juga dapat melakukan push ke branch default
- Siapa pun dapat membaca file dan mengubahnya secara lokal atau di branch baru, tetapi untuk menerapkan perubahan ke branch default yang merepresentasikan status repositori saat ini, diperlukan penggabungan oleh pemilik
- Konfigurasi forge itu sendiri juga dikelola di repositori root
- Repositori dibuat dengan menambahkan perubahan ke
.gitroot/repositories.ymlpada branch default repositori root atau dengan menggabungkan perubahan tersebut - Cara kerjanya secara rinci dapat dilihat di dokumentasi
- Repositori dibuat dengan menambahkan perubahan ke
Fitur yang didukung di versi alpha
- Karena saat ini masih versi alpha, proyek ini boleh diuji tetapi tidak boleh digunakan di produksi
- Cakupan dukungannya adalah sebagai berikut
- Pembuatan dan penghapusan repositori
- Pemrosesan perintah Git melalui SSH
- Pengelolaan lokasi tulis per pengguna pada tingkat repositori dan branch
- Pemasangan plugin dan aktivasi per repositori
- Menjalankan plugin di working tree saat instalasi
- Menjalankan plugin terhadap diff pada setiap commit setelah instalasi
- Penelusuran repositori melalui HTTP
Rencana pengembangan menuju 1.0
- Sebelum versi 1.0, proyek ini berencana mengimplementasikan fitur-fitur berikut
- Pembaruan GitRoot dan plugin
- Pengelolaan izin pengguna tingkat file
- Pemrosesan perintah Git melalui HTTP
- Pengelolaan repositori dengan grup dan subgrup
- Stabilisasi API plugin
Self-hosting dan prosedur kontribusi
- Situs web GitRoot adalah instance GitRoot yang meng-host kode GitRoot itu sendiri, dan dioperasikan khusus untuk proyek GitRoot
- Untuk mencobanya di proyek lain, ikuti dokumentasi instalasi dan penggunaan
- GitRoot sendiri juga merupakan repositori GitRoot, sehingga kontribusi dapat dilakukan dengan cara yang sama, dan prosedurnya dapat dilihat di panduan kontribusi
- Instance saat ini menggunakan plugin
grafteryang mengintegrasikan sebagian kode ke branch default, jadi Anda perlu memahami cara kerjanya sebelum berkontribusi - Karena semua data, termasuk kode, issue, dan terjemahan, disimpan di Git, kontribusi saat ini memerlukan pemahaman tentang penggunaan Git
- Ke depannya, proyek ini bertujuan memungkinkan siapa pun berpartisipasi dengan langsung menjalankan
git commitdangit pushdari browser
1 komentar
Pendapat di Lobste.rs
Penyebab lebar tag
<pre>dibatasi sampai 720px tampaknya adalahdisplay:gridpadabody, dan jika itu dinonaktifkan lebarnya menjadi seperti yang diharapkan. Selain itu, karena URL tidak memuat informasi titik commit tertentu, pengirim dan penerima tautan sulit melihat tampilan yang sama. Saya paham ini adalah proyek untuk kebutuhan pribadi, tetapi saya ingin menyampaikannya sebagai hal yang layak ditinjauSecara pribadi saya tidak menggunakan LLM untuk coding dan juga menentangnya, tetapi sekalipun LLM dipakai, jika patch-nya cukup kecil saya tidak yakin akan menolaknya
Karena bahasa Inggris bukan bahasa ibu saya, ada jejak LLM dalam komunikasi eksternal karena saya kesulitan menjelaskan GitRoot. Sebelumnya saya juga meminta bantuan di https://gts.gitroot.dev/@forge/statuses/01KFNWDKSZBEHTC16N5G02HJZ6 dan https://gts.gitroot.dev/@forge/statuses/01KTP30NTY9FK91Q9B5Z9B4M52, tetapi tidak ada yang datang
Menyedihkan bahwa saya harus memakai LLM, tetapi daripada tidak melakukan apa-apa, saya memutuskan untuk menggunakannya seminimal mungkin. Jika nanti komunitas terbentuk, saya ingin sepenuhnya menyingkirkannya, dan sebelum itu pun saya rasa mungkin ia akan lenyap dengan sendirinya karena alasan ekonomi. Ada banyak tulisan tentang filsafat, keamanan, dan masa depan yang masuk daftar tugas, tetapi saya jadi ragu menulis karena merasa pada akhirnya LLM juga yang akan merapikan kalimat, memperbaiki typo, dan menerjemahkannya