Ці пости здаються спорідненими, але мій мозок починає танути, намагаючись продумати це через: P
Мій роботодавець тільки почав використовувати управління джерелами, насамперед тому, що перш ніж найняти більше розробників, "сховище" було жорстким диском самотнього розробника, який працює в основному з дому. Весь написаний ним код .NET був перевірений у масовій формі, і є багато дублюваних (читайте: вставлених) копій. Зараз наша система SCM - прославлена резервна копія.
Я хотів би перетягнути кілька дублюваних кодів у спільні бібліотеки. Я залишаю оригінальний репо в спокої, щоб ми нічого не порушували - ми можемо переміщувати та / або переробляти наявний код за потребою. Тому я створив репо просто для нового коду, включаючи бібліотеки.
Моя проблема обертається версією бібліотек, не вражаючи нас надмірним процесом: визнавши, що нам потрібен більш узгоджений підхід, з більшою кількістю розробників, які пишуть дуже схожий код, управління та інші розробники відкриті для реорганізації речей, але це, ймовірно, не буде піде вниз, якщо розчин почне впливати на продуктивність.
Ідеальним рішенням на моїй нав'язливій думці є побудова бібліотек окремо, причому кожен залежний проект будується на основі навмисно вибраних сумісних їх версій. Таким чином, ми точно знаємо, які клієнти мають, які версії бібліотек можуть надійніше відтворювати помилки, підтримувати незалежні гілки випуску продуктів і бібліотек, а також не порушувати проекти один одного при зміні спільного коду.
Це робить оновлення бібліотек громіздким, особливо для розробника, який працює вдома. Я очікую, що бібліотеки швидко зміняться, принаймні спочатку, оскільки ми (нарешті) спільні біти збираємо разом. Цілком можливо, що я повністю переосмислюю це, і нам було б добре просто будувати все на основі останніх бібліотечних комісій, але я хотів би принаймні бути готовим до того дня, коли ми вирішимо, що деякі компоненти повинні бути незалежно розроблені розподілений. Той факт, що деякі бібліотеки повинні бути встановлені в GAC, робить версію особливо важливою.
Отже, моє запитання: що я пропускаю? Я відчуваю, що я зосередився на одному рішенні і зараз намагаюся знайти його варіанти, які змінять зміни. Які стратегії ви раніше використовували для вирішення подібної проблеми? Я усвідомлюю, що це питання повсюдно; Я зроблю все можливе, щоб очистити та уточнити будь-які моменти невизначеності.
І як би я хотів використовувати Mercurial, ми вже витратили гроші на централізований комерційний SCM (Vault), і переключення не є можливим. Крім того, я думаю, що тут проблема йде глибше, ніж вибір інструмента контролю версій.