2011-09-06 37 views
7

Nhóm của tôi đang xem xét việc chuyển từ khoảng 2 tá repo lật đổ vào repo git. Những gì chúng tôi đang cố gắng để khắc phục là hiện tại, mọi người đều có repo subversion riêng của họ cho mỗi thành phần sản phẩm của họ. Những gì tôi muốn làm là cố gắng giảm bớt sự mở rộng mà chúng tôi có và giúp xây dựng một con đường rõ ràng.Cấu trúc các thành phần liên quan trong git

Tôi đang tìm kiếm lời khuyên về cách cấu trúc các bản repos. Một điểm gắn bó là làm thế nào để nhóm các dự án liên quan. Chúng tôi có hai sản phẩm. Mỗi sản phẩm có một bộ mã dịch vụ web (php), mã khách hàng Android (java), mã máy khách iphone (obj c), mã ipad (obj c) và mã khách hàng trang web (php + js). Hiện tại, mỗi chủ sở hữu có thành phần của họ trong một repo svn riêng biệt.

Suy nghĩ của tôi là cố gắng kết hợp các thành phần này lại với nhau thành một repo, nhưng tôi không thể biết đó là một thực hành tốt với git. Điều này có cung cấp bất kỳ lợi ích thực sự nào khi có repos riêng biệt không? Nó dường như thúc đẩy một hợp đồng xã hội tốt hơn cho chất lượng của những gì được kiểm tra bởi vì tầm nhìn chung, nhưng chúng ta sẽ trả tiền cho điều đó theo những cách khác?

Trả lời

5

Các tiêu chí cho việc kết hợp bộ khác nhau của tập tin trong một "thành phần" (ở đây một Git repo) là vòng đời của chúng tương ứng phát triển (theo cách mà họ phát triển trong nhiệm kỳ của nhãn và phân nhánh):

  • thể bạn thực hiện tiến hóa trên php hoặc mô-đun java mà không cần phải thực hiện bất kỳ sửa đổi nào cho các mô-đun khác (như các obj c)?
  • bạn có thể cách ly trong một chi nhánh một số diễn biến/bản sửa lỗi chỉ được thực hiện cho một trong những mô-đun của những mô-đun đó chứ không phải các mô-đun khác không?
  • bạn có thể sử dụng lại phiên bản cụ thể của một trong những mô-đun đó trong một số dự án không?

Nếu có, cách tiếp cận dựa trên thành phần là tốt nhất (ví dụ: một git repo cho mỗi mô-đun), chứ không phải một repo với mọi thứ trong đó (system approach).
Xem ví dụ "Component based web project directory layout with git and symlinks".

Thành phần đại diện cho "tập hợp các tệp thống nhất" và được quản lý tốt nhất trong repo Git của chính nó.

+0

Không phải là các câu trả lời khác là sai, nhưng tôi đánh giá cao quan điểm về cách thức và thời điểm nhóm như các bộ mã. Cảm ơn. –

3

Bạn có ít nhất hai lựa chọn:

Nếu dự án của bạn chủ yếu là tư nhân, tôi muốn khuyên bạn nên gắn bó với cựu. Đọc tài liệu, tất cả đều dễ dàng.

1

Tôi không biết nhiều về công việc Git nhưng tôi biết bạn có ít nhất ba lựa chọn:

  1. Để từng dự án riêng của mình repo, lẽ là lựa chọn an toàn nhất. Thẻ và công cụ kiểm tra tốt là bạn của bạn.
  2. Phân tách các chi nhánh cho mỗi nhóm dự án và cho từng dự án chi nhánh riêng của mình. Hãy chắc chắn để trở lại tất cả mọi thứ trước khi làm điều này. Xem Scott Chacon's video trên các nhánh trống. Tôi đã không làm điều này trước đây nhưng các chi nhánh gh-trang của Github là một ví dụ trực tiếp.
  3. Submodules. Mỗi dự án sẽ có repo git riêng của mình, bên trong một git repo mình. Có lẽ là ý tưởng tốt nhất xung quanh.
Các vấn đề liên quan