Chiến lược kiểm tra kiểm soát nguồn tốt cho các nhiệm vụ lớn là gì?


9

Nguyên tắc chung là giữ cho các đăng ký nhỏ và thường xuyên đăng ký. Nhưng đôi khi nhiệm vụ đòi hỏi những thay đổi lớn đối với khung cơ bản. Sau đó kiểm tra trước khi hoàn thành nhiệm vụ sẽ phá vỡ dự án cho đến khi bạn kiểm tra xong công việc.

Vì vậy, những chiến lược nào mọi người sử dụng để giảm nguy cơ mất việc, hoặc quyết định điều gì đó bạn đang làm là cách tiếp cận sai, sau đó thay đổi suy nghĩ của bạn sau khi xóa mã và thử một cách tiếp cận khác?

Khi tôi có thể, tôi sẽ kiểm tra một nửa công việc đã hoàn thành, hoặc nếu nó biên dịch và không có gì đang sử dụng các tệp mới, tôi sẽ kiểm tra chúng. Thay đổi càng lớn tôi càng có khả năng phân nhánh dự án và sau đó hợp nhất lại khi tôi có mọi thứ hoạt động trở lại. Một tùy chọn khác nếu hệ thống kiểm soát nguồn cho phép là các bộ kệ, về cơ bản là các nhánh nhỏ. Vì vậy, khi tôi kết thúc một ngày hoặc đi đến điểm quyết định, tôi sẽ tạm gác những thay đổi của mình, và sau đó nếu điều gì đó thảm khốc xảy ra, hoặc tôi muốn quay lại thời điểm đó, tôi có thể.


Những hệ thống kiểm soát nguồn mà bạn quen thuộc?

@Thorbjorn: Svn, Perforce và Team Foundation Server. Tất cả họ đều có điểm cộng và điểm trừ
Dominique McDonnell

Câu trả lời:


13

Tôi sử dụng git, vì vậy câu trả lời của tôi là "chi nhánh". Chi nhánh và cam kết bữa ăn khi bạn hoàn thành các bit khác nhau.

Đẩy các cam kết của bạn ngược dòng khi bạn hài lòng, vì vậy đồng nghiệp của bạn có thể xem xét các thay đổi mà không làm gián đoạn thân cây.

Khi mọi người hài lòng với mã, hợp nhất và bạn đã hoàn tất!

(Những gì tôi có xu hướng làm cho các nhánh tương đối dài là định kỳ hợp nhất thân cây (chủ, theo thuật ngữ git) vào nhánh của tôi, vì vậy hai nhánh không phân kỳ quá triệt để.)


1
Bạn không cần phải đủ điều kiện với "Tôi sử dụng git" - Tôi đề nghị rằng câu trả lời là dừng toàn bộ chi nhánh. Điều quan trọng là đảm bảo rằng nhánh tính năng được cập nhật với thân cây, điều đó có nghĩa là hợp nhất trong các thay đổi từ thân cây thường xuyên và hợp lý.
Murph

Tôi đã không sử dụng phân nhánh với lật đổ, nhưng tôi nói rằng nó rất dễ dàng để phân nhánh trong git. Tôi phân nhánh bất cứ khi nào tôi có một tính năng không tầm thường. Rõ ràng, điều đó không thực tế với lật đổ, do đó trình độ của tôi. Tôi rất vui khi biết tôi thực sự không cần phải đủ điều kiện.
Frank Shearar

Vì vậy, về cơ bản, chiến lược tốt nhất là phân nhánh ngay khi kích thước của nhiệm vụ không tầm thường và hợp nhất thân cây với nhánh càng nhiều càng tốt để giữ cho nó giống như kiểm tra bình thường của thân cây, với lợi ích kiểm soát nguồn của giai đoạn trung gian.
Dominique McDonnell

1
@Dominic Về cơ bản, có, nhưng tôi lấy "kích thước là không tầm thường" có nghĩa là "bất cứ điều gì nhiều hơn một dòng mà một người ngang hàng có thể thấy ngay là đúng hay sai".
Frank Shearar

