Có đúng không khi yêu cầu những người đóng góp từ chối yêu cầu kéo của họ trên github


25

Tôi duy trì một repo github tương đối phổ biến.

Khi một yêu cầu kéo là tốt để hợp nhất, tôi thường yêu cầu tác giả khởi động lại nó thành một cam kết duy nhất trước khi tôi hợp nhất nó (đặc biệt là khi có nhiều chỉnh sửa nhỏ).

Đây có phải là thực hành git tốt? Đây có phải là nghi thức GitHub tiêu chuẩn / chấp nhận?

Vì vậy, một số lợi ích:

  • Tôi nhận được một lịch sử cam kết sạch đẹp trong nhật ký cam kết
  • Tôi không cần phải thay đổi bản thân
  • Nó ủy thác một số công việc

Một số nhược điểm có thể có:

  • Tôi không chắc đây có phải là nghi thức tốt không
  • Tôi không chắc đây có phải là một thực hành tốt hay không
  • Tôi thường đã yêu cầu một vài thay đổi khác - đây là một thay đổi nữa và tôi không muốn làm nản lòng những người đóng góp.

1
Bạn có thể mô tả một số lợi ích và nhược điểm bạn thấy khi thực hiện quy trình theo cách này không?
Alex Feinman

1
Một số lợi ích bổ sung và nhược điểm đáng xem xét. tốt: git-bisect và các đảo ngược khác dễ dàng hơn khi mọi cam kết tạo ra trạng thái có thể xây dựng hoặc hoàn thành, và cách tiếp cận này là một cách đơn giản để đảm bảo điều đó. xấu: những thay đổi nhỏ với các thông điệp cam kết đơn giản được đưa vào các cam kết lớn. EG "Đã thay đổi một dòng này để sửa lỗi góc tương tự" có thể được đưa vào "Thêm tính năng foo, danh sách thay đổi lớn ". Điều này làm cho việc tìm lý do cho một thay đổi cụ thể khó hơn một chút.
Gankro

1
Không có gì sai với việc thiết lập các tiêu chuẩn. Chỉ cần làm cho nó rõ ràng trả trước những gì được mong đợi. Ví dụ: symfony.com/doc/cản/contribution/code/patches.html Cuộn xuống Bước 3: Gửi Bản vá của bạn
Cerad

6
@Granko: "Rebase" và "rebase thành một cam kết duy nhất" là hai vấn đề riêng biệt.
Matthew Scharley

2
Nếu một người đóng góp được yêu cầu làm điều này, họ có nên ghi đè lên nhánh của yêu cầu kéo git push -fkhông?
Flimm

Câu trả lời:


16

Theo như Git có liên quan, đó là một cuộc chiến thần thánh cho dù bạn chỉ nên hợp nhất các nhánh hoặc rebase cam kết trên phiên bản mới nhất của nhánh bạn đang sáp nhập. Có rất nhiều cuộc trò chuyện về cái nào tốt hơn nếu bạn tìm kiếm nhanh trên Lập trình viên .

Đối với nghi thức đằng sau nó, hãy giải quyết vấn đề này từ góc độ thực tế. Khi xử lý mã mới đến từ người khác, tốt nhất là luôn yêu cầu họ hợp nhất các thay đổi mới nhất từ ​​chi nhánh hoặc khởi động lại mã mới trước khi hợp nhất để đảm bảo hợp nhất sạch. Hãy nhớ rằng, họ đã viết mã để họ thường là những người đủ điều kiện nhất để đối phó với bất kỳ xung đột hợp nhất / rebase nào. Cá nhân tôi không thấy vấn đề gì với nó và luôn thấy yêu cầu này từ người khác. Đối với tôi, nếu không có xung đột thì tôi sẽ thường tự làm điều đó vì đây là bản cập nhật hai giây mà git có thể tự áp dụng. Nhưng nếu có xung đột thì tôi sẽ luôn yêu cầu tác giả ban đầu của mã tự giải quyết.

Ngoài ra, đối với GitHub (tối thiểu) cụ thể, họ sẽ hiển thị một liên kết đến CONTRIBUTINGtệp của bạn trên bất kỳ nỗ lực PR nào để tạo ra một vị trí tốt để phác thảo các kỳ vọng của bạn và nhiều dự án bao gồm rằng chúng sẽ chỉ hợp nhất cập nhật các chi nhánh.


+1 để đưa chủ nghĩa thực dụng vào cuộc thảo luận. Vâng, đó là toàn bộ quan điểm của nó. Có thể khá khó để giải quyết các xung đột phức tạp trong các yêu cầu kéo lớn, đặc biệt là khi một số lượng cam kết nhất định có liên quan. Đó là điểm mà tác giả ban đầu nên được yêu cầu để hòa nhập. Những xung đột dễ dàng không phải là vấn đề, chúng chưa bao giờ và sẽ không bao giờ.
JensG

1
+1 để thực sự cung cấp một câu trả lời và không chỉ bình luận!
Pablojim
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.