2015-01-30 12 views
5

Tôi muốn xây dựng dòng chảy cụ thể trên git của công ty chúng tôi.Tạo chi nhánh tư nhân trên kho lưu trữ từ xa trong git

  1. nhà phát triển tạo chi nhánh trên máy cục bộ của mình và cam kết có một số tệp.
  2. dev đẩy chi nhánh này để repo từ xa
  3. devs khác không thể truy cập đến chi nhánh này
  4. sau vài vòng tắt đẩy dev quyết định công bố những thay đổi của mình.
  5. hợp nhất chi nhánh riêng của mình vào chi nhánh công khai
  6. đẩy chi nhánh công khai đó.

Nói cách khác - có thể định cấu hình nhánh riêng từ xa trong kho công cộng không?

+0

Tại sao hãy đẩy nó nếu không ai có thể sử dụng nó ?! – Biffen

+0

Không phải là câu trả lời, nhưng: Tại sao bạn lại muốn điều này? Có một số yêu cầu chính thức về bí mật? Có phải chỉ là các nhà phát triển sợ phải chia sẻ công việc của họ? Nói chung, nó rất hữu ích để có thể nhìn thấy công việc của nhau trong tiến trình (giúp đỡ lẫn nhau, chọn cho một người bị ốm vv). – sleske

+2

Kẻ vì máy tính của tôi có thể gặp sự cố, vì mã không biên dịch nhưng tôi cần lưu nó bằng cách nào đó, bởi vì tôi cần phần "riêng tư" trong kho lưu trữ cho các tính năng thử nghiệm. Tôi đã gặp điều này trong một số dự án. Nhưng họ sử dụng SVN và thiết lập hai "dòng" riêng để phát triển hàng ngày và công khai để cung cấp các tính năng tuân thủ –

Trả lời

7

Luồng được sử dụng trong nhóm của tôi là có kho lưu trữ riêng hoàn chỉnh cho từng thành viên nhóm ngoài nguồn gốc trên máy chủ git chính.

  1. Dev tạo ra chi nhánh địa phương trên máy tính địa phương và cam kết đi
  2. Vào cuối ngày (hoặc bất cứ khi nào thích hợp) dev đẩy để repo riêng của ông git push jdoe-private my-cool-branch
  3. Dev quyết định anh là hạnh phúc cho công việc để được công bố và có thể sáp nhập như vậy có thể dọn nó lên và rebase nó không bị trừng phạt
  4. Dev đẩy chi nhánh của mình để có nguồn gốc git push origin my-cool-branch

lý giải cho thiết lập này đối với chúng tôi là t o cho phép devs để tự do rebase và tránh các vấn đề có thể phát sinh từ upstream rebasing và cũng để có bản sao lưu đầy đủ. Các kho lưu trữ riêng biệt chỉ là riêng tư theo quy ước nhưng sẽ dễ dàng thêm điều khiển truy cập nếu cần. Có rất nhiều dữ liệu trùng lặp nhưng trừ khi repo của bạn là thực sự rất lớn, điều này có lẽ không phải là một mối quan tâm.

+0

Ok. Nó trông giống như giải pháp. Dev có họ repo từ xa tư nhân chỉ là một hợp nhất giữa đó và công cộng. –

0

Giải pháp chung mà tôi biết là đồng ý về "không gian tên chi nhánh", bằng cách thêm một số chuỗi vào tên chi nhánh. Ví dụ: các chi nhánh bắt đầu bằng "riêng tư" là dành cho các thử nghiệm riêng tư. Sau đó bạn sẽ nhận được các chi nhánh như

  • tin/JohnDoe/refactoring-taxcalculation
  • tin/JohnDoe/newGUILayout
  • tin/JaneJones/Java8
  • tin/TKirk/build-phi thuyền

Điều đó giúp các nhánh tách biệt và làm rõ mục đích của chúng là gì. Tuy nhiên, theo cách đó các chi nhánh vẫn còn công khai, bởi vì bất cứ ai cũng có thể nhìn thấy và kéo chúng.

Nếu bạn muốn hạn chế quyền truy cập vào các nhánh này dựa trên người dùng, bạn cần phải có một số loại kiểm soát truy cập dựa trên nhánh. Không có điều như vậy trong git lõi, nhưng một số máy chủ lưu trữ git cho phép điều này (Atlassian Stash chẳng hạn). Tôi không biết bất kỳ máy chủ nào cho phép các nhánh riêng tư này, nhưng có thể có một máy chủ cho phép nó hoặc cho phép bạn viết một giải pháp.

Lưu ý, tuy nhiên, những gì bạn đang yêu cầu là khá bất thường. Giải pháp chung là giải pháp tôi đã nêu ở trên.

+0

gitolite có quan niệm hạn chế quyền truy cập push đối với một số người dùng vào một số chi nhánh. Giống như nhà phát triển cơ sở không thể đẩy tới nhánh chính. Nhưng dù sao tất cả các chi nhánh vẫn có thể đọc được –

+0

Chắc chắn là đủ để tên chi nhánh làm rõ rằng nó là riêng tư? Nếu có ai đó trong nhóm của bạn, những người sẽ kéo một chi nhánh tư nhân như vậy và làm việc với nó, hy vọng nó ổn định, thì tôi sẽ nói vấn đề là ở nơi khác hơn là trong luồng công việc git của bạn. –

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