Git-Who: Alat Baris Arahan yang Mendedahkan Pemilikan Kod Melangkaui Git Blame

BigGo Editorial Team
Git-Who: Alat Baris Arahan yang Mendedahkan Pemilikan Kod Melangkaui Git Blame

Dalam dunia pembangunan perisian, memahami siapa yang menulis kod tertentu adalah penting untuk kolaborasi, penyahpepijatan, dan perkongsian pengetahuan. Walaupun arahan blame terbina dalam Git telah lama menjadi alat utama untuk tujuan ini, utiliti baris arahan sumber terbuka baharu yang dipanggil git-who semakin mendapat perhatian kerana menawarkan pemahaman yang lebih mendalam tentang pemilikan kod dan corak sumbangan.

Memahami Git Blame berbanding Git Who

Git blame telah disalah faham secara meluas oleh ramai pembangun. Seperti yang dinyatakan oleh seorang pengulas, Git blaming sebenarnya disalah faham oleh ramai orang; ia BUKAN tentang siapa yang melakukannya, tetapi tentang commit mana yang perlu dipersalahkan -- itu berbeza. Walaupun git blame menunjukkan commit mana yang terakhir mengubah setiap baris kod, git-who mengambil pendekatan berbeza dengan menganalisis corak sumbangan merentasi keseluruhan fail dan direktori, memberikan pandangan yang lebih holistik tentang pemilikan kod.

Perbezaan asasnya adalah git blame memberi tumpuan kepada penisbahan baris demi baris, manakala git-who membantu menjawab soalan yang lebih luas tentang siapa yang telah menyumbang paling ketara kepada bahagian tertentu kod sepanjang masa. Perbezaan ini menjadi sangat penting dalam kod yang besar dengan ramai penyumbang di mana memahami gambaran besar pemilikan boleh menjadi mencabar.

Masalah dengan Git Blame Tradisional

Git blame tradisional mempunyai batasan yang cuba ditangani oleh git-who. Sebagai contoh, apabila pembangun melakukan pemfaktoran semula yang besar, pemformatan semula kod, atau pemindahan fail, git blame akan menisbahkan semua baris tersebut kepada orang yang membuat perubahan itu, walaupun mereka tidak menulis kod asal.

Salah satu perkara yang lebih mengecewakan tentang 'git blame' berlaku apabila membersihkan kod lama: Dalam pekerjaan semasa saya, saya perlu memindahkan banyak fail, menggabungkan repo, memformat semula kod, dan sebagainya. 'git blame' dan alat serupa sering menunjukkan nama saya, walaupun saya tidak menulis kod tersebut.

Masalah ini sangat ketara dalam organisasi besar di mana memahami pemilikan kod sebenar adalah penting untuk perkongsian pengetahuan dan penyelenggaraan. Git-who menyediakan pandangan berbeza ke dalam corak sumbangan yang boleh membantu mengatasi batasan ini.

Ciri dan Keupayaan

Git-who menawarkan beberapa subperintah yang memberikan perspektif berbeza tentang pemilikan kod. Subperintah log meringkaskan struktur fail dan commit dengan lebih bermakna berbanding alat git standard. Subperintah user membantu memeriksa sumbangan ke laluan tertentu dalam struktur fail, manakala subperintah tag mengenal pasti pengarang berdasarkan bilangan fail yang disunting.

Salah satu ciri yang sangat berguna adalah keupayaan untuk menggambarkan garis masa sumbangan dengan subperintah bug, yang menghasilkan pangkalan data tugasan yang menyusun garis masa sumbangan projek. Ini boleh menjadi sangat berharga untuk memahami bagaimana projek telah berkembang dari masa ke masa dan siapa yang bertanggungjawab untuk komponen berbeza pada tempoh yang berlainan.

Alat ini juga menyokong penapisan mengikut pengarang, tempoh masa, dan parameter lain, menjadikannya fleksibel untuk pelbagai kes penggunaan. Selain itu, ia menyimpan data dalam cache berdasarkan repositori, meningkatkan prestasi untuk pertanyaan berulang.

