Quy trình xem xét mã khi sử dụng GIT làm kho lưu trữ?


9

Quy trình tốt nhất để xem xét mã khi sử dụng GIT là gì? Chúng tôi có nhà cung cấp GIT bên ngoài (Unfuddle) và có giới hạn sử dụng tài nguyên - vì vậy chúng tôi không thể có kho lưu trữ từ xa dành riêng cho mọi nhà phát triển.

Quá trình hiện tại:

  • Chúng tôi có một máy chủ GIT với một master chi nhánh mà mọi người đều cam kết
  • Devs làm việc ngoài địa phương master gương hoặc một nhánh tính năng cục bộ
  • Devs đẩy đến máy chủ master chi nhánh
  • Devs yêu cầu xem lại mã trên cam kết cuối cùng

Vấn đề:

  • Bất kỳ lỗi nào trong đánh giá mã đã được xử lý trước khi nó bị bắt.
  • Tồi tệ hơn, thường thì ai đó đã bị cháy vài giờ khi cố gắng tìm hiểu chuyện gì đã xảy ra ...

Vì vậy, chúng tôi muốn

  • Để thực hiện đánh giá mã TRƯỚC KHI giao hàng vào 'chính chủ'.
  • Có một quy trình làm việc với một nhóm toàn cầu (không có đánh giá qua vai !)
  • một cái gì đó không yêu cầu một nhà phát triển cá nhân phải ở bàn / máy của anh ta để được cấp nguồn để người khác có thể điều khiển từ xa (loại bỏ sự phụ thuộc của con người, nhà phát triển về nhà vào các múi giờ khác nhau)

Chúng tôi sử dụng TortoiseGIT để thể hiện trực quan danh sách các tệp đã thay đổi, các tệp khác nhau, v.v. Một số người trong chúng tôi thả vào trình bao GIT khi GUI không đủ, nhưng lý tưởng là chúng tôi muốn quy trình làm việc đơn giản và dựa trên GUI (Tôi muốn công cụ nâng bất kỳ gánh nặng nào, không phải dev của tôi).


Bạn đang làm bài kiểm tra đơn vị trước khi cam kết?
Guy Coder

@GuyCoder: Chủ yếu, chúng tôi làm.
DeepSpace101

Nếu máy chủ của bạn không cung cấp khả năng xem lại mã, hãy lấy máy chủ tốt hơn. Hãy xem Gerrit, và xem nếu bạn có thể tìm thấy một máy chủ cung cấp nó.
mattnz

Câu trả lời:


15

Một mô hình đơn giản nhưng hiệu quả là mô hình yêu cầu kéo GitHub , trong đó các tệp đóng góp "vui lòng hợp nhất trong mã của tôi" yêu cầu. Một người bảo trì xem xét các thay đổi và quyết định xem họ cần thêm công việc hay liệu chúng có phù hợp để hợp nhất hay không. Anh ta sau đó có thể hợp nhất vào nhánh chủ. Các thành viên thường không được phép đẩy trực tiếp vào nhánh chính (điều này có thể được tùy chỉnh theo sở thích của bạn, chúng tôi cho phép các cam kết "nhỏ" đi trực tiếp vào).


Chúng tôi có một đội ngũ chặt chẽ gồm 7 nhà phát triển chuyên nghiệp (so với những người đóng góp ẩn danh) trên toàn cầu, vì vậy thật an toàn khi để mỗi người trực tiếp đẩy đến chủ nhân từ xa của chúng tôi. Mặc dù đó là một liên kết + giới thiệu so với câu trả lời độc lập mà tôi thích, nhưng trong trường hợp này nó có ý nghĩa. Tuyệt vời writeup tại liên kết, cảm ơn!
DeepSpace101

@Sid Với một nhóm gồm 3 người tôi sẽ không để tất cả họ đẩy lên thành thạo.
Andrew T Finnell

Yêu cầu kéo cũng có sẵn trong Rhodecode và Atlassian Stash
dukeofgaming

2
@Andrew: Tại sao không? Có nhiều vấn đề có thể được tạo ra bằng cách phễu toàn bộ nhóm làm việc mặc dù điểm nghẹt thở. Tất cả đều có thể được giảm nhẹ, nhưng một cấu trúc lệnh và điều khiển một điểm phù hợp hơn cho một số tình huống so với các tình huống khác.
mattnz

1

Git là một hệ thống kiểm soát phiên bản phân tán: không chỉ có một repo với một chi nhánh!

Bạn có thể thiết lập nhiều kho lưu trữ - một kho cho mỗi nhà phát triển - và một kho khác là repo chính. Khi một trong các chi nhánh của họ sẵn sàng để được hợp nhất, nhà phát triển yêu cầu hợp nhất và các thay đổi của họ được kéo từ chi nhánh / repo của họ thành chủ.

Trước khi sự hợp nhất đó thực sự xảy ra, người đánh giá có thể kéo các thay đổi vào môi trường của họ và xem xét chúng trước khi đẩy chúng thành chủ.

Thêm lợi thế là theo cách này, nhà phát triển có thể có nhiều chi nhánh như họ muốn, đặt tên bất cứ điều gì họ muốn, mà không can thiệp lẫn nhau hoặc thậm chí phải nhìn thấy đồ giặt bẩn của nhau nhiều như vậy.


Ngoài ra, hãy tìm hiểu về biệt ngữ: bởi "Devs commit to master master server", ý bạn là họ đẩy những thay đổi của mình thành chủ?


Vâng, họ pushlàm việc của họ. Chúng tôi không thể có kho lưu trữ từ xa duy nhất trên máy chủ GIT vì chúng tôi trả tiền cho một người chơi GIT và họ tính phí cho mỗi kho lưu trữ. Ý bạn là có nhiều chi nhánh từ xa cho mỗi nhà phát triển? Và khi bạn nói the reviewer can pull the changes into their environmentchính xác các lệnh GIT (hoặc luồng TortoiseGIT) thì sao?
DeepSpace101

Không, ý tôi là có nhiều kho lưu trữ; một cho mỗi nhà phát triển và trên kho lưu trữ đó họ có thể có nhiều chi nhánh như họ muốn. Về phần pull, tôi không biết lệnh sẽ là gì trong TortoiseGIT - nhưng lệnh là git pull . Điều ngược lại với một cú hích - bạn kéo các thay đổi từ kho lưu trữ từ xa để cập nhật môi trường của bạn với công việc mà các nhà phát triển khác có thể đã thực hiện.
Richard JP Le Guen

Tôi biết git pull:) ... Tôi đã yêu cầu cú pháp đầy đủ để kiểm tra hệ thống repo / chi nhánh / thẻ để đẩy / kéo mà bạn đang giới thiệu. Ngay bây giờ chúng tôi làm mọi cách git pull, nó chỉ ở xa: chủ - nguyên nhân gây ra vấn đề. Dù sao, các liên kết của Steven là tuyệt vời. Cảm ơn
DeepSpace101

Đối với tất cả các mục đích thực tế trong trường hợp này, một chi nhánh trong repo được lưu trữ cũng giống như một repo khác.
mattnz
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.