Các đối số sẽ kiểm tra các tệp nhị phân khi đăng nhập vào SCM


10

Tôi làm việc cho một công ty chủ yếu xây dựng các ứng dụng Java và tôi đang cố gắng thuyết phục mọi người ngừng kiểm tra các tệp nhị phân (phụ thuộc và sản phẩm cuối cùng) cho SCM.

Họ biết đó là một thực tế tồi tệ nhưng họ nghĩ rằng "nó hoạt động" và nó không thực sự là vấn đề ngay cả khi nhiều người biết về Maven và các công cụ khác để xây dựng ngoài Ant. Cả PM và lập trình viên (khoảng 50 người) đều sẵn sàng lắng nghe mọi lập luận chống lại và thậm chí thừa nhận rằng đó là sự lãng phí không gian dự phòng nhưng tôi muốn thực sự thuyết phục vì thay đổi thói quen sẽ tốn rất nhiều công sức. Những đối số nào bạn sử dụng để hỗ trợ một sự thay đổi?

Chỉnh sửa: Được rồi, thật hợp lý khi phân biệt giữa các tệp gần như không thay đổi, như phụ thuộc và tệp được tạo. Mặc dù vậy, tôi quan tâm đến lý do chống lại cái sau.

Câu trả lời:


7

Dung lượng lưu trữ rẻ, và vì vậy đó không phải là một lý lẽ rất thuyết phục về lý do tại sao bạn nên hoặc không nên kiểm tra tệp.

Thay vào đó, Bạn có thể kháng cáo cho mục đích của SCM. Mỗi tệp được theo dõi bởi SCM đại diện cho một số nhu cầu để quản lý các thay đổi song song, phân tán mà nhóm của bạn đang thực hiện. Không ai trong số đó thực sự rõ ràng cho đến khi hai thành viên trong nhóm cố gắng thay đổi cùng một tệp. Giải quyết những thay đổi đó là những gì SCM thực sự dành cho, ngăn chặn tình cờ ghi đè lên công việc của một nhà phát triển khác và hy vọng, tự động hóa quá trình hợp nhất những thay đổi đó.

Hợp nhất các tệp nhị phân thường là một thách thức thực sự, bởi vì không có cách nào lành mạnh cho một công cụ hợp nhất chung để đoán cách một tệp nhị phân được hợp nhất sẽ hoạt động. Nó không thể biết đủ về cách các chỉ mục hoặc con trỏ bù trong tệp hoạt động trừ khi được thiết kế đặc biệt để nhận ra loại tệp cụ thể đó.

Điều đó có nghĩa là tùy thuộc vào nhà phát triển để hợp nhất tệp nhị phân bằng tay và sau đó cho SCM biết rằng tệp đã được hợp nhất. Vì đó là một nhà phát triển, việc hợp nhất có thể không thực sự bao gồm tất cả các thay đổi của cả hai lần đăng ký trước và vì tệp là nhị phân, không có cách nào tự động để xác minh hợp nhất.

Đối với các định dạng nhị phân thực sự đại diện cho các nguồn dự án, chẳng hạn như tài sản nghệ thuật, đây là một bước không may, nhưng cần thiết. Tuy nhiên, xây dựng kết quả đầu ra không phải là nguồn. Không cần phải hợp nhất chúng, bởi vì các nguồn có thể được hợp nhất và kết quả đầu ra của bản dựng có thể được tạo lại. Theo dõi và quản lý những thay đổi này là 100% chất thải. Nó lãng phí tài nguyên của SCM, mặc dù không quá nhiều, nhưng nó cũng lãng phí thời gian của nhà phát triển để vượt qua các thất bại hợp nhất giả. Thời gian của nhà phát triển rất tốn kém, và bất cứ điều gì khiến nó lãng phí đều là ung thư.

Mặt khác, có một trường hợp cụ thể trong đó các đầu ra xây dựng nên được lưu trữ. Bất kỳ phiên bản nào của dự án đã từng được vận chuyển hoặc triển khai có lẽ nên được giữ lại, vô thời hạn. Có một bản sao chính xác, byte cho byte của bản dựng thực tế mà khách hàng đang gặp vấn đề có thể giúp hỗ trợ khách hàng đó dễ dàng hơn nhiều, vì bạn sẽ có phiên bản chính xác mà anh ta có.

Bản sao lưu đó có lẽ không nên ở cùng một kho lưu trữ với mã nguồn, vì chúng thường sẽ tuân theo các lịch trình khác nhau và có các cấu trúc cơ bản khác nhau.


10

Phụ thuộc, ngay cả ở dạng nhị phân, nên được kiểm tra để khi người khác kéo dự án xuống, nó chỉ hoạt động. Mối quan tâm chính không phải là loại tệp, mà là cách tệp được tạo. Nguyên tắc nhỏ mà tôi sử dụng là nếu nó có thể được tạo bằng tệp khác, thì nó không được kiểm tra - điều này có nghĩa là tài liệu được tạo tự động, tệp nhị phân mà tôi tạo, v.v.


2

Một trong những lợi thế chính của việc sử dụng SCM là bạn có thể xây dựng lại hệ thống của mình từ bất cứ lúc nào trong quá khứ. Vì vậy, không có điểm nào lưu trữ bản dựng cuối cùng của bạn trong SCM của bạn bởi vì bạn chỉ có thể kiểm tra số sửa đổi và xây dựng nó.

Bạn đề cập đến các phụ thuộc ... SCM của bạn nên được thiết lập để bạn có thể thực hiện kiểm tra sạch cho một máy mới (với môi trường dev), nhấn build và bạn sẽ có thể xây dựng hệ thống của mình mà không cần phải cài đặt bất cứ thứ gì khác. Vì vậy, giữ phụ thuộc nhị phân trong SCM của bạn là một ý tưởng tốt. Thư viện hiếm khi thay đổi nên họ sẽ không chiếm nhiều chỗ.

Hầu như không ai làm điều này.


Ok, tôi đồng ý: sự phụ thuộc hiếm khi thay đổi. Nhưng tệp WAR 20Mb với một dòng mã nguồn đã thay đổi không xứng đáng được đăng ký.
Vào

3
Tại sao không? Bạn sẽ hết dung lượng đĩa? Nếu bạn không có nguồn và đó là một phụ thuộc bắt buộc thì bạn không có lựa chọn nào khác, nếu bạn làm như vậy thì nó không được tính là nhị phân và bạn có thể xây dựng nó khi bạn cần.
Henry

0

Có vẻ dư thừa để bao gồm cả tệp nguồn và tệp đối tượng (tệp nguồn rõ ràng là bắt buộc). Ngoài việc không cần thiết, các tệp đối tượng có thể chiếm rất nhiều dung lượng. Nếu công ty của bạn đang sử dụng SCM phân tán (Git, Hg, Bzr) thì các tệp nhị phân đó phải được sao chép và lưu trữ giữa tất cả các nhà phát triển.

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.