Chúng tôi phát triển với Visual Studio 2010 (trong C#) và di chuyển một lúc trước từ SVN sang GIT. Bây giờ chúng tôi cố gắng chia nhỏ kho lưu trữ của chúng tôi (khá lớn - ~ 30.000 tệp) thành nhiều kho lưu trữ git - một cho mỗi giải pháp. Các giải pháp chia sẻ một số dự án, chủ yếu là các thư viện mà chúng tôi phát triển trong nhà và muốn thêm vào từ tất cả các giải pháp.Làm thế nào để đối phó với Git Submodules trong các giải pháp Visual Studio với cách bố trí khác nhau?
Kho lưu trữ mới có bố cục bằng phẳng. Một thư mục con cho mỗi dự án (các dự án chia sẻ là các mô-đun con). Trong repo cũ lớn, các dự án nằm trong một cấu trúc cây.
Sự cố xảy ra với tham chiếu bên ngoài trong các mô-đun con. Trong repos mới, đường dẫn đến một dự án được tham chiếu có thể là "...... libs \ someproject", trong khi trong bố cục mới, đường dẫn chính xác sẽ là ".. \ someproject".
Chúng tôi đã có một số cuộc chiến chỉnh sửa liên quan đến vấn đề này và không quan tâm nhiều hơn.
nướng vừa chín Solutions tôi có thể nghĩ ra:
sử dụng "tham khảo Paths" trong ... csproj.user và loại trừ tập tin này từ kiểm soát phiên bản (đã được làm lại cho mỗi nhà phát triển và sau mỗi lần reopsitory dọn dẹp)
chi nhánh sử dụng cho từng tình huống và cố gắng dạy cho tất cả mọi người nơi cam kết "thực" nên đi và nơi "với môi trường thay đổi" cam kết nên đi (submodules đã không phải là khái niệm đơn giản nhất ...)
nhị phân nhúng thay vì các mô-đun con (nhưng những gì về việc phát triển các thay đổi cho các mô-đun con? còn các phiên bản log4net khác nhau thì sao?)
Có ai biết giải pháp lành mạnh không?
Tôi đoán bạn đang ngụ ý để di chuyển từ bao gồm nguồn để DLL bao gồm với quản lý phụ thuộc hợp lý. Nếu có, nó có vẻ hấp dẫn, nhưng ngay bây giờ chúng tôi phát triển các thư viện được chia sẻ như một phần của các giải pháp kèm theo. Có vẻ là một cách khá nặng nề để giải quyết vấn đề. – plaugg
Nếu, như tôi đã hiểu, họ là các dự án VS riêng biệt, nó không nên đặt ra một vấn đề về tính khả thi, nhưng thực sự nó không phải là hack nhanh chóng mà bạn có thể tìm kiếm ... Nếu bạn lo lắng về gỡ lỗi thì nuget hỗ trợ liên kết với một máy chủ nguồn biểu tượng để duy trì trải nghiệm gỡ lỗi, nhưng nếu có rất nhiều thứ qua lại giữa chính và các dự án hỗ trợ, điều này có thể là một vấn đề. Tôi là một chút do dự w.r.t. thiếu sự tao nhã của các mô đun con git và tôi muốn đề xuất một giải pháp thay thế mà bạn không liệt kê (và hỗ trợ phiên bản!). – Dirk
Tôi hơi buồn vì tùy chọn này không có sẵn khi tôi vẫn làm việc với .NET. Visual Studio nổi tiếng là ngu ngốc khi nói đến phụ thuộc. Cách tiếp cận này có rất nhiều lợi thế. Nhưng điều quan trọng nhất đối với tôi là từ quan điểm của nhà phát triển, các dự án sẽ nhanh hơn để thiết lập, biên dịch và lập trình. Khi tôi kiểm tra một dự án mới, tôi chỉ lấy tất cả các thư viện cần thiết và tôi chỉ phải biên dịch các thư viện dự án để chạy nó. Không chỉ vậy nhưng đi là sự lộn xộn của những tiểu dự án mà làm cho các dự án dễ hiểu hơn nhiều. – SpoBo