Jujutsu ( jj ), sebuah sistem kawalan versi moden yang menggunakan Git sebagai backend, sedang mengalami peningkatan penggunaan dalam kalangan pembangun yang melaporkan peningkatan alir kerja yang ketara berbanding penggunaan Git tradisional. Sistem ini menjanjikan model mental yang dipermudahkan sambil mengekalkan keserasian penuh dengan repositori Git sedia ada, membolehkan pembangun individu menggunakannya tanpa memerlukan perubahan seluruh pasukan.
Pengekalan Pengguna Luar Biasa Memacu Pertumbuhan Komuniti
Aspek yang paling menarik dalam penggunaan Jujutsu nampaknya adalah kadar pengekalan dalam kalangan pengguna yang memberikannya percubaan serius. Perbincangan komuniti mendedahkan kadar penukaran yang luar biasa tinggi, dengan pembangun secara konsisten melaporkan bahawa sebaik sahaja mereka menghabiskan seminggu mempelajari sistem ini, mereka jarang kembali kepada Git . Corak ini telah muncul merentasi pelbagai thread perbincangan, menunjukkan bahawa pelaburan pembelajaran awal membuahkan hasil dengan cepat bagi kebanyakan pengguna.
Sistem ini menangani beberapa masalah yang biasa dihadapi oleh pengguna Git , terutamanya berkaitan operasi rebasing yang kompleks dan pengurusan pelbagai perubahan berkaitan. Tidak seperti pendekatan modal Git yang memerlukan pengguna menavigasi keadaan berbeza semasa operasi seperti rebasing, Jujutsu mengekalkan antara muka yang konsisten sepanjang semua operasi.
Alir Kerja Dipermudahkan untuk Operasi Kompleks
Salah satu kelebihan utama Jujutsu terletak pada pengendalian senario yang terkenal sukar dalam Git , seperti menguruskan pull request yang bergantung atau memisahkan kerja merentasi cawangan selari. Apabila pembangun perlu mengubah suai commit terdahulu dalam siri perubahan berkaitan, Git biasanya memerlukan rebasing manual semua commit berikutnya. Jujutsu mengautomasikan proses ini, secara automatik mengemaskini revisi bergantung apabila commit induk mereka berubah.
Sistem ini juga memperkenalkan pendekatan berbeza untuk staging perubahan. Daripada kawasan staging berasaskan indeks Git , Jujutsu menganggap salinan kerja sebagai commit itu sendiri. Pembangun boleh menggunakan arahan seperti jj split
untuk memisahkan perubahan kepada revisi berbeza atau jj squash
untuk menggabungkan kerja, menyediakan fleksibiliti serupa dengan git add -p
tetapi dengan keupayaan penyuntingan yang lebih berkuasa.
Arahan Utama Jujutsu berbanding Setara Git
Operasi | Arahan Git | Arahan Jujutsu |
---|---|---|
Pentahapan perubahan secara interaktif | git add -p |
jj squash -i |
Pisahkan perubahan | git reset -p + git add -p |
jj split |
Edit komit sebelumnya | git rebase -i |
jj edit <revision> |
Cipta cawangan baharu | git checkout -b <branch> |
jj new |
Buat asal operasi | git reflog + git reset |
jj op undo <operation> |
Ciri Penyelesaian Konflik dan Pemulihan
Jujutsu mengendalikan konflik penggabungan sebagai warga kelas pertama dan bukannya menghalang operasi. Apabila konflik berlaku, sistem menandakannya dan membenarkan pembangun terus bekerja, menyelesaikan konflik mengikut keselesaan mereka dan bukannya dipaksa untuk menanganinya dengan serta-merta. Pendekatan ini mengurangkan gangguan kepada alir kerja yang sering dialami oleh pengguna Git semasa penggabungan kompleks.
Sistem ini juga termasuk fungsi undo yang komprehensif melalui log operasinya. Setiap tindakan yang diambil dalam repositori Jujutsu direkodkan, membolehkan pembangun mengembalikan keseluruhan keadaan repositori kepada mana-mana titik sebelumnya. Ciri ini menyediakan jaring keselamatan yang didapati membebaskan oleh ramai pembangun, terutamanya apabila melakukan pengubahsuaian sejarah yang kompleks.
Anda boleh merosakkan repo anda dalam git dan itu sahaja -- anda tersepit. Atau anda mencari sihir melampau di internet yang menyelamatkan anda. Dengan jj anda hanya perlu jj op undo <operation_id_that_fucked_your_repo> dan anda baik-baik sahaja.
Kelebihan Workflow Berbanding Git
- Rebasing Automatik: Commit bergantung dikemas kini secara automatik apabila commit induk berubah
- Konflik sebagai Kelas Utama: Konflik tidak menghalang operasi dan boleh diselesaikan pada bila-bila masa
- Tiada Keadaan Modal: Antara muka yang konsisten tanpa mod rebase/merge khas
- Undo Universal: Sejarah operasi lengkap membolehkan pemulihan mana-mana keadaan repositori
- Working Copy sebagai Commit: Menghapuskan kerumitan staging area sambil menyediakan lebih kuasa
Penggunaan Perusahaan dan Keserasian
Jujutsu telah menemui kejayaan dalam persekitaran perusahaan, dengan pelaksanaan di syarikat teknologi utama termasuk Google , di mana ia berfungsi sebagai frontend untuk sistem monorepo dalaman berasaskan Perforce mereka. Reka bentuk agnostik backend sistem membolehkannya berfungsi dengan sistem penyimpanan berbeza sambil mempersembahkan antara muka yang konsisten kepada pengguna.
Lapisan keserasian Git bermakna pasukan boleh menggunakan Jujutsu secara beransur-ansur, dengan sesetengah ahli menggunakannya manakala yang lain meneruskan dengan Git pada repositori yang sama. Kesalingoperasian ini menghapuskan halangan biasa yang memerlukan penggunaan sebulat suara pasukan untuk perubahan sistem kawalan versi.
Sokongan Backend Jujutsu
- Backend Git: Backend utama untuk keserasian dengan repositori Git sedia ada
- Backend Asli: Format penyimpanan khas Jujutsu untuk repositori baharu
- Backend Piper: Integrasi dengan sistem dalaman Google berasaskan Perforce
- Backend Masa Hadapan: Direka untuk menyokong sistem kawalan versi tambahan
Keluk Pembelajaran dan Ekosistem Perkakas
Walaupun Jujutsu menawarkan kelebihan yang ketara, ia memerlukan pembelajaran konsep dan arahan baru. Sistem ini menggunakan terminologi berbeza daripada Git , merujuk kepada revisi dan bukannya commit dan bookmark dan bukannya cawangan. Walau bagaimanapun, maklum balas komuniti menunjukkan bahawa pembangun biasanya menjadi produktif dalam sehari dan sepenuhnya selesa dalam seminggu.
Ekosistem perkakas sekitar Jujutsu masih berkembang berbanding landskap matang Git . Walaupun antara muka baris arahan seperti jjui
dan lazyjj
menyediakan pengalaman interaktif, integrasi IDE masih terhad. Sesetengah pembangun melaporkan ini sebagai pertimbangan apabila menilai penggunaan, terutamanya dalam pasukan yang sangat bergantung pada alir kerja Git berasaskan IDE .
Walaupun merupakan sistem yang agak baru, Jujutsu nampaknya mendapat daya tarikan dalam kalangan pembangun yang mencari alir kerja kawalan versi yang lebih berkuasa dan intuitif. Gabungan keserasian Git dan keupayaan dipertingkatkannya meletakkannya sebagai pilihan yang menarik untuk kedua-dua pembangun individu dan organisasi yang ingin menambah baik proses pembangunan mereka.
Rujukan: Jujutsu For Busy Devs