2010-03-19 26 views
12

Tôi hiện đang làm việc trên ClearCase và hiện đang di chuyển sang GIT. Nhưng chúng ta cần di chuyển này theo cách mà tất cả công việc sẽ được thực hiện trong GIT và dữ liệu sẽ được đồng bộ hóa được sao lưu vào luồng ClearCase. Chúng tôi sẽ có cùng tên chi nhánh và tên luồng trong cả GIT và CC, vì vậy việc viết kịch bản không phải là vấn đề. Vấn đề ở đây là,Đồng bộ hóa GIT và ClearCase

Ai đó có thể cho thấy đó là mô hình tốt nhất để đồng bộ CC và GIT

  1. Có tất cả các Vobs trong CC như repo duy nhất trong đoàn, và có dòng lớn trong CC là khác nhau các chi nhánh trong GIT. - Repo đơn GIT (VOBS) và nhiều nhánh (CC stream). - Điều này chiếm ít không gian hơn vì các VOB được giữ như repo đơn với nhiều nhánh.

  2. Có các chi nhánh CC quan trọng là kho GIT độc lập và mỗi kho lưu trữ có tất cả các VOB CC. - Nhiều repo GIT cho nhiều chi nhánh CC - Điều này sẽ mất rất nhiều không gian như VOB sẽ được nhân rộng trên.

Mà bạn có nghĩ là cách tốt nhất để giữ cho nó đồng bộ với ClearCase

Trả lời

4

Có tất cả các Vobs trong CC như repo duy nhất trong đoàn, và có dòng lớn trong CC như các chi nhánh khác nhau trong GIT

Không và có

Có chi nhánh CC quan trọng như kho GIT độc lập và mỗi kho lưu trữ có tất cả CC VOBs

Không và không

Đọc lại my answer about Git limits, bạn không nên cố nhồi nhét "mọi thứ" trong repo Git.
Xem thêm "What are the basic clearcase concepts every developer should know?" để so sánh giữa ClearCase và Git.

Luồng có thể được nhập an toàn dưới dạng nhánh.
Nhưng VOB không nhất thiết phải là Git Repo.

Nếu bạn đang sử dụng UCM, tôi sẽ đề xuất một gói Git repo cho mỗi thành phần UCM.

Dù sao, bạn cần phải ghi lại trong Git Repo của bạn một cách để biết những gì ClearCase xem để sử dụng để đồng bộ hóa lại (thông qua một simple clearfsimport) dữ liệu của bạn.
Chế độ xem được sử dụng để nhập lại dữ liệu ClearCase sẽ là chế độ xem UCM được tự động liên kết với luồng phù hợp, cho đúng VOB.


Lưu ý: Tôi đề cập đến trong "How to bridge git to ClearCase?" một giải pháp đơn giản hơn, nhưng mà không nhập tất cả lịch sử trong một repo Git.

+1

Cảm ơn điều này dường như giúp tôi rất nhiều. tôi đồng ý rằng có tất cả các VOB hoặc tất cả các thành phần UCM vào một repo đơn sẽ làm cho GIT mất nhiều thời gian để thực hiện hoạt động, đặc biệt nếu nó là 20 gb. bạn có thể làm rõ cho tôi nhiều điều hơn không. Giả sử có một repo cho một thành phần ucm/một VOB, nhưng theo thảo luận có tất cả các luồng CC/UCM quan trọng như các nhánh trong repo, có thể cho các nhà phát triển khác nhau đẩy các nhánh khác nhau của cùng một repo mà không có chờ đợi nếu tất cả các chi nhánh trong cùng một repo trần? –

+0

@ Thứ tư: vâng: bạn có thể đẩy bất kỳ chi nhánh nào vào bộ repo trần từ xa. Lưu ý: nếu bạn cần một số thành phần UCM (ví dụ: một số repo Git) để làm việc (hoặc đọc chúng hoặc sửa đổi chúng), bạn sẽ cần một hoặc một vài dự án chính với các mô-đun con (xem http://stackoverflow.com/questions/1979167/ git-submodule-update/1979194 # 1979194) – VonC

1

Đối với các ngành và các hợp đồng mua, tôi sẽ đi với một vob == một git quy tắc repo, vì git repo thực sự có ý nghĩa được sử dụng bởi dự án đơn lẻ, giống như đối với vob.

Đối với các chi nhánh, tên chi nhánh trên vob/repos phải khớp nhau. Hãy xem submodules trong git để xem liệu điều này có thể được sử dụng trong trường hợp của bạn hay không.

Điều mà tôi muốn xem là phụ trợ git-cc trưởng thành, cho phép tôi sử dụng git trên hộp dev của mình, đồng thời có thể đồng bộ hóa với kho lưu trữ CC của công ty.

4

Mặc dù tôi không nhất thiết phải đề xuất cách tốt nhất để đồng bộ hóa hai, bạn có thể nhập lịch sử và đẩy các thay đổi trở lại Clearcase qua công cụ git-cc của tôi, như đã đề cập here.

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