2012-09-04 23 views
5

Trong công ty của tôi, chúng tôi có một phần mềm cơ sở được tùy chỉnh cho mọi khách hàng. Hôm nay sử dụng SVN, chúng tôi có thiết lập như sau:Điều kiện tốt nhất cho nhiều dự án tùy chỉnh và Git

/trunk 
/tags 
    … 
/branches 
    /client_project_x 
    /client_project_y 
    /client_project_z 

Làm cách nào để tổ chức tốt nhất trong git? Có một kho lưu trữ từ xa cho mỗi dự án và một cho mã cơ sở hoặc có một repo từ xa lớn với một số chi nhánh?

Nếu chúng tôi sử dụng một repo từ xa lớn với một số chi nhánh, có một cách để sao chép chỉ một chi nhánh từ một kho lưu trữ từ xa?

Trả lời

2

Về mặt khái niệm, không có sự khác biệt giữa nhiều chi nhánh trong một kho lưu trữ và các chi nhánh trong nhiều kho lưu trữ. Toàn bộ điểm của DVCS là loại bỏ sự khác biệt đó. Bạn muốn nghĩ về nó theo số người , những người cần truy cập và kiểm soát bất kỳ nhánh cụ thể nào. Nếu thông thường mọi nhà phát triển đều có thể truy cập mã từ mọi khách hàng, thì sẽ dễ dàng hơn khi đặt tất cả mã đó vào một repo trung tâm. Bạn có thể chọn nhánh nào bạn muốn nhân bản hay không, mặc dù nhân bản toàn bộ repo là dễ nhất. Nếu bạn cần phải có quyền truy cập rất khác nhau trong các ngành khác nhau, nó là thích hợp hơn để tạo repos riêng biệt cho họ.

Nói cách khác, hãy thiết lập theo bất kỳ cách nào giúp nhóm phát triển và thử nghiệm dễ dàng hơn.

+0

Cách chọn nhánh nào tôi muốn sao chép? –

+0

Nhìn [ở đây] (http: // stackoverflow.com/questions/4811434/git-clone-only-one-branch). –

1

Các dự án riêng biệt phải nằm trong các kho lưu trữ riêng biệt.

(Nó đơn giản như vậy với git. Không có lợi thế và rất nhiều nhược điểm tiềm năng để giữ nhiều dự án không liên quan - hoặc lỏng lẻo trong một kho lưu trữ duy nhất hoặc trong một cây lớn hoặc trong các nhánh riêng biệt.)

+0

Bất kỳ mẹo nào về cách quản lý nhiều bản lưu trữ tự lưu trữ theo cách dễ dàng tạo một repo từ xa mới? –

+0

@MarcoPompei: 'git init --bare' ở vị trí phù hợp có thể truy cập là cách đơn giản nhất để tạo kho lưu trữ được chia sẻ" trung tâm ". –

0

git được sinh ra để làm cho các nhánh/hợp nhất các nhánh dễ dàng như vậy, vì vậy chỉ cần làm nhánh như bạn muốn cho các tính năng mới, kiểm tra chức năng, làm việc với nhóm phụ mà không ảnh hưởng đến phần còn lại của công ty! Linux ví dụ có hàng ngàn chi nhánh và chúng đang phát triển!

Xem this video cho Linus Torvalds, điều này sẽ giúp bạn hiểu nhiều về các giá trị "trong tâm trí" mà anh ta có khi phát triển git.

0

tôi sử dụng một số Repos:

Cốt lõi là trong một kho lưu trữ, mỗi plugin và mỗi khách hàng có kho riêng của mình:

  • modwork (core)
  • modwork_foo (cấu hình cho khách hàng "foo ")
  • modwork_app1 (một ứng dụng có thể được cài đặt cho nhiều khách hàng)

Không tập tin duy nhất trong lõi được sửa đổi trong quá trình cài đặt hoặc xây dựng. Mỗi khách hàng có cùng một lõi. Cốt lõi chứa các móc cho các phương thức tùy chỉnh.

Tôi không thích sửa đổi tệp trong lõi trong các nhánh cho khách hàng. Tôi nghĩ điều này sẽ khó khăn nếu bạn có hơn 5 khách hàng.

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