Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Git membantu menjaga jejak kode sumber Anda tetap kecil karena perbedaan antara versi mudah dipilih dan kode mudah dikompresi. File besar yang tidak dikompresi dengan baik dan yang berubah sepenuhnya antara versi (seperti biner) menyajikan masalah saat disimpan di repositori Git Anda. Performa cepat Git berasal dari kemampuannya untuk mengakses dan mengganti semua versi file dari penyimpanan lokal.
Jika Anda memiliki file besar yang tidak dapat dibatasi dalam repositori Anda (seperti biner), Anda menyimpan salinan lengkap file-file tersebut di repositori Anda setiap kali Anda melakukan perubahan pada file tersebut. Jika banyak versi file ini ada di repositori Anda, mereka secara dramatis meningkatkan waktu untuk memeriksa, cabang, mengambil, dan mengkloning kode Anda.
Jenis file apa yang harus Anda simpan di Git?
Menerapkan kode sumber, bukan dependensi
Saat tim Anda bekerja dengan editor dan alat untuk membuat dan memperbarui file, Anda harus memasukkan file-file ini ke dalam Git sehingga tim Anda dapat menikmati manfaat alur kerja Git. Jangan menerapkan jenis file lain ke dalam repositori Anda: misalnya, DLL, file pustaka, dan dependensi lain yang tidak dibuat tim Anda tetapi kode Anda bergantung pada. Kirimkan file-file ini melalui manajemen paket ke sistem Anda.
Manajemen paket menggabungkan dependensi Anda dan menginstal file pada sistem Anda saat Anda menyebarkan paket. Paket memiliki versi untuk memastikan bahwa kode yang diuji dalam satu lingkungan berjalan sama di lingkungan lain, selama lingkungan memiliki paket yang terpasang sama.
Jangan menyimpan output
Jangan memasukkan biner, log, output pelacakan, atau data diagnostik dari build dan pengujian Anda. Ini adalah output dari kode Anda, bukan kode sumber itu sendiri. Bagikan log dan informasi penelusuran dengan tim Anda melalui alat pelacakan item kerja atau melalui berbagi file dengan tim.
Menyimpan sumber biner kecil yang jarang diperbarui di Git
Berkas biner sumber yang jarang diperbarui hanya memiliki sedikit versi yang dicatat. Mereka tidak memakan banyak ruang jika ukuran file mereka kecil. Gambar untuk web, ikon, dan aset seni lainnya yang lebih kecil dapat termasuk dalam kategori ini. Lebih baik menyimpan file-file ini di Git dengan sisa sumber Anda sehingga tim Anda dapat menggunakan alur kerja yang konsisten.
Penting
Bahkan biner kecil dapat menyebabkan masalah jika sering diperbarui. Misalnya, 100 perubahan pada file biner 100 KB menggunakan penyimpanan sebanyak 10 perubahan pada biner 1-MB. Karena frekuensi pembaruan, biner yang lebih kecil akan memperlambat performa percabangan lebih sering daripada biner besar.
Jangan mengkomit aset biner besar yang sering diperbarui
Git mengelola satu versi utama dari sebuah file dan kemudian hanya menyimpan perbedaan-perbedaan dari versi tersebut, dalam proses yang dikenal sebagai deltifikasi. Deltifikasi dan kompresi file memungkinkan Git untuk menyimpan seluruh riwayat kode Anda di repositori lokal Anda. Biner besar biasanya berubah sepenuhnya antara versi dan sering kali sudah dalam keadaan terkompresi. File-file ini sulit dikelola Git karena perbedaan antara versi besar.
Git harus menyimpan seluruh konten setiap versi file dan mengalami kesulitan menghemat ruang melalui deltifikasi dan kompresi. Menyimpan versi lengkap file-file ini menyebabkan ukuran repositori meningkat dari waktu ke waktu. Peningkatan ukuran repo mengurangi performa percabangan, meningkatkan waktu kloning, dan memperluas persyaratan penyimpanan.
Strategi untuk bekerja dengan file sumber biner besar
- Jangan mengunggah arsip data terkompresi. Lebih baik untuk mengekstrak file dan mengkomit kode sumber yang dapat dibedakan. Biarkan Git menangani pemadatan data di repositori Anda.
- Hindari menerapkan kode yang dikompilasi dan dependensi biner lainnya. Terapkan sumber dan buat dependensi, atau gunakan solusi manajemen paket untuk membuat versi dan menyediakan file-file ini ke sistem Anda.
- Simpan konfigurasi dan data terstruktur lainnya dalam format teks biasa yang berbeda, seperti JSON.
Apa itu Git LFS?
Ketika Anda memiliki file sumber dengan perbedaan besar antara versi dan pembaruan yang sering, Anda dapat menggunakan Git Large File Storage (LFS) untuk mengelola jenis file ini. Git LFS adalah ekstensi untuk Git yang menyediakan data yang menggambarkan file besar dalam commit ke repositori Anda. Ini menyimpan konten file biner ke penyimpanan jarak jauh terpisah.
Saat Anda melakukan kloning dan beralih cabang di repositori Anda, Git LFS mengunduh versi yang benar dari penyimpanan jarak jauh tersebut. Alat pengembangan lokal Anda bekerja secara transparan dengan berkas tersebut seakan-akan diunggah langsung ke repositori Anda.
Keuntungan
Manfaat Git LFS adalah tim Anda dapat menggunakan alur kerja Git end-to-end yang familier, apa pun file yang dibuat tim Anda. LFS menangani file besar untuk mencegahnya memengaruhi repositori keseluruhan. Selain itu, di versi 2.0, Git LFS mendukung penguncian file untuk membantu tim Anda mengerjakan aset besar yang tidak dapat dibedakan seperti video, suara, dan peta game.
Git LFS didukung penuh dan gratis di Azure DevOps Services. Untuk menggunakan LFS dengan Visual Studio, Anda memerlukan Visual Studio 2015 Update 2 atau yang lebih baru. Cukup ikuti instruksi untuk menginstal klien, siapkan pelacakan LFS untuk file di repositori lokal Anda, lalu dorong perubahan Anda ke Azure Repos.
Keterbatasan
Git LFS memiliki beberapa kelemahan yang harus Anda pertimbangkan sebelum mengadopsinya:
- Setiap klien Git yang digunakan tim Anda harus menginstal klien Git LFS dan memahami konfigurasi pelacakan .
- Jika klien Git LFS tidak diinstal dan dikonfigurasi dengan benar, Anda tidak akan melihat file biner yang dilakukan melalui Git LFS saat Anda mengkloning repositori Anda. Git akan mengunduh data yang mendeskripsikan file besar (yang dikomit oleh Git LFS ke repositori) dan bukan file biner. Mengkomit biner besar tanpa client Git LFS yang terinstal akan mendorong biner ke repositori Anda.
- Git tidak dapat menggabungkan perubahan dari dua versi berbeda file biner meskipun kedua versi memiliki induk yang sama. Jika dua orang mengerjakan file yang sama pada saat yang bersamaan, mereka harus bekerja sama untuk menyelaraskan perubahan mereka guna menghindari menimpa pekerjaan orang lain. Untuk membantu, Git LFS menyediakan penguncian file. Pengguna masih harus berhati-hati untuk selalu menarik salinan terbaru aset biner sebelum mulai bekerja.
- Azure Repos saat ini tidak mendukung penggunaan Secure Shell (SSH) dalam repositori dengan file terlacak Git LFS.
- Jika pengguna menyeret file biner melalui antarmuka web ke dalam repositori yang dikonfigurasi untuk Git LFS, file biner tersebut dikomitkan ke repositori--bukan pointer yang seharusnya dikomitkan melalui klien Git LFS.
- Meskipun tidak ada pembatasan ukuran file yang ketat, ruang kosong server yang tersedia dan beban kerja saat ini dapat membatasi performa dan fungsionalitas.
- Batas waktu untuk satu unggahan file adalah satu jam.
Format berkas
File yang ditulis ke dalam repositori Anda untuk file terlacak Git LFS memiliki beberapa baris dengan pasangan kunci/nilai pada setiap baris:
version https://git-lfs.github.com/spec/v1
oid a747cfbbef63fc0a3f5ffca332ae486ee7bf77c1d1b9b2de02e261ef97d085fe
size 4923023
Nota
URL GitHub yang disertakan untuk nilai versi hanya menentukan jenis file penunjuk LFS. Ini bukan tautan ke file biner Anda.
Masalah yang diketahui
Jika Anda menggunakan versi LFS yang lebih lama dari 2.4.0 dengan Azure DevOps Server, langkah penyiapan tambahan diperlukan untuk mengautentikasi melalui NTLM alih-alih Kerberos. Langkah ini tidak lagi diperlukan pada LFS 2.4.0, dan kami sangat menyarankan Anda meningkatkan.