Mengatasi Batas Ukuran Repositori Azure
Memigrasikan repositori Git ke Azure terkadang menghadapi tantangan, terutama ketika berhadapan dengan ukuran repositori yang besar. Kesalahan umum, "TF402462 Dorongan ditolak karena ukurannya lebih besar dari 5120 MB," dapat menghentikan proses secara tidak terduga. Masalah ini sering muncul karena ukuran file atau riwayat yang terlalu besar dalam direktori .git.
Pada artikel ini, kita akan mempelajari langkah-langkah untuk mengatasi masalah ini, termasuk penggunaan Git LFS (Large File Storage) untuk mengelola file besar secara efektif. Dengan memahami penyebab dan menerapkan solusi yang tepat, Anda berhasil memigrasikan repositori Anda ke Azure tanpa melebihi batas ukuran.
Memerintah | Keterangan |
---|---|
git lfs install | Menginisialisasi Git Large File Storage (LFS) di repositori. |
git lfs track | Melacak jenis file tertentu dengan Git LFS, mengurangi dampaknya terhadap ukuran repositori. |
git lfs migrate import | Mengimpor dan memigrasikan file besar untuk dikelola oleh Git LFS. |
git filter-repo | Memfilter repositori untuk menghapus file besar dari riwayat penerapan. |
git gc --prune=now | Sampah mengumpulkan dan memangkas file yang tidak diperlukan untuk mengurangi ukuran repositori. |
git push --mirror | Mendorong semua referensi (cabang, tag) dari satu repositori ke repositori lainnya. |
Memahami Skrip untuk Migrasi Azure
Skrip pertama berfokus pada pemanfaatan Git LFS (Large File Storage) untuk menangani file besar di repositori Anda. Ini dimulai dengan menginisialisasi Git LFS dengan git lfs install memerintah. Ini diikuti dengan melacak file besar menggunakan git lfs track, yang memastikan jenis file tertentu dikelola oleh Git LFS. Setelah menyiapkan pelacakan, skrip digunakan git lfs migrate import untuk mengimpor file besar yang ada ke LFS. Proses ini membantu mengurangi ukuran repositori, sehingga lebih mudah untuk dikirim ke Azure. Terakhir, skrip mencoba untuk mendorong seluruh repositori menggunakan git push --mirror memerintah.
Skrip kedua adalah pendekatan berbasis Python untuk menganalisis dan membersihkan repositori. Ini dimulai dengan mengkloning repositori secara lokal subprocess.run(['git', 'clone', repo_url]) dan kemudian menavigasi ke direktori repositori. Skrip menggunakan git filter-repo untuk menghapus file besar dari riwayat, diikuti dengan git gc --prune=now untuk mengumpulkan sampah dan memangkas file yang tidak diperlukan. Hal ini secara signifikan mengurangi ukuran repositori. Terakhir, repositori yang telah dibersihkan didorong ke Azure menggunakan subprocess.run(['git', 'push', '--mirror', 'azure-remote-url']). Langkah-langkah ini memastikan bahwa repositori tetap berada dalam batas ukuran yang diberlakukan oleh Azure.
Menggunakan Git LFS untuk Mengelola File Besar untuk Migrasi Azure
Skrip Git Bash untuk Migrasi File
# Step 1: Initialize Git LFS
git lfs install
# Step 2: Track specific large file types
git lfs track "*.zip" "*.a" "*.tar" "*.dll" "*.lib" "*.xz" "*.bz2" "*.exe" "*.ttf" "*.ttc" "*.db" "*.mp4" "*.tgz" "*.pdf" "*.dcm" "*.so" "*.pdb" "*.msi" "*.jar" "*.bin" "*.sqlite"
# Step 3: Add .gitattributes file
git add .gitattributes
git commit -m "Track large files using Git LFS"
# Step 4: Migrate existing large files to Git LFS
git lfs migrate import --include="*.zip,*.a,*.tar,*.dll,*.lib,*.xz,*.bz2,*.exe,*.ttf,*.ttc,*.db,*.mp4,*.tgz,*.pdf,*.dcm,*.so,*.pdb,*.msi,*.jar,*.bin,*.sqlite"
# Step 5: Push the repository to Azure
git push --mirror
Mengurangi Ukuran Repositori untuk Migrasi Azure yang Berhasil
Skrip Python untuk Menganalisis dan Membersihkan Repositori
import os
import subprocess
# Step 1: Clone the repository locally
repo_url = 'your-repo-url'
subprocess.run(['git', 'clone', repo_url])
# Step 2: Change directory to the cloned repo
repo_name = 'your-repo-name'
os.chdir(repo_name)
# Step 3: Remove large files from history
subprocess.run(['git', 'filter-repo', '--path-glob', '*.zip', '--path-glob', '*.tar', '--path-glob', '*.dll', '--path-glob', '*.mp4', '--strip-blobs-bigger-than', '10M'])
# Step 4: Garbage collect to reduce repo size
subprocess.run(['git', 'gc', '--prune=now'])
# Step 5: Push the cleaned repository to Azure
subprocess.run(['git', 'push', '--mirror', 'azure-remote-url'])
Mengatasi Masalah Ukuran Repositori di Azure
Aspek penting lainnya dalam mengelola repositori Git yang besar adalah pertimbangan riwayat dan file yang tidak digunakan. Seiring waktu, repositori mengumpulkan sejumlah besar data historis, yang dapat menyebabkan masalah ukuran. Alat seperti git filter-repo Dan git gc membantu dalam membersihkan data ini. Itu git filter-repo Perintah ini sangat berguna untuk menulis ulang riwayat guna menghapus file besar atau data sensitif, sehingga secara efektif mengurangi jejak repositori.
Selain itu, git gc perintah, terutama bila digunakan dengan --prune=now pilihan, sangat penting untuk mengumpulkan sampah dan menghilangkan komitmen yang menggantung dan benda-benda lain yang tidak dapat dijangkau. Hal ini memastikan bahwa hanya data yang diperlukan yang disimpan, menjaga ukuran repositori lebih mudah dikelola. Pemeliharaan rutin menggunakan perintah ini dapat mencegah repositori berkembang melampaui batas yang dapat dikelola, sehingga memfasilitasi migrasi dan operasi yang lebih lancar.
Pertanyaan Umum dan Solusi untuk Git ke Azure Migration
- Apa arti kesalahan "TF402462"?
- Kesalahan menunjukkan bahwa push ditolak karena ukuran repositori melebihi batas 5120 MB yang diberlakukan oleh Azure.
- Bagaimana cara mengidentifikasi file besar di repositori saya?
- Anda dapat menggunakan git rev-list --objects --all | sort -k 2 > allfiles.txt perintah untuk membuat daftar semua file di repositori dan mengidentifikasi yang terbesar.
- Apa itu Git LFS dan apa manfaatnya?
- Git LFS (Large File Storage) adalah ekstensi untuk Git yang memungkinkan Anda mengelola file besar secara terpisah dari riwayat utama repositori, sehingga mengurangi ukuran repositori secara keseluruhan.
- Bagaimana cara melacak file besar menggunakan Git LFS?
- Menggunakan git lfs track perintah diikuti dengan jenis file yang ingin Anda kelola, seperti git lfs track "*.zip" "*.tar".
- Langkah apa yang harus saya ambil setelah melacak file dengan Git LFS?
- Setelah pelacakan, Anda perlu melakukan perubahan dan menjalankannya git lfs migrate import untuk memindahkan file besar yang ada ke LFS.
- Bagaimana cara membersihkan riwayat repositori saya?
- Menggunakan git filter-repo perintah untuk menghapus file yang tidak diinginkan dari riwayat repositori Anda dan mengurangi ukurannya.
- Apa perannya git gc dalam mempertahankan ukuran repositori?
- Itu git gc perintah membersihkan file yang tidak diperlukan dan mengoptimalkan repositori, yang sangat penting untuk menjaga ukurannya tetap terkendali.
- Seberapa sering saya harus menjalankan perintah pemeliharaan pada repositori saya?
- Secara berkala, terutama sebelum dan sesudah perubahan atau migrasi yang signifikan, untuk memastikan repositori tetap dalam batas ukuran.
Pemikiran Akhir tentang Manajemen Ukuran Repositori
Mengelola repositori Git besar secara efektif sangat penting untuk keberhasilan migrasi ke Azure, terutama ketika berhadapan dengan batasan ukuran. Memanfaatkan alat seperti Git LFS untuk melacak dan mengelola file besar dapat mengurangi ukuran repositori secara signifikan. Selain itu, membersihkan riwayat dengan perintah seperti git filter-repo dan pemeliharaan rutin menggunakan git gc dapat menjaga repositori Anda tetap optimal dan dalam batas ukuran. Dengan strategi ini, Anda dapat mengatasi kesalahan TF402462 dan memastikan proses migrasi berjalan lancar.