2012-04-30 24 views
41

Tôi có một vài người đóng góp trong dự án github của tôi. Tôi muốn cho phép chỉ một trong số họ "đẩy" để làm chủ. Và anh chàng này không phải là tôi (chủ nhân của kho lưu trữ). Có thể làm được không?Làm thế nào để bảo vệ "chủ" trong github?

+0

Đây có phải là dự án riêng tư không? Nếu không, họ không nhất thiết phải là cộng tác viên - họ có thể chia rẽ và sử dụng yêu cầu kéo (thực thi mức độ xem xét mã giả để hợp nhất các thay đổi) – Daenyth

+1

Chức năng này không được hỗ trợ bởi github, nhưng nếu bạn đang tìm kiếm cho các giải pháp tương tự: Kho chứa Assembla hỗ trợ điều này: http://blog.assembla.com/assemblablog/tabid/12618/bid/96330/Put-Down-Your-Forks-Introducing-Protected-Branches.aspx Tự làm - tự lưu trữ git: http://git-scm.com/book/ch7-4.html Tự làm - tự lưu trữ thủy ngân: http://mercurial.selenic.com/wiki/AclExtension – Titas

+0

Xem thêm http://stackoverflow.com/a/5097437/6309 – VonC

Trả lời

34

Quay lại sau đó, khi câu hỏi này được đăng, GitHub không cho phép bạn chỉ định đặc quyền truy cập ở cấp chi nhánh. Bạn chỉ có thể làm điều đó ở cấp độ kho lưu trữ. Vì vậy, những gì bạn đang yêu cầu là không thể.

Nếu bạn muốn làm việc khắc phục hạn chế này, cá nhân tôi thấy hai lựa chọn:

  • bạn có thể sử dụng một số loại cam kết móc, vv để ít nhất thông báo cho ai đó mà một cái gì đó sai xảy ra
  • Nếu bạn thực sự cần điều khiển chặt chẽ này, bạn có thể sử dụng hai kho lưu trữ, một trong những chỉ giữ nhánh "master" của bạn. Sau đó, bạn sẽ cần đảm bảo rằng chỉ có "anh chàng" của bạn mới có quyền ghi vào kho lưu trữ chính

Tôi nghĩ rằng việc giải quyết dễ dàng hơn với một số tổ chức là dễ dàng hơn. Trong nhóm của tôi, chúng tôi không bao giờ thúc đẩy bất cứ điều gì trực tiếp để làm chủ, mà thay vào đó luôn tạo ra các yêu cầu kéo. Điều đó đảm bảo rằng ít nhất một người nào đó có một cái nhìn trước khi mã được sáp nhập và bạn cũng có thể xác định một chính sách mà chỉ có "anh chàng" của bạn được phép hợp nhất các yêu cầu kéo.

Cập nhật

GitHub now announced rằng họ sẽ tung ra một tính năng mới gọi là chi nhánh được bảo vệ. Tính năng này đã có mặt trong các bản phân phối git khác như Atlassian Stash trong nhiều năm. Nó sẽ cho phép bạn bảo vệ một số nhánh khỏi bị đẩy. Tuy nhiên, nó vẫn không cho phép bảo vệ hoàn toàn dựa trên ACL của các nhánh riêng lẻ. Vì vậy, bạn có thể muốn kiểm tra tính năng này trong trường hợp bạn không muốn dựa vào giải pháp tổ chức như phác thảo ở trên.

+6

+1 cho yêu cầu kéo. – Daenyth

+3

"chúng tôi không bao giờ đẩy bất cứ điều gì trực tiếp để làm chủ" - bởi vì bạn không thể hoặc bởi vì bạn đã đồng ý không? – yegor256

+3

Bởi vì chúng tôi đã đồng ý không làm điều đó. Đôi khi nó dễ dàng hơn để tìm một giải pháp mềm thay vì một kỹ thuật. – Sebi

3

Đây chính xác là những gì forking được thiết kế cho. Bạn sẽ có kho lưu trữ chính được bảo vệ và bạn sẽ cho phép các quyền đọc trên kho lưu trữ đó cho tất cả các cộng tác viên. Những người đóng góp này sẽ chia rẽ repo, và sẽ đẩy những thay đổi của họ vào bản sao cá nhân của họ về repo chính. Khi họ đã sẵn sàng giới thiệu mã vào kho chính, họ sẽ gửi yêu cầu kéo vào repo chính. Trong trường hợp này, chủ sở hữu của dự án chính có thể hoàn thành yêu cầu kéo.

+3

Vấn đề với quy trình làm việc forking/PR là thành viên có quyền "viết" trên repo chính vẫn có thể đẩy nó. –

9

Lưu ý: Protected branches and required status checks (3 tháng 9 năm 2015) sẽ cho phép bạn bảo vệ một chi nhánh

  • chống lại buộc phải đẩy
  • khỏi việc xoá bỏ
  • chống lại những thay đổi sáp nhập cho đến khi được yêu cầu kiểm tra tình trạng vượt qua

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


Kể từ tháng Ba năm 2016, như commented bởi Sander dưới đây, bạn có User and team restrictions

Đôi khi kết hợp với một chi nhánh bảo vệ được tốt nhất còn lại để một người quản lý phát hành hoặc một nhóm người chịu trách nhiệm về sự ổn định của chi nhánh đặc biệt . Các tổ chức hiện có thể chỉ định thành viên và nhóm nào có thể đẩy tới một chi nhánh được bảo vệ.

https://cloud.githubusercontent.com/assets/4719/14140705/ed98abac-f67a-11e5-951e-b48c842fb77f.png

+5

đáng tiếc, bạn vẫn không thể hạn chế quyền truy cập chi nhánh đối với một số thành viên .... Sẽ yêu thích tính năng đó cho nhánh chính. –

+3

Tôi đồng ý hoặc ít nhất có thể hạn chế hợp nhất với quản trị viên chỉ dành cho các chi nhánh được bảo vệ. – joeybloggs

+1

@PratikBothra https://github.com/blog/2137-protected-branches-improvements Có vẻ như bây giờ là có thể. :) – Sander

0

Bây giờ chúng ta có thể sử dụng "CODEOWNERS" tập tin để yêu cầu xem xét lại từ Mã chủ sở hữu để yêu cầu pull hợp lệ. Chúng tôi có thể đặt các quyền khác nhau dựa trên tài khoản GitHub của họ.

xem herehere

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