Tại sao sử dụng yêu cầu kéo thay vì hợp nhất


16

Lợi thế của việc sử dụng các yêu cầu kéo thay vì chỉ đơn giản là hợp nhất một nhánh thành chủ mà không có một là gì? Đặc biệt trong một nhóm mà tất cả các nhà phát triển có toàn quyền truy cập vào chủ.


1
Yêu cầu kéo cho phép người quản lý dự án quyết định xem họ có muốn hợp nhất chi nhánh thành chủ hay không.
Robert Harvey

Trong thực tế, nếu tất cả các nhà phát triển có quyền truy cập vào master, nó có tạo ra sự khác biệt không?
Ngỗng

2
@Goose Mã xem lại?
mẫu

4
Chúng tôi không sử dụng Pull Requests tại cửa hàng của chúng tôi. Sự hiểu biết của tôi về Pull Requests là chúng chủ yếu được sử dụng trên Github, nơi bạn có một dự án nguồn mở công khai. Là người quản lý dự án của một dự án như vậy, thay vì cho toàn bộ thế giới tự do kiểm soát dự án của bạn để thực hiện các thay đổi tùy ý (và có thể gây hại), thay vào đó, bạn yêu cầu mọi người gửi thay đổi của mình dưới dạng yêu cầu kéo, để bạn có thể xem xét thay đổi của chúng trước khi bạn hợp nhất chúng vào nhánh chính.
Robert Harvey

4
Bởi vì đó là cách DVCS không bao giờ thực hiện trong một bước đơn giản, bạn có thể làm gì trong 3 hoặc 4 bước phức tạp
Mason Wheeler

Câu trả lời:


23

Yêu cầu kéo cung cấp cho kiểm tra và số dư, ngay cả khi bất cứ ai có thể đẩy để làm chủ.

Ưu điểm lớn nhất là họ cung cấp một cơ hội để xem xét mã. Người chịu trách nhiệm thực hiện việc kéo có thể xem mã và kiểm tra và đảm bảo rằng họ đáp ứng bất kỳ loại hướng dẫn nào mà tổ chức hoặc nhóm có. Ngoài ra còn có các lý do khác để xem xét mã - giáo dục, tìm ra khuyết điểm hoặc cải tiến, đào tạo chéo nhóm trên hệ thống, giúp người kiểm tra có cái nhìn toàn cảnh về hệ thống.

Nếu người thực hiện kéo đã quen thuộc với kiến ​​trúc của hệ thống, thì họ có thể đảm bảo rằng các thay đổi phù hợp với tầm nhìn kiến ​​trúc của hệ thống, đặc biệt là nếu toàn bộ nhóm có thể không có tầm nhìn dài hạn.

Phát triển thói quen sử dụng các yêu cầu kéo cũng có thể giúp nhóm của bạn nếu bạn quyết định trong tương lai rằng toàn bộ nhóm không nên có quyền truy cập vào chủ. Nếu nhóm của bạn phát triển lớn hơn và đặc biệt là nếu bạn có các thành viên nhóm mới biết về sản phẩm và / hoặc mới sử dụng Git, việc không cho họ quyền truy cập vào chủ có thể an toàn hơn cho tính toàn vẹn của sản phẩm.


5

Đã thực hiện cả tính năng phân nhánh và nhánh + yêu cầu kéo Tôi nghĩ rằng yêu cầu kéo mang lại ít lợi thế khi tất cả các bạn đang phát triển trong cùng một nhóm hoặc công ty

Họ cung cấp một cơ chế và giao diện tốt để xem xét mã, nhưng cũng làm phức tạp và làm chậm toàn bộ quá trình 'hoàn tất công việc'. Đặc biệt là nếu bạn có nhiều tính năng nhỏ, mỗi tính năng chờ xem xét, hợp nhất và sau đó tất cả các tính năng khác được hợp nhất lại với chủ để kéo các thay đổi, v.v. .

Đã nói rằng bạn có thể thực hiện các yêu cầu kéo giữa các chi nhánh trên cùng một repo. Bạn không phải rẽ nhánh, hoặc có các quyền khác nhau.

