Sử dụng Hệ thống kiểm soát phiên bản phân tán như git và sử dụng máy thư mục dùng chung của bạn để lưu trữ kho lưu trữ tham chiếu. Đây là lý do tại sao:
Mỗi bản sao là một bản sao lưu
Nếu máy chủ ổ cứng gặp sự cố, mọi người đều có một bản sao, sẵn sàng để được triển khai trên một ổ đĩa hoặc máy chủ mới. Vì công ty của bạn không nghiêm túc về kiểm soát phiên bản, tôi cho rằng nó có thể khá giống với các bản sao lưu.
Tài liệu tham khảo chung
Có một kho lưu trữ chính với một nhánh chính cho phép biết phiên bản có từ cuối cùng. Điều này giải quyết "Bạn đã kiểm tra các thay đổi của mình so với phiên bản của Franck, nhưng bạn cũng có John's phải không? Và bạn đã hợp nhất chúng như thế nào?".
Cung cấp thoải mái hơn
Khách hàng muốn có phiên bản alpha ngày hôm nay? Vâng, bạn có thể kiểm tra xem chủ có đủ ổn định và vận chuyển không. Nếu không và bạn không có thời gian để sửa nó, hãy quay ngược thời gian và lấy phiên bản cũ hơn nhưng ổn định hơn. Bạn không thể làm điều đó nếu bạn chỉ có phiên bản mới nhất.
Quay ngược thời gian và sửa chữa sai lầm của bạn
Hợp nhất thủ công của bạn có vấn đề mà bạn chỉ thấy sau vài ngày, nhưng bạn đã ghi đè lên nội dung của các thư mục được chia sẻ của bạn? Nếu không có VSC, bạn không có lịch sử nên bạn không thể dễ dàng quay lại điểm mà bạn có thể kiểm tra các lỗi bạn đã mắc phải và sửa chúng. Mã không giống như một bức tranh, nó giống như một bộ phim: nó phát triển theo thời gian. Bạn có thể trích xuất một hình ảnh từ một bộ phim. Bạn không thể trích xuất một bộ phim từ một hình ảnh.
Xác định vị trí lỗi dễ dàng hơn
Một lỗi xuất hiện nhưng bạn không thực sự nhận thấy tại thời điểm nó được giới thiệu, vì vậy bạn không thể sửa nó trong khi mã "nóng". Bây giờ bạn không thực sự biết thay đổi nào đã giới thiệu nó, vì vậy nó có thể đến từ một số vị trí khác nhau trong mã. Sẽ mất hàng giờ chỉ để tìm nơi để tìm. Với git, bạn có thể vừa phát triển một thử nghiệm để biết liệu lỗi có xảy ra trên một phiên bản cụ thể hay không và sử dụng git bissect
để tìm ra cam kết chính xác đã đưa ra lỗi. Thay vì tìm kiếm hàng ngàn dòng mã, giờ đây bạn biết nó nằm trong 10 dòng thay đổi và bạn có thể giữ thử nghiệm trong bộ kiểm tra của mình để đảm bảo lỗi không được giới thiệu lại.
Mỗi nhà phát triển chịu trách nhiệm về công việc của mình
Nếu bạn là trưởng nhóm và không có VCS, rất có thể bạn sẽ phải thực hiện công việc bẩn thỉu, sáp nhập. Nếu bạn tự làm, có lẽ bạn không biết mọi thứ về tất cả các thay đổi và có thể gây ra lỗi. Ngược lại, nếu bạn luôn yêu cầu những người đã viết mã để thu thập với bạn mỗi khi có mã để hợp nhất, thì đó là lúc họ sẽ không sử dụng để tạo mã mới.
Với một VCS, trong một quy trình công việc đơn giản, nhà phát triển chỉ phải chăm sóc công việc của mình và một nguồn thay đổi bên ngoài: nhánh chính. Có thể có 1 hoặc 100 người cam kết trong chi nhánh chính, điều đó cũng tương tự. Để có thể thúc đẩy những thay đổi của anh ấy / cô ấy, anh ấy / cô ấy sẽ phải điều chỉnh chúng theo những thay đổi mới nhất được thực hiện bởi những người khác. Có vẻ như mất nhiều thời gian hơn để đẩy mã, nhưng đó là bởi vì bạn cũng đang thực hiện việc hợp nhất, điều này sẽ mất thời gian.
Sự khác biệt là hợp nhất được thực hiện bởi người đã thực hiện các thay đổi, người biết mã đó tốt nhất vì anh ấy / cô ấy đã viết nó.
Ai đã viết mã đó?
Có lỗi ở đây, nhưng ai đã viết dòng mã cụ thể đó? Thật khó để nhớ, đặc biệt là nếu dự án kéo dài bảy tháng. git blame
sẽ nói cho bạn biết ai và khi nào dòng đó được viết, vì vậy bạn có thể hỏi đúng người, và không có "Tôi không nhớ việc viết đó".
Dự án ngày càng lớn
Khách hàng muốn nhiều tính năng hơn và bạn là một nhóm quá nhỏ, bạn sẽ cần một nhà phát triển khác. Làm thế nào để bạn quản lý sự phức tạp gia tăng mà không có VSC?
Thay đổi khẩn cấp
Khách hàng đã gọi và yêu cầu sửa lỗi nghiêm trọng cho sản xuất, nhưng bạn hiện đang làm việc trên một tính năng mới. Chỉ cần git stash
đặt các thay đổi của bạn sang một bên hoặc cam kết chúng trong một chi nhánh mới và đẩy các thay đổi và bạn đã sẵn sàng bắt đầu khắc phục khẩn cấp, mà không sợ mất công việc đang chờ xử lý.
Nó hoạt động 10 phút trước
Bạn đang thực hiện một số thay đổi cục bộ và một cái gì đó hoạt động 10 phút trước đã ngừng hoạt động. Nếu không có VCS, bạn sẽ nhìn chằm chằm vào mã hoặc tốt nhất, tạo một bản sao của phiên bản tham chiếu và tìm khác biệt để xem những gì bạn thay đổi. Đợi đã, tham chiếu đã thay đổi kể từ khi tôi bắt đầu làm việc, vì vậy tôi không thể khác được nữa. Và tôi đã không nghĩ sẽ giữ một bản sao nguyên sơ của mã mà tôi dựa trên những thay đổi của mình.
Với một VCS, bạn chỉ cần làm một cái gì đó như git diff
ngay lập tức và thay đổi so với phiên bản đúng của mã mà bạn dựa vào.
Tôi phải giữ nhật ký gỡ lỗi của mình
Vì vậy, bạn là một kẻ xấu và không sử dụng đăng nhập? Bạn đã phải rắc printf
s trong tất cả các cơ sở mã của mình cho đến khi bạn tìm thấy tất cả những phần của lỗi khó chịu đó? Bây giờ bạn đã tìm thấy một cái, sửa nó, nhưng muốn giữ mã gỡ lỗi được làm cẩn thận của bạn để sửa các vấn đề còn lại.
Nếu không có VCS, bạn cần phải sao chép các tệp, mở rộng mã gỡ lỗi (có thể thêm một số lỗi chỉnh sửa), đẩy mã đó và đặt lại các tệp đã sao lưu của bạn. Ồ, nhưng có vẻ như một số mã gỡ lỗi đã vào.
Với git, bạn chỉ cần git add --patch
chọn vài dòng mã bạn muốn đưa vào cam kết của mình, và có thể cam kết chỉ đó. Sau đó, bạn tiếp tục công việc của bạn và vẫn có mã gỡ lỗi của bạn. Bạn không phải chạm vào mã, do đó không có lỗi sao chép / dán.
Quả bóng lớn
Không có VCS, mọi người làm việc về phía họ và cung cấp cho bạn một loạt các thay đổi, đôi khi không liên quan. Khi có quá nhiều mã để kiểm tra, thật khó để tìm ra lỗi.
Một VCS sẽ cho phép bạn thực hiện các thay đổi nhỏ, tăng dần và cung cấp cho bạn một thay đổi. Các changelog là điều cần thiết: người phải nói có lý do tại sao họ đang làm thay đổi, chứ không phải những gì là sự thay đổi (những gì câu hỏi được trả lời alredy bởi sự thay đổi mã chính nó). Điều này có nghĩa là khi bạn đang kiểm tra một số mã của một tính năng mới chẳng hạn, bạn sẽ không phải đọc nhiều thay đổi hỗn hợp không liên quan như các lỗi không liên quan. Điều này giúp tập trung vào mã bạn quan tâm.
Nếu tôi cho bạn 100 củ khoai tây 1, và một quả bị thối, bạn sẽ thấy ngay lập tức. Bây giờ nếu tôi đổ 100 củ khoai tây trước mặt bạn và yêu cầu bạn tìm cái khoai tây thối, thì đó không phải là nhiệm vụ tương tự.
Lõm
Hy vọng bạn có chính sách phong cách mã hóa tốt, nếu không những thay đổi thụt đầu dòng sẽ khiến bạn phát điên nếu bạn hợp nhất bằng tay. Chắc chắn, bạn có thể bỏ qua khoảng trắng trong các thay đổi (nhưng không phải bằng ngôn ngữ khi số lần thụt lề, như Python). Nhưng sau đó bạn sẽ nhận được mã trông kỳ lạ khó đọc.
Bạn là trưởng dự án
Nếu bạn là người lãnh đạo, điều này có nghĩa là bạn sẽ nhận lỗi nếu mọi thứ không hoạt động. Nếu bạn không thể thoải mái với tình huống này bởi vì sếp của bạn vẫn không thể hiểu rằng sử dụng đúng công cụ cho đúng công việc là xứng đáng, thì ít nhất, tôi sẽ từ chối trở thành người lãnh đạo của một thất bại có thể dự đoán được.