Pilihan Pemasangan untuk git-who:

  • Binari Terkompilasi: Tersedia di bahagian Releases
  • Pengurus Pakej:
    • Homebrew: brew install onkarshirge/tap/git-who
  • Dari Sumber:
    • Memerlukan Go, Make, dan rantaian alat Go
    • go install github.com/sinclairtarget/git-who@latest
  • Docker:
    • Bina: docker build -t git-who .
    • Jalankan: docker run -it --rm -v "$(pwd):$(pwd)" -w "$(pwd)" onkarshirge/git-who

Subperintah Utama:

  • log: Meringkaskan struktur fail/commit
  • user: Menunjukkan sumbangan kepada laluan pepohon fail
  • bug: Menjana garis masa sumbangan
  • tag: Menandakan penulis berdasarkan bilangan fail yang disunting

Persediaan Alias Git:

[alias]
    who = "!f(){ git-who \"$@\"; }; f"
    wlog = "!f(){ git-who log \"$@\"; }; f"
Tangkapan skrin repositori GitHub yang menggambarkan struktur kod dan sejarah penyumbang yang berkaitan dengan keupayaan git-who
Tangkapan skrin repositori GitHub yang menggambarkan struktur kod dan sejarah penyumbang yang berkaitan dengan keupayaan git-who

Penerimaan Komuniti dan Cadangan

Komuniti pembangun telah memberi respons positif terhadap git-who, dengan ramai pengguna menghargai kelajuan dan pandangan yang diberikan. Seorang pengguna melaporkan bahawa untuk kod Rails yang berusia kira-kira 18 tahun dengan 1,695 penyumbang dan lebih daripada 220,000 commit, git-who menyelesaikan analisisnya dalam masa kurang daripada 3 saat.

Pengguna juga telah mencadangkan penambahbaikan yang berpotensi, seperti menambah statistik berasaskan blame untuk menunjukkan pemilik de-facto modul atau fail, sokongan untuk penyertaan/pengecualian berasaskan corak (serupa dengan fungsi .gitignore), dan fail konfigurasi untuk menyimpan tetapan pilihan.

Sesetengah pembangun telah menyatakan bahawa git-who melengkapi alat sedia ada seperti git shortlog -sn, yang memberikan kiraan ringkas commit mengikut penyumbang. Walau bagaimanapun, seperti yang dinyatakan oleh seorang pengulas, Bilangan commit bukanlah metrik yang sangat baik untuk mengukur sumbangan. Ia hanya akan berfungsi apabila terdapat gaya commit yang dipersetujui dan semua orang mematuhinya.

Integrasi dengan Aliran Kerja Sedia Ada

Git-who boleh diintegrasikan dengan mudah ke dalam aliran kerja Git sedia ada. Alat ini boleh dipasang melalui pengurus pakej seperti Homebrew atau dikompil dari sumber. Pengguna boleh menyediakan alias Git untuk memudahkan penggunaannya, membolehkan arahan seperti git who atau git wlog berbanding sintaks git-who penuh.

Bagi mereka yang bekerja dalam persekitaran berkontena, git-who boleh dijalankan sebagai kontena Docker tanpa perlu memasangnya secara langsung pada mesin hos. Kefleksibelan ini menjadikannya mudah diakses oleh pembangun dalam pelbagai persekitaran dan dengan keutamaan aliran kerja yang berbeza.

Ketika pasukan pembangunan terus mencari cara yang lebih baik untuk memahami pemilikan kod dan corak sumbangan, alat seperti git-who mewakili evolusi dalam cara kita berfikir dan menganalisis pengarang kod. Dengan memberikan pandangan yang lebih mendalam melangkaui blame baris demi baris yang ringkas, git-who membantu pasukan lebih memahami kod mereka dan bekerjasama dengan lebih berkesan.

Rujukan: git-who