Ngoài ra, bạn phải xem xét toàn bộ phương pháp và quy trình làm việc của bạn. Bạn cũng có một hệ thống bán vé, CI, kiểm tra chấp nhận tự động, vv? Các đánh giá mã của bạn có cung cấp một kiểm tra quan trọng trước khi các mã được phát hành không, hay chúng chỉ là các bài tập về con dấu cao su được thực hiện dự phòng bởi các kiểm tra khác trong quy trình làm việc của bạn?


4

Có một quan sát gọi là Luật Conway, trong đó nêu rõ:

các tổ chức thiết kế hệ thống ... bị hạn chế để tạo ra các thiết kế là bản sao của cấu trúc truyền thông của các tổ chức này.

Điều này có liên quan gì với các yêu cầu kéo? Yêu cầu kéo là một kênh liên lạc chính tại một điểm nối quan trọng cho mã của bạn. Chúng cung cấp cơ hội để xem xét, kiểm tra tự động và cải tiến trước khi mã chuyển sang các giai đoạn thử nghiệm và sản xuất tiếp theo, trong đó những thay đổi đó khó khăn hơn nhiều để sao lưu và lãng phí nhiều thời gian hơn của nhiều người.

Tương tự, Luật của Conway đề nghị nếu bạn muốn có một kiến ​​trúc microservice với các khu vực trách nhiệm tự trị được phân tách rõ ràng và các giao diện được xác định rõ, thì các kênh truyền thông của tổ chức của bạn sẽ phản ánh kiến ​​trúc bạn muốn đạt được. Điều đó có nghĩa là các nhóm nhỏ 5-10 người nên có quyền truy cập cam kết trực tiếp vào bất kỳ dịch vụ vi mô cụ thể nào và bất kỳ ai ngoài nhóm đó sẽ được yêu cầu thực hiện yêu cầu kéo. Điều này đảm bảo những người quen thuộc nhất với microservice là những người đang xem xét và tư vấn về nó.

Khi bạn có một tổ chức lớn với tất cả mọi người có quyền truy cập trực tiếp vào mọi nơi, các kênh liên lạc ít kháng cự nhất của bạn sẽ thiết lập bạn để tạo ra một quả bóng lớn của kiến ​​trúc bùn.

Yêu cầu kéo chỉ cảm thấy như một gánh nặng nếu bạn không đánh đổi bất cứ điều gì đổi lại. Tôi đã làm việc trong môi trường mà tôi không thể hoàn thành bất cứ điều gì trong một tuần vì bản dựng luôn bị hỏng và tôi đã làm việc trong môi trường có người gửi yêu cầu kéo và tôi thậm chí không phải xem lại vì họ đã phá vỡ xây dựng CI, và tôi nói với bạn, chúng đáng giá từng giây.


1

Karl Bielefeldt hoàn toàn chính xác. Tôi sẽ thêm: đó là tất cả về chất lượng.

Nhiều cửa hàng (hầu hết?) Không có quy trình chính thức để quản lý sự phát triển, điều này dẫn đến: "Tôi đã làm việc trong môi trường mà tôi không thể làm được gì trong một tuần vì việc xây dựng luôn bị hỏng và tôi đã làm việc trong những môi trường mà ai đó gửi yêu cầu kéo và tôi thậm chí không phải xem lại vì họ đã phá vỡ bản dựng CI và tôi nói với bạn rằng, chúng đáng giá từng giây. "

Nó thực sự đáng giá nỗ lực.


Cảm ơn bình luận của bạn. Tôi không chắc tại sao lại áp dụng điều này như một câu trả lời cho câu hỏi.
Ngỗng

Đây là câu trả lời duy nhất đề cập đến CI trước khi hợp nhất.
Basilevs

0

Chúng tôi sử dụng các yêu cầu kéo để xem xét mã - không nên sáp nhập mã vào nhánh phát triển chính (thường là "phát triển" trong trường hợp của chúng tôi, nhưng đôi khi là "chính") mà không cần thông qua yêu cầu kéo. Chúng tôi không thực thi điều này bằng các điều khiển kho lưu trữ, nhưng đó là vì chúng tôi không phải - các nhà phát triển của chúng tôi đủ trưởng thành để không lạm dụng quy trì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.