2011-09-19 31 views
5

Sử dụng Gerrit nó rất dễ dàng để vô tình hợp mã không ổn định từ các chi nhánh phát triển thành các nhánh ổn định:git/Gerrit ngăn chặn phát triển chi nhánh được sáp nhập vào chi nhánh ổn định/kiểm tra

$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable

Trong Gerrit nó isn' t rất rõ ràng rằng sự thay đổi được đề xuất đến từ chi nhánh phát triển và sẽ được sáp nhập vào chi nhánh ổn định. Có cách nào để ngăn chặn sự hợp nhất này xảy ra, hoặc trong git hoặc trong Gerrit?

Cập nhật: Hiện tại, chúng tôi sử dụng lệnh tùy chỉnh để chuyển tới gerrit tìm nhánh cuối cùng gốc dựa trên và chỉ cho phép đẩy nhánh đó.

+0

Kiểm tra câu hỏi này http://stackoverflow.com/questions/527833/how-to-configure-git-to-avoid-accidental-git-push –

+0

Giải pháp cho câu hỏi đó ngăn cản việc thúc đẩy. Tôi muốn đẩy, nhưng muốn ngăn chặn phát triển (hoặc bất kỳ chi nhánh nào được tạo ra từ phát triển) được đẩy để refs/for/testing hoặc refs/for/stable – Taco

+1

Vì vậy, bạn phải thực hiện tùy chỉnh pre-receive hook cho repo từ xa của bạn –

Trả lời

1

Hiện tại, không có tùy chọn nào trong phần mềm sẽ ngăn bạn mắc lỗi này.

Tuy nhiên, một vài điều bạn có thể làm:

  • tàu người, vì vậy họ luôn kiểm tra tên chi nhánh trong khi thực hiện một bài đánh giá
  • thiết lập một thể loại "đẩy để sửa chi nhánh" (howto here) với các tùy chọn như +1 "Đúng nhánh", 0 "Không có điểm", -1 "Chi nhánh không chính xác", vì vậy người đánh giá phải chính thức xác nhận rằng anh đã kiểm tra tên chi nhánh
  • thiết lập công cụ tích hợp liên tục xem xét và chấm điểm danh mục nói trên (Jenkins có một số plugin Bạn có thể sử dụng)

Bạn có chia sẻ lệnh tùy chỉnh Bạn sử dụng để đẩy tới gerrit không?

0

Một cách tiếp cận có thể là một cái gì đó như thế này:

người dùng chia tách

  • Submitter nhóm - Tất cả các nhà phát triển những người bạn sẽ được mong đợi cam kết 'phát triển' chỉ và không có trong 'chính'
  • Nhóm tích hợp - Các nhà phát triển đặc quyền có thể đẩy và hợp nhất thành 'chính', tạo thêm chi nhánh nếu cần.

Trong 'git' cho phép truy cập push vào các thành viên của 'Nhóm tích hợp' (chỉ mô tả ở trên).

Tuyên bố từ chối trách nhiệm: Tôi không có kinh nghiệm/cấu hình quản trị Gerrit/Git, vì vậy tôi thành thật không biết làm thế nào 'git' sẽ có thể lấy thông tin về nhóm người dùng nào (IMHO)).

0

Bạn nên thiết lập các điều khiển truy cập cụ thể trong Gerrit cho chi nhánh "phát triển" của repo đó.

cài đặt như thế này:

Reference: refs/for/refs/heads/develop 
Push: Allow: <group> 

Nhưng không như thế này:

Reference: refs/for/refs/heads/* 
Push: Allow: <group> 

Bằng cách này bạn <group> chỉ có thể đẩy để xem xét về "refs/cho/phát triển", không phải "refs/cho/ổn định "hoặc bất kỳ chi nhánh nào khác.

Các vấn đề liên quan