Công ty của tôi đang trong quá trình thay đổi công cụ kiểm soát phiên bản của chúng tôi từ Rational ClearCase sang Git. Chúng ta có kịch bản phát triển sau đây, và chúng ta tò mò nếu có một mẫu thích hợp để theo Git để đạt được cùng một hành vi mà chúng ta có trong ClearCase.Tương đương với Git đối với thành phần chỉ đọc trong ClearCase là gì?
Dưới đây là một số điểm cơ bản về tình hình của chúng tôi:
- Chúng tôi có một số ứng dụng rời rạc. Hãy gọi các AppA, AppB và AppC này.
- Chúng tôi cũng có một số tệp (xây dựng tập lệnh, v.v.) phổ biến cho tất cả các dự án. Hãy gọi Công cụ này.
- Đối với bất kỳ phần cắt nào của mã AppA, AppB hoặc AppC, chúng tôi cần một mã cụ thể của mã Công cụ.
- Hầu hết các nhà phát triển của chúng tôi không bao giờ sửa đổi mã Công cụ.
Đối với ClearCase, chúng tôi đã theo mô hình này như sau:
Components: app_a, app_b, app_c, dụng cụ
Dự án: AppA, AppB, APPC, cụ
Project AppA bao gồm app_a như một thành phần đọc/ghi và các công cụ như là một thành phần chỉ đọc.
Project AppB bao gồm app_b dưới dạng thành phần đọc/ghi và công cụ làm thành phần chỉ đọc.
Project AppC bao gồm app_c như một thành phần đọc/ghi và công cụ làm thành phần chỉ đọc.
Công cụ dự án bao gồm các công cụ làm thành phần đọc/ghi.
Mỗi đường cơ sở cho các dự án ứng dụng * tham chiếu đến đường cơ sở trên cả app_ * và các công cụ tổng hợp. Khi nhà phát triển khởi động lại đường cơ sở được đề xuất, họ kéo các thay đổi từ cả hai thành phần.
Đối với Git, chúng tôi cho rằng mô-đun con có thể là điều gần nhất với câu trả lời đúng. Tuy nhiên, khi kéo/rebasing một kho lưu trữ, có vẻ như nó đòi hỏi một bước bổ sung để cập nhật mã submodule. Lý tưởng nhất, chúng tôi muốn minh bạch. Ngoài ra, chúng tôi không nhất thiết phải quan tâm đến việc biết những gì đã thay đổi trong một mô-đun con từ quan điểm của kho lưu trữ gốc; chúng tôi chỉ quan tâm đến một thời điểm cho toàn bộ mô-đun con.