Chỉnh sửa: không giống như một số câu hỏi tương tự như Chuyển một repo SVN nhiều GB sang Git hoặc /programming/540535/managing-large-binary-files-with-git Kịch bản của tôi không liên quan đến một số tiểu dự án có thể dễ dàng chuyển đổi thành các mô đun con git, cũng không phải là một vài tệp nhị phân rất lớn rất phù hợp với git-annex. Nó là một kho lưu trữ duy nhất trong đó các nhị phân là bộ kiểm tra được kết hợp chặt chẽ với mã nguồn chính của cùng một sửa đổi, giống như nếu chúng là các tài sản thời gian như đồ họa.
Tôi đang điều tra chuyển đổi kho lưu trữ mã có kích thước trung bình / lớn (50 người dùng, 60k, lịch sử 80Gb, bản sao làm việc 2Gb) từ svn. Khi số lượng người dùng tăng lên, có rất nhiều sự thay đổi trong thân cây và các tính năng thường được trải rộng trên nhiều cam kết khiến cho việc xem xét mã khó thực hiện. Ngoài ra, không có sự phân nhánh, không có cách nào để "chuyển" mã xấu ra, các đánh giá chỉ có thể được thực hiện sau khi nó được cam kết trung kế. Tôi đang điều tra các lựa chọn thay thế. Tôi đã hy vọng chúng ta có thể chuyển sang git, nhưng tôi gặp một số vấn đề.
Vấn đề với repo hiện tại theo như git đi là kích thước. Có rất nhiều tàu cũ trong đó, và làm sạch nó bằng --filter-Branch khi chuyển đổi thành git có thể cắt giảm kích thước của nó theo một độ lớn, khoảng 5-10GB. Điều này vẫn còn quá lớn. Lý do lớn nhất cho kích thước kho lưu trữ lớn là có rất nhiều tài liệu nhị phân được đưa vào để kiểm tra. Các tệp này khác nhau trong khoảng từ 0,55 đến 30mb và có hàng trăm. Họ cũng có khá nhiều thay đổi. Tôi đã xem xét các mô hình con, git-annex, v.v., nhưng có các thử nghiệm trong một mô hình con cảm thấy sai, cũng như có phụ lục cho nhiều tệp mà bạn muốn có lịch sử đầy đủ.
Vì vậy, bản chất phân tán của git thực sự là thứ ngăn cản tôi áp dụng nó. Tôi không thực sự quan tâm đến phân phối, tôi chỉ muốn các tính năng hợp nhất phân nhánh và mạnh mẽ giá rẻ. Giống như tôi giả sử 99,9% người dùng git làm, chúng tôi sẽ sử dụng kho lưu trữ trung tâm hoàn toàn may mắn.
Tôi không chắc chắn tôi hiểu tại sao mỗi người dùng phải có một lịch sử địa phương đầy đủ khi sử dụng git? Nếu quy trình làm việc không được phân cấp, dữ liệu đó đang làm gì trên đĩa của người dùng? Tôi biết rằng trong các phiên bản gần đây của git, bạn có thể sử dụng một bản sao nông chỉ với lịch sử gần đây. Câu hỏi của tôi là: có khả thi để làm điều này như là chế độ hoạt động tiêu chuẩn cho toàn bộ nhóm không? Git có thể được cấu hình để luôn nông để bạn có thể có toàn bộ lịch sử chỉ tập trung, nhưng người dùng theo mặc định chỉ có 1000 vòng quay lịch sử? Tất nhiên, tùy chọn đó chỉ là chuyển đổi 1000 vòng quay sang git và giữ lại repo svn cho khảo cổ học. Tuy nhiên, trong kịch bản đó, chúng tôi lại gặp phải vấn đề tương tự sau vài nghìn lần sửa đổi tiếp theo đối với các tài liệu thử nghiệm.
- Một tốt thực hành tốt nhất cho việc sử dụng git với Repos lớn chứa nhiều tập tin nhị phân mà bạn là gì làm muốn lịch sử? Hầu hết các thực hành tốt nhất và hướng dẫn dường như để tránh trường hợp này. Họ giải quyết vấn đề của một vài nhị phân lớn, hoặc đề nghị bỏ hoàn toàn các nhị phân.
- Là nhân bản nông có thể sử dụng như một chế độ hoạt động bình thường hay nó là một "hack"?
- Các mô hình con có thể được sử dụng cho mã khi bạn có sự phụ thuộc chặt chẽ giữa sửa đổi nguồn chính và sửa đổi mô hình con (chẳng hạn như trong phụ thuộc nhị phân thời gian biên dịch hoặc bộ kiểm thử đơn vị)?
- Làm thế nào lớn là "quá lớn" cho một kho git (tại cơ sở)? Chúng ta có nên tránh chuyển đổi nếu chúng ta có thể giảm xuống còn 4GB? 2GB?