Tôi có nên lưu trữ các tệp kiểm tra trong kiểm soát nguồn?


8

Tôi có một số tệp thử nghiệm (lớn) cần được duy trì. Điều này có nghĩa là truy cập vào lịch sử của họ là một yêu cầu.

Những lợi ích

  • Bất kỳ nhà phát triển mới nào cũng nhận được toàn bộ bộ thử nghiệm chỉ với một git pull.
  • Lịch sử của các tập tin được sao lưu.
  • Các tập tin được sao lưu.

Hạn chế

  • Tăng rất lớn về kích thước của kho lưu trữ.
  • Tăng đáng kể kích thước tải xuống của các nhà phát triển mới sao chép kho lưu trữ.

Các thực hành tốt nhất để duy trì các tập tin thử nghiệm là gì?

Tôi có lưu trữ các tệp này trong kiểm soát nguồn không? Có sự thay thế nào không?


7
Bạn đã xem xét việc lưu trữ chúng trong một kho lưu trữ khác, kho lưu trữ sẽ chỉ được kéo khi thực sự cần thiết? Một mô hình con git có lẽ?
yannis

Nếu bạn quyết định không phiên bản các tệp thực tế, hãy lập phiên bản danh sách băm của các tệp để ít nhất bạn có thể xác nhận bạn có đúng tệp khi thử lặp lại các thử nghiệm.
Steve314

@YannisRizos Tôi thực sự thích ý tưởng về một mô hình con, cảm ơn.
sdasdadas

2
Nếu bạn có một số tệp thực sự lớn không thay đổi thường xuyên trong hỗn hợp, git annex cũng có thể thú vị. Nhưng đó là nói về các tập tin có thứ tự hàng trăm megabyte trở lên. Các tệp nhỏ hơn vẫn ổn chỉ được lưu trữ trong git ngay cả khi có nhiều tệp.
Jan Hudec

Câu trả lời:


13

Lưu trữ chúng trong kiểm soát nguồn. Những lợi ích bạn liệt kê đều là những lợi ích rất tốt. Khi bạn nói rằng làm điều này sẽ dẫn đến một kích thước "khổng lồ", bạn đang nói chuyện lớn đến mức nào? 100 gigabyte? Terabyte?

Nếu lưu trữ thực sự là một vấn đề lớn, bạn có thể nén các tệp, lưu trữ tệp zip trong kiểm soát nguồn và sau đó có một tập lệnh giải nén chúng khi các trường hợp thử nghiệm được chạy không? Bạn sẽ mất lịch sử chi tiết của từng tệp theo cách đó (trừ khi bạn có thể tìm thấy một công cụ sẽ giải nén và hiển thị lịch sử trong bộ nhớ), nhưng các nhà phát triển mới vẫn có quyền truy cập dễ dàng vào các tệp kiểm tra.

Tùy thuộc vào bản chất của dữ liệu thử nghiệm của bạn, bạn có thể có một tập lệnh để tạo tệp thử nghiệm. Điều này có thể hoạt động nếu bạn đang kiểm tra các hình ảnh rất lớn có thể được tạo theo quy trình (SQL chèn để điền vào cơ sở dữ liệu cũng có thể dễ dàng được tạo bởi chương trình hoặc tập lệnh), nhưng kỹ thuật này không áp dụng cho tất cả các loại dữ liệu thử nghiệm ...


7
Lưu trữ tệp zip trong kiểm soát nguồn sẽ dẫn đến lưu trữ được sử dụng nhiều hơn chỉ là văn bản, vì nó sẽ phải giữ các đốm nhị phân thay vì chỉ khác.
Daenyth

@Daenyth: Tôi đoán nó có thể phụ thuộc vào số lượng tệp có thể được nén - nếu chúng có thể được nén và chúng không thay đổi quá thường xuyên (vì vậy không có quá nhiều khác biệt) có thể đáng giá. Không thể nói chắc chắn mà không có chi tiết về các tập tin này.
Thất vọngWithFormsDesigner

1
Huge (trong trường hợp này) có nghĩa là 10 hoặc 100 GB.
sdasdadas

1
@sdasdadas: Hmm 100 GB có thể trở nên lớn theo thời gian ... nén có phải là một tùy chọn không? Hoặc tạo dữ liệu thử nghiệm với các tập lệnh nhỏ?
Thất vọngWithFormsDesigner

@FrustratedWithFormsDesigner Tôi đoán tôi luôn có thể nén chúng nếu nó vượt quá tầm tay. Một kịch bản thử nghiệm tạo ra loại thách thức điểm vì đây được coi là thử nghiệm "thế giới thực" - các kịch bản có xu hướng tạo ra dữ liệu giả định.
sdasdadas

5

Tôi sẽ lưu trữ chúng trong kiểm soát nguồn. Có bao giờ một trường hợp mà bạn muốn bộ thử nghiệm mà không có mã? Không có ý nghĩa. Đã bao giờ có trường hợp bạn muốn chỉnh sửa mã mà không cập nhật bộ kiểm tra chưa? Không nên có.

Nhược điểm 1 không phải là vấn đề với giá lưu trữ hiện nay và các hệ thống SCM hiện đại sẽ khiến hoạt động mạng không phải là vấn đề đáng lo ngại ngoài thiết lập ban đầu.

Nhược điểm của bạn 2 dường như không nên nhiều. Tần suất bạn có các nhà phát triển mới tham gia dự án này mà thời gian nhân bản ban đầu trở thành một vấn đề?


2

Tôi sẽ lưu trữ chúng trong một repo khác. Những nhược điểm bạn đề cập là không thể tránh khỏi nếu bạn có một bộ kiểm tra cồng kềnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.