2013-07-17 41 views
7

Tôi đang thiết lập một môi trường phát triển trên một máy chủ chia sẻ cho nhiều nhà phát triển. Tôi sẽ có một kho chứa tất cả các mã được sử dụng trong sản xuất và nhiều kho khác được sử dụng để phát triển bởi các thành viên khác nhau của nhóm. Những gì tôi muốn là cho repo sản xuất được 'kéo chỉ'. Người dùng có thể lấy từ nó và nhận các thay đổi sản xuất tại địa phương bất cứ khi nào họ muốn, nhưng việc đẩy cần phải được quản trị viên sản xuất xử lý hoặc ít nhất yêu cầu mật khẩu. Một cái gì đó như:Làm thế nào để tạo một git Repository 'pull only'

[[email protected] /devroot/myrepo]$ git pull $PRODUCTION master 
From <location> 
*branch    master  -> FETCH_HEAD 
Already up-to-date 

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
error: user `user` is not authorized for this action 

Hoặc

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
HEAD @ `$PRODUCTION`-Please enter password: 

Tôi tin rằng tôi có thể làm điều này với quyền tập tin, nhưng điều đó không tấn công tôi như một giải pháp thanh lịch. Git có cái gì đó như thế này được xây dựng trong?

Trả lời

3

Nếu bạn muốn kiểm soát truy cập kho lưu trữ phức tạp, bạn có thể muốn xem xét Gerrit. Trọng tâm chính của nó là xem xét mã (điều này hoàn toàn đáng giá!), Nhưng nó cũng kiểm soát truy cập như là một tác dụng phụ.

Nếu không, nếu bạn chỉ muốn một cái gì đó thực sự đơn giản, quyền truy cập tập tin là một cách hoàn toàn tốt để xử lý điều này trên một máy duy nhất. Miễn là người dùng không thể ghi vào các tệp trong thư mục chứa kho lưu trữ, họ không thể đẩy nó vào. Tôi chẳng thấy gì về điều đó cả!

2

Bạn có thể sử dụng gitolite hoặc gitosis. Sau đó, bạn có thể tạo danh sách người dùng có thể kéo, đẩy từng chi nhánh, người có thể tạo thẻ, v.v.

Tôi biết gitolite tốt hơn gitosis. Cấu hình chỉ là một kho lưu trữ git với cú pháp đơn giản cho các tệp.

0

Tôi đồng ý với @duskwuff .. Hãy xem điều này branching model. Điều này sẽ giúp bạn đạt được chỉ kéo mà không cần Gerrit

1

git chính nó không bao gồm bất kỳ quyền quản lý nào.

bạn có thể đạt được cấp độ này cao hơn trong phần mềm quản lý kho lưu trữ git của bạn (nếu bạn tìm cách tiếp cận tập trung, nhưng tôi đoán hầu hết các công ty muốn điều này). vì vậy gitolite (http://gitolite.com/gitolite/) hoặc gitlab có thể làm điều này (http://gitlab.org/).

1

Loại giải pháp 'người lớn đồng ý' có hoạt động tốt hơn không? Ví dụ: trong git bạn chỉ thiết lập tìm nạp từ xa và để từ xa đẩy đến URL không tồn tại giả, để người dùng không thể vô tình git push với nó.

Chỉnh sửa: điều này tương tự với nội dung được chấp nhận in this question.

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