Những bài đăng này có vẻ liên quan, nhưng bộ não của tôi bắt đầu tan chảy, cố gắng nghĩ điều này thông qua: P
Chủ nhân của tôi mới bắt đầu sử dụng kiểm soát nguồn, chủ yếu vì trước khi họ thuê thêm nhà phát triển, "kho lưu trữ" là ổ cứng của nhà phát triển đơn độc, người làm việc chủ yếu ở nhà. Tất cả các mã .NET mà anh ấy đã viết đã được kiểm tra trong en masse và có rất nhiều chức năng trùng lặp (đọc: sao chép-dán). Ngay bây giờ, hệ thống SCM của chúng tôi được sao lưu vinh quang.
Tôi muốn kéo một số mã trùng lặp vào các thư viện dùng chung. Tôi đang để lại repo ban đầu một mình để chúng tôi không phá vỡ bất cứ thứ gì mà chúng tôi có thể di chuyển và / hoặc cấu trúc lại mã hiện có khi cần. Vì vậy, tôi đã thiết lập một repo chỉ cho mã mới, bao gồm các thư viện.
Vấn đề của tôi xoay quanh việc phiên bản các thư viện mà không làm chúng tôi ngạc nhiên trong quá trình: thừa nhận rằng chúng tôi cần một cách tiếp cận mạch lạc hơn, với nhiều nhà phát triển hơn viết mã rất giống nhau, quản lý và các nhà phát triển khác mở để sắp xếp lại mọi thứ, nhưng có lẽ sẽ không đi xuống tốt nếu giải pháp bắt đầu ảnh hưởng đến năng suất.
Giải pháp lý tưởng trong tâm trí ám ảnh của tôi là xây dựng các thư viện riêng biệt, với mỗi dự án phụ thuộc được xây dựng dựa trên các phiên bản tương thích được lựa chọn có chủ ý của chúng. Bằng cách đó, chúng tôi biết chính xác khách hàng nào có phiên bản thư viện nào, có thể tái tạo các lỗi một cách đáng tin cậy hơn, duy trì các nhánh phát hành độc lập cho các sản phẩm và thư viện và không phá vỡ các dự án của nhau khi thay đổi mã chia sẻ.
Điều này làm cho việc cập nhật các thư viện trở nên cồng kềnh, đặc biệt là đối với các nhà phát triển làm việc tại nhà. Tôi hy vọng các thư viện sẽ thay đổi nhanh chóng, ít nhất là ban đầu khi chúng tôi (cuối cùng) kéo các bit chung lại với nhau. Hoàn toàn có thể là tôi đã hoàn toàn đánh giá cao điều này và chúng tôi sẽ ổn khi xây dựng mọi thứ dựa trên các cam kết thư viện gần đây nhất, nhưng ít nhất tôi muốn chuẩn bị cho ngày chúng tôi quyết định rằng một số thành phần phải được phiên bản độc lập và phân phối. Việc một số thư viện sẽ phải được cài đặt trong GAC làm cho phiên bản trở nên đặc biệt quan trọng.
Vì vậy, câu hỏi của tôi là: tôi đang thiếu gì? Tôi cảm thấy như tôi đã sửa chữa một giải pháp và hiện đang cố gắng tìm các biến thể trên đó sẽ giúp thay đổi mượt mà hơn. Những loại chiến lược nào bạn đã sử dụng để giải quyết loại vấn đề này trước đây? Tôi nhận ra câu hỏi này ở khắp mọi nơi; Tôi sẽ làm hết sức mình để dọn dẹp và làm rõ bất kỳ điểm không chắc chắn nào.
Và cũng như tôi rất thích sử dụng Mercurial, chúng tôi đã chi tiền cho một SCM thương mại tập trung (Vault) và chuyển đổi không phải là một lựa chọn. Bên cạnh đó, tôi nghĩ vấn đề ở đây đi sâu hơn sự lựa chọn công cụ kiểm soát phiên bản.