Kho lưu trữ của tổ chức Github, các vấn đề, nhiều nhà phát triển và phân nhánh - Thực tiễn quy trình làm việc tốt nhất


14

Một tiêu đề kỳ lạ, vâng, nhưng tôi đã có một chút nền tảng để che đậy tôi nghĩ.

Chúng tôi có một tài khoản tổ chức trên github với các kho riêng. Chúng tôi muốn sử dụng các tính năng gốc / vấn đề yêu cầu kéo của github (yêu cầu kéo về cơ bản chính xác là những gì chúng tôi muốn theo như đánh giá mã và thảo luận về tính năng). Chúng tôi đã tìm thấy trung tâm công cụ bằng defunkt , có một tính năng nhỏ thú vị là có thể chuyển đổi một vấn đề hiện có thành yêu cầu kéo và tự động liên kết chi nhánh hiện tại của bạn với nó.

Tôi tự hỏi liệu có phải là cách tốt nhất để mỗi nhà phát triển trong tổ chức chia rẽ kho lưu trữ của tổ chức để thực hiện công việc tính năng / sửa lỗi / v.v. Đây có vẻ như là một luồng công việc khá vững chắc (về cơ bản, đó là điều mà mọi dự án nguồn mở trên github làm) nhưng chúng tôi muốn chắc chắn rằng chúng tôi có thể theo dõi các vấn đề và lấy các yêu cầu từ MỘT nguồn, kho lưu trữ của tổ chức.

Vì vậy, tôi có một vài câu hỏi:

  1. Là một cách tiếp cận ngã ba cho nhà phát triển thích hợp trong trường hợp này? Có vẻ như nó có thể là một chút quá mức cần thiết. Tôi không chắc chắn rằng chúng tôi cần một ngã ba cho mọi nhà phát triển, trừ khi chúng tôi giới thiệu các nhà phát triển không có quyền truy cập đẩy trực tiếp và cần tất cả mã của họ được xem xét. Trong trường hợp đó, chúng tôi muốn đưa ra một chính sách như vậy, chỉ dành cho những nhà phát triển đó. Vậy, cái nào tốt hơn? Tất cả các nhà phát triển trong một kho lưu trữ duy nhất, hoặc một ngã ba cho tất cả mọi người?
  2. Có ai có kinh nghiệm với công cụ trung tâm, cụ thể là tính năng yêu cầu kéo không? Nếu chúng ta thực hiện một fork-per-developer (hoặc thậm chí cho các nhà phát triển ít đặc quyền hơn) thì tính năng yêu cầu kéo của hub sẽ hoạt động trên các yêu cầu kéo từ kho lưu trữ chính ngược dòng (kho lưu trữ của tổ chức?) Hay nó có hành vi khác không?

EDIT
Tôi đã thực hiện một số thử nghiệm với các vấn đề, dĩa, và yêu cầu kéo và thấy rằng. Nếu bạn tạo một vấn đề trên kho lưu trữ của tổ chức, sau đó rẽ nhánh kho lưu trữ từ tổ chức của bạn sang tài khoản github của riêng bạn, hãy thực hiện một số thay đổi, hợp nhất với nhánh chính của nhánh của bạn. Khi bạn cố chạy, hub -i <issue #>bạn gặp lỗi User is not authorized to modify the issue. Vì vậy, rõ ràng dòng công việc đó sẽ không hoạt động.

Câu trả lời:


6

Là một cách tiếp cận ngã ba cho nhà phát triển thích hợp trong trường hợp này? Có vẻ như nó có thể là một chút quá mức cần thiết. Tôi không chắc chắn rằng chúng tôi cần một ngã ba cho mọi nhà phát triển, trừ khi chúng tôi giới thiệu các nhà phát triển không có quyền truy cập đẩy trực tiếp và cần tất cả mã của họ được xem xét. Trong trường hợp đó, chúng tôi muốn đưa ra một chính sách như vậy, chỉ dành cho những nhà phát triển đó. Vậy, cái nào tốt hơn? Tất cả các nhà phát triển trong một kho lưu trữ duy nhất, hoặc một ngã ba cho tất cả mọi người?

Phụ thuộc vào quy mô nhóm của bạn, tôi đoán. Tôi đã từng làm việc trong một nhóm nhỏ nơi chúng tôi chỉ có một repo duy nhất và các tính năng có các chi nhánh của riêng họ trong repo đó. Điều đó làm việc tốt cho chúng tôi.

Tuy nhiên, bây giờ tôi thường xuyên đóng góp cho một dự án nguồn mở lớn hơn, nơi vài chục người có quyền truy cập vào repo trung tâm. Chúng tôi vẫn thực hiện tất cả các phát triển chính trong repos cá nhân và gửi PR cho các tính năng để mã có thể được xem xét, mặc dù các lỗi có thể được đẩy trực tiếp. Repo chính chỉ mang chủ và giải phóng các nhánh, giữ cho nó không bị lộn xộn. Các nhánh tính năng nằm trong repos cá nhân, vì vậy chúng vẫn có thể được nhìn thấy bởi những người khác (thực hiện PR sớm cho họ sẽ cảnh báo cho những người khác trong nhóm làm việc trên một tính năng đang được tiến hành). Tôi có thể đề xuất quy trình công việc này cho bất kỳ dự án nào có nhiều hơn một số nhà phát triển; Nhược điểm duy nhất của nó là phải làm việc với nhiều điều khiển từ xa.


