Bagikan melalui


Sensitivitas kasus Git

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Sistem file Windows dan macOS tidak peka huruf besar/kecil (tetapi mempertahankan huruf besar/kecil) secara default. Sebagian besar sistem file Linux peka huruf besar/kecil. Git awalnya dibangun untuk menjadi sistem kontrol versi kernel Linux, jadi tidak mengherankan, itu peka huruf besar/kecil.

Meskipun banyak masalah dengan OS yang tidak peka huruf besar/kecil telah ditangani di Git untuk Windows, beberapa kemudaian tetap ada.

Nama file dan folder

Di Linux, memeriksa repositori Git yang berisi "File.txt" dan "file.txt" tidak masalah. Itu adalah nama file yang berbeda. Di Windows dan macOS, memeriksa kedua file akan menghasilkan yang kedua menimpa yang pertama. Jika dua folder berbeda hanya menurut kasus, kontennya akan dicampur bersama pada sistem file yang tidak peka huruf besar/kecil.

Memperbaiki konflik kasus

Salah satu cara untuk memperbaiki repositori dengan masalah ini adalah dengan memeriksanya di lingkungan yang peka huruf besar/kecil. Ganti nama file dan folder sehingga tidak lagi berkonflik, lalu dorong perubahan tersebut ke repositori. Subsistem Windows untuk Linux adalah salah satu lingkungan seperti itu. Pendekatan lain adalah menggunakan perintah git mv -f <conflicting name> <non-conflicting name> untuk setiap konflik, berhati-hatilah untuk menggunakan kapitalisasi yang tepat pada kedua nama file.

Menghindari konflik kasus

Ada baiknya untuk menghindari menciptakan situasi ini di tempat pertama. Azure Repos menawarkan pengaturan penegakan kasus untuk mencegah dorongan yang akan menyebabkan situasi ini. Bagi pengembang, mengadopsi kebiasaan menggunakan penyelesaian tab untuk menerapkan file juga akan membantu. Karena Windows dan macOS mempertahankan huruf besar/kecil, ini akan memastikan bahwa internal Git melihat casing yang sama persis dengan yang digunakan sistem file.

Nama cabang dan tag

Anda dapat membuat dua cabang atau tag (dikenal sebagai 'refs') yang hanya berbeda dalam casing. Internal Git, serta Azure DevOps Services/TFS, akan memperlakukannya sebagai dua ref terpisah. Pada komputer pengguna, Git menggunakan sistem file untuk menyimpan ref. Pengambilan dan operasi lainnya mulai gagal karena ambiguitas. Setiap ref diwakili oleh file kecil, dan jika nama ref berisi / karakter, bagian sebelum final / diwakili oleh folder.

Salah satu cara sederhana untuk menghindari masalah adalah dengan selalu menggunakan nama cabang dan tag huruf kecil. Jika Anda telah membuat dua cabang atau tag dengan masalah ini, Anda dapat memperbaikinya di antarmuka pengguna web Azure Repos.

Memperbaiki nama cabang

Dari halaman cabang, navigasikan ke penerapan terkait. Di menu konteks, pilih "Cabang baru". Beri nama baru pada cabang yang tidak memiliki konflik kasus. Kembali ke halaman cabang dan hapus cabang yang berkonflik.

Memperbaiki nama tag

Langkah-langkah untuk memperbaiki nama tag mirip dengan cabang. Dari halaman tag, navigasikan ke penerapan yang diberi tag. Di menu konteks, pilih "Buat tag". Beri tag nama baru yang tidak memiliki konflik kasus. Kembali ke halaman tag dan hapus tag yang bertentangan.