4 poin oleh GN⁺ 2024-11-10 | 2 komentar | Bagikan ke WhatsApp
  • Alat untuk menyelesaikan Git Merge Conflict, yang memahami pohon di dalam file untuk menyelaraskan kebutuhan dari kedua sisi
  • Bahasa baru dapat ditambahkan secara deklaratif
  • Dapat dikonfigurasi agar menggunakan Mergiraf sebagai pengganti algoritme merge bawaan Git
    • Meningkatkan perintah Git seperti merge, revert, rebase, cherrypick
  • Atau, Anda dapat mempertahankan perilaku asli Git dan memanggil Mergiraf secara manual saat konflik terjadi.

Tujuan Mergiraf

  • Tidak menyembunyikan konflik
    • Heuristik merge yang memahami sintaks kadang dapat terlalu optimistis dan menganggap konflik telah terselesaikan
    • Dalam kasus yang meragukan, Mergiraf menjaga kondisi terbaik dengan membiarkan penanda konflik tetap ada di file
    • Jika semua konflik berhasil diselesaikan sendiri, Mergiraf menyarankan untuk meninjau hasil mediasi melalui perintah mergiraf review
    • Jika hasil penggabungan tampak salah, Anda dapat melaporkannya dengan mudah melalui mergiraf report
  • Cukup cepat untuk penggunaan interaktif
    • Jerapah dapat berlari hingga 60 kilometer per jam
    • Penggabungan versi bercabang dari sebuah file sering terjadi secara rutin tanpa disadari selama tidak ada konflik
    • Mergiraf berupaya tetap cepat agar tidak mengganggu alur kerja
  • Terbuka terhadap metode lain
    • Dalam banyak kasus, merge berbasis baris bekerja dengan baik dan tidak memerlukan manipulasi pohon
    • Jika merge berbasis baris tidak menimbulkan konflik, Mergiraf akan mengembalikan hasil merge tersebut (sangat cepat)
    • Jika merge berbasis baris menghasilkan kunci duplikat, Mergiraf melakukan sedikit pekerjaan tambahan untuk menyelesaikan masalah atau menyorotinya dengan penanda konflik

2 komentar

 
2147483647 2024-11-11

Jerapah ternyata bisa berlari dengan kecepatan 60 kilometer per jam.

 
GN⁺ 2024-11-10
Komentar Hacker News
  • Sedang mengerjakan hal yang mirip dengan SemanticDiff, dan mengalami masalah saat menggunakan tree-sitter dan GumTree

    • tree-sitter terutama dibuat untuk penyorotan sintaks, sehingga sulit melakukan parsing yang akurat saat kode dimodifikasi
    • GumTree memberikan hasil yang cepat, tetapi sering mengembalikan pencocokan yang keliru
    • Beralih ke pendekatan berbasis Dijkstra dan mendapatkan hasil yang lebih baik
  • Bagian arsitektur Mergiraf menjelaskan secara mendalam cara kerja alat yang kompleks ini

  • Alasan memilih jerapah adalah karena tingginya membuatnya bisa melihat jauh, dan karena ia memiliki jantung terbesar di antara mamalia darat

  • Bersikap kritis terhadap klaim bahwa pada beberapa penyisipan, urutan tidak penting

    • Pada tingkat bahasa, urutan mungkin tidak penting, tetapi bagi manusia urutan tertentu bisa penting
    • Sebagai contoh, di antara Base struct Foo; struct Bar;, Left menyisipkan impl Foo { } dan Right menyisipkan struct Baz;, sehingga komputer tidak mengenali perbedaannya
  • Positif terhadap pengembangan merge driver Git

    • Merge 3-way standar tidak memahami bahasa sehingga dapat menimbulkan masalah
    • Dalam kode Python, jika dua branch yang berbeda masing-masing menghapus print yang berbeda, hasilnya menjadi kode yang tidak valid
  • Alat yang sadar sintaks mengalami masalah ketika tim memperluas bahasa dasar agar sesuai dengan masalah yang dihadapi

    • Menyebut kasus penggunaan makro Rust atau "go generate"
  • Ini tampak seperti ide yang dapat membantu penyelesaian konflik terkait pemformatan otomatis

    • Bertanya-tanya apakah alat ini bisa mendeteksi konflik semantik yang terjadi karena perpindahan kode
  • Berencana mencoba Mergiraf, dan sedang menggunakannya bersama git-absorb

    • Akan bagus jika kedua alat ini bekerja dengan sempurna atau diintegrasikan secara resmi ke Git
  • Dukungan Python tampaknya akan berguna

    • AST Python yang berbasis indentasi tampaknya akan bekerja dengan baik
  • Dukungan bahasa masih terbatas, tetapi berharap dukungan untuk lebih banyak bahasa akan ditambahkan