2

Cách tiếp cận theo từng nhà phát triển là một cách tiếp cận rất tốt nếu bạn coi trọng đánh giá mã và chất lượng mã. Điều tuyệt vời khi sử dụng các yêu cầu kéo là nó chuyển trách nhiệm từ người bảo trì sang nhà phát triển.

Nhà phát triển muốn đưa mã của mình vào nhánh chính và yêu cầu nó bao gồm.

Đây là bối cảnh khác nhiều so với mô hình cũ nơi mọi người cam kết, và sau đó người đánh giá phải nói với họ "ồ, điều này bạn đã làm vài tuần trước không tốt lắm, hãy sửa nó ngay."

Chúng tôi sử dụng mô hình này trong công ty của chúng tôi. Kéo yêu cầu thực hiện yêu cầu mã khả thi, khuyến khích thảo luận về mã người khác và thường giúp với chất lượng mã, ngay cả với các nhà phát triển đầu tiên chống lại công cụ mới. Tôi cảm thấy rằng điều đó cũng khiến mọi người thực hiện đánh giá mã nghiêm túc hơn, bởi vì người đánh giá phải chủ động hợp nhất mã vào nhánh chính, thay vì chỉ nói 'ok' hoặc 'không ổn' sau khi mã đã được cam kết.


1

Tôi sẽ không làm tất cả các forking và rẽ nhánh cho tất cả mọi thứ. Đó là một mô hình tốt cho đá quý nguồn mở trên github, nhưng mô hình của bạn nằm trong một tổ chức thường có mức độ tin cậy cao hơn về các thay đổi.

Một điểm chính của kiểm soát nguồn là bạn có thể thấy, thay đổi, đảo ngược, v.v. Làm một số lượng lớn các nhánh và nhánh trong tình huống của bạn là quá mức cần thiết IMHO.

Tôi sẽ dành các nhánh cho những thứ như: nâng cấp phiên bản, thay đổi một trong những phần công nghệ, làm việc trên một mô hình con trong 3 tháng mà không có nhiều điểm chung với cơ sở chính.

Tôi có thể không ngã ba trong một tổ chức. Chế độ đó có vẻ phù hợp hơn với các dự án nguồn mở có bản chất khác với các dự án nội bộ.

Tôi sẽ chuyển trọng tâm của bạn để kiểm tra và đánh giá mã. Là những người viết bài kiểm tra? Họ có tốt không? Mã đánh giá được thực hiện?


1
Chúng tôi không thực sự viết bài kiểm tra rất nhiều; chúng tôi xem xét mã của nhau bán thường xuyên. Theo dõi lỗi và triển khai các giải pháp thực sự quan trọng nhất đối với chúng tôi ngay bây giờ. Tôi nghĩ mọi người sẽ đồng ý rằng các bài kiểm tra là lý thuyết tốt, và dễ thực hiện hơn trên một dự án bắt đầu từ con số 0; nhưng chúng tôi đã có rất nhiều dự án kế thừa sẽ mất rất nhiều cho việc viết bài kiểm tra. Tôi thường đồng ý về việc rẽ nhánh và rẽ nhánh. Chúng tôi đến từ HG nên việc có các chi nhánh ngắn hạn mà thực sự không phải là một phần của lịch sử công cộng có vẻ kỳ lạ đối với chúng tôi, nhưng tôi chắc chắn thấy mục đích này.
Jim Rubenstein

Tôi thực sự không thấy vấn đề với một cơ sở mã lớn của chức năng hiện có. Ngày mai khi bạn thực hiện một sửa chữa lớn, viết một bài kiểm tra, sau đó cho tính năng tiếp theo, viết một bài kiểm tra. Bạn không cần phải quay lại và viết những cái cũ. Bạn chỉ cần bắt đầu viết những cái mới. Làm đủ và có cơ hội tốt bạn sẽ viết bài kiểm tra trước. Đó là sự phát triển phần mềm chuyên nghiệp của phần mềm.
Junky

btw, cá nhân tôi sử dụng git và thấy thực tế là nó có một kho lưu trữ cục bộ, trái ngược với svn nói rằng bạn cam kết trực tiếp với điều khiển từ xa (không đẩy / kéo) giúp tôi có được thứ gì đó hoạt động cục bộ trước tiên. Thật dễ dàng hơn vì tôi vẫn có thể thêm và cam kết mà không cần đến cú hích cuối cùng cho đến khi tôi sẵn sàng.
Junky

Trừ khi bạn sử dụng chế độ xem động ClearCase (mà nếu bạn đã từng thử, bạn sẽ biết là PITA sẽ sử dụng), bạn sẽ bỏ qua tất cả mọi thứ, bởi vì mỗi thanh toán thực sự là một ngã ba, chỉ một trong các hệ thống kiểm soát phiên bản tập trung không thể chứa nhiều sửa đổi. Trong các hệ thống phi tập trung và phân tán (git là một) nó có thể và là một ngã ba thông thường.
Jan Hudec
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.