2011-10-09 30 views
7

cách thức bảo vệ kho lưu trữ GIT của một ứng dụng hoàn chỉnh (java) khỏi việc nhà phát triển có quyền truy cập vào tất cả mã nguồn trong kho lưu trữ. Tôi biết GIT là một phiên bản kiểm soát phân tán, nơi một nhà phát triển bình thường "tải/lấy" kho lưu trữ đầy đủ (!).Git: Kiểm soát truy cập? Cách thực hiện trong thực tế

Câu hỏi của tôi:

  1. Làm thế nào để sperate "modules/phần tự trị" trong git? Ví dụ: havng một mô-đun "lớp thanh toán" và "lớp cơ sở dữ liệu" và "lớp xử lý" và cứ thế được trừu tượng hóa thông qua API/Giao diện. Tôi có phải thiết lập một kho lưu trữ git riêng biệt cho tất cả các mô-đun đó không?

  2. Có cách nào để có một kho lưu trữ lớn trong GIT nhưng bằng cách nào đó hạn chế truy cập theo đường dẫn? (Khách hàng chỉ nên recive những tập tin mà ông đã được cấp quyền truy cập)

  3. Có cách nào để có một kho lưu trữ lớn trong GIT hay không? (Một khách hàng chỉ nên recive những tập tin mà ông đã được cấp quyền truy cập)

  4. Chỉ trong trường hợp ai đó biết điều này: Có cách nào để nhật thực nội dung từ nhiều kho GIT vào một dự án và cũng không (cách khác vòng) cam kết mã trong một dự án nhật thực cho nhiều kho lưu trữ GIT khác nhau (dựa trên tên gói/đường dẫn hoặc trong trình đơn ngữ cảnh)?

Cảm ơn bạn rất nhiều Markus!

Trả lời

4
  1. Bạn sẽ phải chia mã thành nhiều kho lưu trữ git nếu bạn muốn kiểm soát vi phân. Bạn không thể kiểm soát bởi các chi nhánh hay bất cứ thứ gì. Git tải toàn bộ repo. Giai đoạn.

  2. Bạn có thể xem xét các mô-đun git cho một cơ chế để làm cho nó dễ dàng hơn để làm việc với một thứ được xây dựng từ nhiều kho lưu trữ git.

+1

Đây không phải là * hoàn toàn * đúng - những thứ như gitolite thực sự có thể thực hiện quyền đối với mỗi lần cho phép. Nhưng tôi chắc chắn sẽ không khuyên bạn nên nó như một cách để bảo vệ thông tin bí mật - tôi thứ hai đề nghị chia tách kho. – Cascabel

+0

@Jefromi: Có, nhưng ngay cả gitolite cũng chỉ có thể kiểm soát _write access_ ở cấp chi nhánh/thẻ/tệp/thư mục; truy cập đọc luôn theo repo (http://sitaramc.github.com/gitolite/index.html#gl_what). – sleske

2

1) và 4) phụ thuộc rất nhiều vào việc xây dựng của bạn. Trong git, bạn cố gắng có các kho lưu trữ riêng cho mỗi mô-đun, nhưng nếu việc thiết lập cây nguồn trở nên đau đớn, bạn có thể sử dụng các mô đun con git (mặc dù không có nhiều người thích chúng) hoặc công cụ repo mà dự án Android sử dụng. Điều này cho phép bạn có một dự án "ô" bao gồm nhiều tiểu dự án. Không chắc chắn nếu nó là giá trị nó cho chỉ là một vài thành phần. Chỉ một git repo vẫn có thể có ý nghĩa hơn.

Đối với câu hỏi 2) và 3):

Để truy cập, tôi muốn giới thiệu rằng mỗi tiểu đội giữ nĩa riêng của mình (kho) và ai đó đánh giá những gì họ đẩy vào kho hội nhập. Nếu bạn không thích cách tiếp cận này, bạn có thể sử dụng git server hooks để thực thi các chính sách viết script.

Trong trường hợp này, móc có thể kiểm tra ai đang đẩy và đường dẫn hoặc refspec (nhánh) đối với một số tệp cấu hình mô tả chính sách. Tài liệu này được ghi ở đây:

https://git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy

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