Эти посты кажутся связанными, но мой мозг начинает таять, пытаясь обдумать это: P
Мой работодатель только начал использовать систему контроля версий, прежде всего потому, что до того, как они наняли больше разработчиков, «хранилище» было жестким диском одинокого разработчика, который работает в основном из дома. Весь написанный им код .NET был проверен в массовом порядке , и в нем много дублированных функций (читай: скопированный). Прямо сейчас наша система SCM является прославленной резервной копией.
Я хотел бы вытащить часть дублированного кода в общие библиотеки. Я оставляю исходное хранилище в покое, чтобы мы ничего не ломали - мы можем перемещать и / или реорганизовывать существующий код по мере необходимости. Поэтому я настроил репо только для нового кода, включая библиотеки.
Моя проблема связана с версионированием библиотек, не отражая нас в чрезмерном процессе: признав, что нам нужен более согласованный подход, когда все больше разработчиков пишут очень похожий код, менеджмент и другие разработчики открыты для реорганизации, но, вероятно, этого не произойдет. идти хорошо, если решение начинает влиять на производительность.
Идеальное решение в моем навязчивом уме - это создавать библиотеки отдельно, при этом каждый зависимый проект строится на основе специально выбранных, совместимых их версий. Таким образом, мы точно знаем, какие клиенты имеют, какие версии каких библиотек могут более надежно воспроизводить ошибки, поддерживать независимые ветки выпуска для продуктов и библиотек и не нарушать проекты друг друга при изменении общего кода.
Это делает обновление библиотек громоздким, особенно для разработчиков, которые работают из дома. Я ожидаю, что библиотеки быстро изменятся, по крайней мере, на начальном этапе, когда мы (наконец-то) соберем общие биты. Вполне возможно, что я полностью обдумываю это, и мы будем в порядке, просто построив все на основе последних библиотечных коммитов, но я хотел бы, по крайней мере, быть готовым к тому дню, когда мы решим, что некоторые компоненты должны быть независимыми версиями и распределены. Тот факт, что некоторые библиотеки должны быть установлены в GAC, делает управление версиями особенно важным.
Итак, мой вопрос: что мне не хватает? Мне кажется, что я сосредоточился на одном решении и сейчас пытаюсь найти варианты, которые сделают изменения более плавными. Какие стратегии вы использовали для решения этой проблемы раньше? Я понимаю, что этот вопрос повсюду; Я сделаю все возможное, чтобы очистить и прояснить любые моменты неопределенности.
И как бы мне ни хотелось использовать Mercurial, мы уже потратили деньги на централизованный коммерческий SCM (Vault), и переключение не вариант. Кроме того, я думаю, что проблема здесь гораздо глубже, чем выбор инструмента контроля версий.