2010-11-21 24 views
8

người ghi mã nguồngọi cho cái nhìn sâu sắc: kiểm soát sửa đổi và những chương trình

kiểm soát sửa đổi được sử dụng để ghi lại những thay đổi trong mã nguồn

công cụ mã nguồn quá trình và tạo ra những thứ máy có thể đọc (exec , libs, mã GUI, v.v.)

mỗi lần tôi muốn lưu một bản sao của đầu ra công cụ '' (ví dụ: lưu thực thi bản phát hành beta cho ARM). tôi có thể lưu bằng tay công cụ công cụ ' cho nó một cái tên phản ánh điểm trong lịch sử kiểm soát sửa đổi (ví dụ: sử dụng tên thẻ). điều này có vẻ khó xử và dễ bị lỗi.

tôi muốn hiểu biết của bạn vào 2 điều:

  1. gì là những ưu/nhược điểm của việc sử dụng kiểm soát sửa đổi để ra cửa hàng công cụ tạo tại các vị trí cụ thể trong đồ thị lịch sử sửa đổi? bạn sử dụng công cụ nào không phải là RCS thay thế?

  2. trong lanh lợi, git, cách tốt nhất để đưa ra công cụ được tạo ra trong các phiên bản cụ thể và không phải người khác

+1

Xem http://stackoverflow.com/questions/3927571/for-binary-files-should-i-use-bfiles-or-bigfiles/3928194#3928194 hoặc http://stackoverflow.com/questions/3990449/ i-muốn-để-riêng-nhị phân-files-media-từ-my-code-kho-là-it-worth-it/3994369 # 3994369 cho người mới bắt đầu. – VonC

Trả lời

8

Tôi tin rằng mã nhị phân không nên được lưu trữ cùng với mã nguồn của họ trong kiểm soát phiên bản là gì.

Nhược điểm:

  • nó khuyến khích thực thi kém xây dựng trong các dự án lớn. Cách thực hành tốt nhất là tự động hóa hoàn toàn bản dựng đầy đủ của bạn (không chỉ biên dịch nguồn, mà còn chạy thử nghiệm tự động, bao bì tài liệu, tạo ra một thiết lập etcetera). Cam kết cho phép bạn bỏ qua điều đó: "chỉ cần thực hiện việc xây dựng cho các phần đã thay đổi theo cách thủ công".
  • chậm cập nhật và cam kết
  • cần để đối phó với các cuộc xung đột trên các tập tin nhị phân mỗi lần bạn cập nhật sau khi làm một xây dựng
  • cam kết mà mã nguồn thay đổi nhưng không phải là mã nhị phân tương ứng sẽ gây ra sự nhầm lẫn giữa các nhà phát triển. Làm thế nào để bạn phát hiện ra rằng có một sự không phù hợp?
  • svn update sẽ cập nhật dấu thời gian của các tệp nhị phân của bạn, gây nhầm lẫn cho các công cụ xây dựng của bạn mà sẽ cho rằng các tệp nhị phân có lỗi mới hơn thay đổi mã nguồn của bạn.
  • nó sử dụng nhiều không gian đĩa hơn trong kho lưu trữ. (Điều này có thể không đáng kể tùy thuộc vào dự án của bạn.)

Nói chung, tôi nghĩ bạn nên tránh cam kết bất kỳ thứ gì được tạo tự động theo cách xác định từ các tài nguyên được phiên bản khác. Không có dự phòng -> không có cơ hội cho sự không thống nhất.

Thay vào đó, hãy sử dụng máy chủ tích hợp liên tục để tự động xây dựng lại (và chạy thử nghiệm) trên từng cam kết. Hãy để máy chủ xây dựng này xuất bản các tệp nhị phân ở đâu đó (bên ngoài SVN) nếu cần, giống như một thư mục được chia sẻ trên mạng.

+0

+1 cho lược đồ "Thiết lập xây dựng + lưu trữ hàng đêm" –

4

Tôi khuyên bạn không nên trộn các tệp nhị phân với DVCS nói riêng (chẳng hạn như git và Mercurial). Lý do chính là: bất kỳ tệp không hợp nhất nào cũng là một vấn đề đối với DVCS.DVCS về cơ bản dựa vào việc hợp nhất các tập tin chất lượng cao để khái niệm DVCS hoạt động (xem this discussion on binary files in git).

Tôi đồng ý rằng tệp nhị phân đáng lưu trữ. Nhưng chúng có thể được lưu trữ ở một nơi khác với hệ thống kiểm soát phiên bản nguồn của bạn. Có lẽ một máy chủ có quyền truy cập ghi được kiểm soát. Có lẽ riêng biệt kho lưu trữ tập trung VCS, chẳng hạn như Subversion, nếu bạn muốn bảo toàn tất cả lịch sử.

Để tránh sự phân tách như vậy "khó xử và dễ bị lỗi" như bạn nói, hãy thử tự động hóa nó càng nhiều càng tốt. Thực hiện một quy trình xây dựng tự động để đảm bảo nguồn được phiên bản/gắn thẻ, thực hiện xây dựng hoàn chỉnh và đặt đầu ra (được đặt tên, phiên bản, gắn thẻ, v.v.) vào cửa hàng được chỉ định.

Các vấn đề liên quan