Vượt qua giới hạn kích thước kho lưu trữ Azure
Việc di chuyển kho lưu trữ Git sang Azure đôi khi có thể gặp phải thách thức, đặc biệt là khi xử lý kích thước kho lưu trữ lớn. Một lỗi phổ biến, "TF402462 Việc đẩy bị từ chối vì kích thước lớn hơn 5120 MB" có thể khiến quá trình dừng đột ngột. Sự cố này thường phát sinh do các tệp hoặc lịch sử có kích thước quá lớn trong thư mục .git.
Trong bài viết này, chúng ta sẽ khám phá các bước để giải quyết vấn đề này, bao gồm cả việc sử dụng Git LFS (Bộ lưu trữ tệp lớn) để quản lý các tệp lớn một cách hiệu quả. Bằng cách hiểu rõ nguyên nhân và triển khai các giải pháp phù hợp, bạn có thể di chuyển thành công kho lưu trữ của mình sang Azure mà không vượt quá giới hạn kích thước.
Yêu cầu | Sự miêu tả |
---|---|
git lfs install | Khởi tạo Bộ lưu trữ tệp lớn Git (LFS) trong kho lưu trữ. |
git lfs track | Theo dõi các loại tệp cụ thể bằng Git LFS, giảm tác động của chúng đến kích thước kho lưu trữ. |
git lfs migrate import | Nhập và di chuyển các tệp lớn do Git LFS quản lý. |
git filter-repo | Lọc kho lưu trữ để xóa các tệp lớn khỏi lịch sử cam kết. |
git gc --prune=now | Rác thu thập và cắt bớt các tệp không cần thiết để giảm kích thước kho lưu trữ. |
git push --mirror | Đẩy tất cả các ref (nhánh, thẻ) từ kho này sang kho khác. |
Hiểu các tập lệnh để di chuyển Azure
Tập lệnh đầu tiên tập trung vào việc sử dụng Git LFS (Bộ lưu trữ tệp lớn) để xử lý các tệp lớn trong kho lưu trữ của bạn. Nó bắt đầu bằng cách khởi tạo Git LFS với git lfs install yêu cầu. Tiếp theo là theo dõi các tệp lớn bằng cách sử dụng git lfs track, đảm bảo các loại tệp cụ thể được quản lý bởi Git LFS. Sau khi thiết lập theo dõi, tập lệnh sẽ sử dụng git lfs migrate import để nhập các tệp lớn hiện có vào LFS. Quá trình này giúp giảm kích thước của kho lưu trữ, giúp việc đẩy lên Azure dễ dàng hơn. Cuối cùng, tập lệnh cố gắng đẩy toàn bộ kho lưu trữ bằng cách sử dụng git push --mirror yêu cầu.
Tập lệnh thứ hai là một cách tiếp cận dựa trên Python để phân tích và dọn dẹp kho lưu trữ. Nó bắt đầu bằng cách sao chép kho lưu trữ cục bộ với subprocess.run(['git', 'clone', repo_url]) và sau đó điều hướng đến thư mục kho lưu trữ. Kịch bản sử dụng git filter-repo để xóa các tệp lớn khỏi lịch sử, tiếp theo là git gc --prune=now để thu gom rác và cắt bớt các tập tin không cần thiết. Điều này làm giảm đáng kể kích thước kho lưu trữ. Cuối cùng, kho lưu trữ đã được làm sạch sẽ được đẩy lên Azure bằng cách sử dụng subprocess.run(['git', 'push', '--mirror', 'azure-remote-url']). Các bước này đảm bảo rằng kho lưu trữ nằm trong giới hạn kích thước do Azure áp đặt.
Sử dụng Git LFS để quản lý các tệp lớn để di chuyển Azure
Tập lệnh Git Bash để di chuyển tệp
# 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
Giảm kích thước kho lưu trữ để di chuyển Azure thành công
Tập lệnh Python để phân tích và dọn dẹp kho lưu trữ
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'])
Giải quyết các vấn đề về kích thước kho lưu trữ trong Azure
Một khía cạnh quan trọng khác của việc quản lý kho Git lớn là việc xem xét lịch sử và các tệp không sử dụng. Theo thời gian, các kho lưu trữ tích lũy một lượng dữ liệu lịch sử đáng kể, điều này có thể góp phần gây ra vấn đề về kích thước. Công cụ như git filter-repo Và git gc giúp làm sạch dữ liệu này. Các git filter-repo lệnh đặc biệt hữu ích để viết lại lịch sử nhằm xóa các tệp lớn hoặc dữ liệu nhạy cảm, giảm dấu chân của kho lưu trữ một cách hiệu quả.
Ngoài ra, git gc lệnh, đặc biệt khi được sử dụng với --prune=now tùy chọn, rất cần thiết cho việc thu thập rác và loại bỏ các cam kết lơ lửng và các đối tượng không thể truy cập khác. Điều này đảm bảo rằng chỉ những dữ liệu cần thiết mới được lưu giữ, duy trì kích thước kho lưu trữ dễ quản lý hơn. Việc bảo trì thường xuyên bằng các lệnh này có thể ngăn kho lưu trữ phát triển vượt quá giới hạn có thể quản lý được, tạo điều kiện cho việc di chuyển và vận hành suôn sẻ hơn.
Các câu hỏi và giải pháp phổ biến khi di chuyển Git sang Azure
- Lỗi "TF402462" nghĩa là gì?
- Lỗi cho biết quá trình đẩy đã bị từ chối do kích thước kho lưu trữ vượt quá giới hạn 5120 MB do Azure áp đặt.
- Làm cách nào tôi có thể xác định các tệp lớn trong kho lưu trữ của mình?
- Bạn có thể dùng git rev-list --objects --all | sort -k 2 > allfiles.txt lệnh liệt kê tất cả các tệp trong kho lưu trữ và xác định những tệp lớn nhất.
- Git LFS là gì và nó giúp ích như thế nào?
- Git LFS (Bộ lưu trữ tệp lớn) là một tiện ích mở rộng dành cho Git, cho phép bạn quản lý các tệp lớn tách biệt với lịch sử chính của kho lưu trữ, giảm kích thước tổng thể của kho lưu trữ.
- Làm cách nào để theo dõi các tệp lớn bằng Git LFS?
- Sử dụng git lfs track lệnh theo sau là loại tệp bạn muốn quản lý, chẳng hạn như git lfs track "*.zip" "*.tar".
- Tôi nên thực hiện những bước nào sau khi theo dõi tệp bằng Git LFS?
- Sau khi theo dõi, bạn cần commit các thay đổi và chạy git lfs migrate import để di chuyển các tệp lớn hiện có sang LFS.
- Làm cách nào tôi có thể xóa lịch sử kho lưu trữ của mình?
- Sử dụng git filter-repo lệnh xóa các tệp không mong muốn khỏi lịch sử kho lưu trữ của bạn và giảm kích thước của nó.
- Vai trò của là gì git gc trong việc duy trì kích thước kho lưu trữ?
- Các git gc lệnh dọn sạch các tệp không cần thiết và tối ưu hóa kho lưu trữ, điều này rất quan trọng để duy trì kích thước có thể quản lý được.
- Tôi nên chạy các lệnh bảo trì trên kho lưu trữ của mình với tần suất như thế nào?
- Thường xuyên, đặc biệt là trước và sau những thay đổi hoặc di chuyển đáng kể, để đảm bảo kho lưu trữ vẫn nằm trong giới hạn kích thước.
Suy nghĩ cuối cùng về quản lý kích thước kho lưu trữ
Quản lý kho Git lớn một cách hiệu quả là rất quan trọng để di chuyển thành công sang Azure, đặc biệt là khi xử lý các giới hạn kích thước. Việc sử dụng các công cụ như Git LFS để theo dõi và quản lý các tệp lớn có thể giảm đáng kể kích thước kho lưu trữ. Ngoài ra, việc dọn dẹp lịch sử bằng các lệnh như git filter-repo và bảo trì thường xuyên bằng git gc có thể giữ cho kho lưu trữ của bạn được tối ưu hóa và nằm trong giới hạn kích thước. Với những chiến lược này, bạn có thể khắc phục lỗi TF402462 và đảm bảo quá trình di chuyển diễn ra suôn sẻ.