3

Tôi nghĩ rằng câu trả lời sẽ thay đổi dựa trên loại hệ thống kiểm soát phiên bản nào bạn đang sử dụng: tập trung (ví dụ: lật đổ) hoặc phân phối (ví dụ git). Tôi không có bất kỳ trải nghiệm thực tế nào với việc sử dụng hệ thống kiểm soát nguồn phân tán, vì vậy câu trả lời của tôi dựa trên những gì chúng tôi làm với lật đổ.

Nếu có một sự thay đổi lớn trong tiến trình sẽ phá vỡ việc xây dựng thân cây của chúng tôi trong một khoảng thời gian, hoặc điều đó thực sự sẽ phá vỡ phần còn lại của đội theo một cách khác, thì chúng tôi sẽ tạo ra một chi nhánh. Mặc dù vậy, tôi sẽ nói rằng bạn nên làm nhiều nhất có thể để tránh phải làm điều đó - hầu hết các thay đổi có thể song hành với phần còn lại của mã với ít nỗ lực. Ví dụ: bạn có thể kích hoạt các đường dẫn mã vào mã mới (với các câu lệnh if đơn giản hoặc bạn có thể đưa các phiên bản mới dựa trên cài đặt cấu hình nếu bạn đang sử dụng khung DI). Sau đó, khi bạn hoàn thành, bạn chỉ cần thay đổi cấu hình thành phiên bản mới, kiểm tra mọi thứ, xóa mã không sử dụng, kiểm tra lại và cuối cùng xóa cài đặt cấu hình. Bạn không thể luôn luôn làm điều đó nhưng vì chi phí duy trì chi nhánh tôi nghĩ bạn nên luôn luôn kiểm tra nếu điều đó là có thể.

Nếu bạn làm chi nhánh tôi nghĩ rằng lỗi mà tôi thường thấy mọi người mắc phải là không giữ chi nhánh của họ cập nhật với thân cây. Bạn nên liên tục hợp nhất các thay đổi từ thân cây vào chi nhánh của bạn trong khi nó tồn tại để khi bạn hoàn thành việc hợp nhất ngược lại mọi thứ trở lại là khá nhỏ.


2

Trong nhóm ngoài, chúng tôi sử dụng lật đổ và chúng tôi thường thực hiện các thay đổi nhỏ trực tiếp vào thân cây. Đối với các tác vụ lớn hơn, nhà phát triển làm việc trên nó thường tạo ra một nhánh riêng, được hợp nhất vào thân cây sau khi hoàn thành. Sau đó, chi nhánh tư nhân sẽ bị xóa. Đương nhiên, trong khi chi nhánh tư nhân tồn tại, chủ sở hữu của nó nên kiểm tra thường xuyên.

Chúng tôi cố gắng tránh để các chi nhánh tồn tại lâu dài và hợp nhất giữa các chi nhánh, bởi vì điều đó đòi hỏi phải có sổ sách cẩn thận. Thay vào đó, chúng ta có các nhánh tương đối ngắn chỉ được sáp nhập trở lại thân cây một lần và bị xóa ngay sau đó.

Và chúng tôi có một quy tắc rằng không có gì có thể được cam kết hoặc sáp nhập vào thân cây cho đến khi ít nhất một người khác xem qua các thay đổi và chấp thuận chúng.


0

Giống như nhận xét thông thường từ người dùng máy chủ SQL "nó phụ thuộc"

Nếu bạn có thể, tôi sẽ đề nghị bạn tạo một nhánh trên mã để bạn có thể tiếp tục áp dụng các đăng ký nhỏ trong công việc của bạn. Sau khi hoàn thành, thực hiện hợp nhất backinto thân cây chính.

Vâng, có một số cơ hội để nhân đôi nỗ lực làm việc này. nhưng ít nhất bạn sẽ duy trì một vệt công việc mà bạn có thể phục hồi nó chứng tỏ đó là một ngõ cụt.

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.