2009-08-16 3 views
1

У меня есть набор программ, каждый со своей версией. Все эти программы зависят от библиотеки, опять же с ее собственной версией. НапримерВерсии программ в зависимости от библиотеки

Foo-1.0.3 
Bar-2.1.5 
Baz-1.3.4 

От них зависит libfrobniz-1.4.5. Бывает, что я должен провести капитальный ремонт библиотеки (включая много рефакторинга). Это означает, что он сломает все (Foo, Bar и Baz). Конечно, поскольку это серьезная и отсталая несовместимая доработка, библиотека будет наклонена до libfrobniz-2.0.0.

Мой вопрос относительно версии Foo Bar и Baz. Я обновлю их, чтобы использовать libfrobniz-2.0.0, но я не изменяю их функциональность. Новые версии этих трех программ могут использоваться точно так же, как и старые, и поэтому они полностью совместимы. Однако они будут зависеть от совершенно другой версии libfrobniz. Не могли бы вы предложить увеличить их версию, или просто уровень паттерна?

+0

Не оскорбление. сообщение, которое вы предлагаете, говорит о конкретном стиле управления версиями. Я прошу общие правила, с учетом моей конкретной проблемы. –

+0

@Stafano: хорошо, это может быть обманом, но не обманом того, что я написал. –

+0

Переработал вопрос по моей конкретной проблеме, которая сейчас меня волнует. –

ответ

1

Помните, что изменение значительного числа зависимостей является основным изменением для конечных пользователей. Это определенно не патч-уровень, и я бы сказал, палка с майором, если у вас нет очень веской причины.

+0

Это, конечно, было бы серьезным изменением для конечных пользователей, если бы зависимые библиотеки отображали типы из измененной библиотеки. Может быть, нет, если ничего не было открыто? –

+0

Нет, ничего из libfrobniz не предоставляется конечному пользователю. –

+0

действительно изменение сродни рефакторингу. Я меняю только внутренние элементы (внутренняя часть - это вся библиотека), но ни одна из конечных функциональных возможностей программного обеспечения не затрагивается и не изменяется каким-либо образом. –

1

Я бы сохранил номера версий Foo, Bar и Baz одинаково. Поскольку вы не вводите новые функции или исправления ошибок для этих продуктов, обращенных к пользователям, нет необходимости бить номера версий. Кроме того, если вы решите повредить номера версий, это может привести к путанице пользователя. Ваши пользователи могут задаться вопросом, почему ваши продукты имеют номер версии новой версии без каких-либо новых документированных функций или исправлений ошибок.

В ваших трех пользовательских приложениях у вас может быть панель/окно, в котором отмечается, что продукт полагается на libfrobniz и что он был обновлен.

+0

Если они разные банки, они действительно должны иметь разные номера версий, иначе, когда вы получите отчеты об ошибках, вы не узнаете, какой поток кода воспроизводит ошибку. – Tom

+0

, если вы отличались между номером версии, обращенной к пользователю, и номером версии из libfrobniz, тогда вы знаете, какой поток кода использовать для воспроизведения потенциальных ошибок. – zpesk

0

Ваша схема управления версиями зависит от ваших деловых и технических потребностей.

Некоторые компании выпускают «основные» обновления каждый год, чтобы привлечь внимание и некоторый доход для апгрейдов. Некоторые из них по-прежнему выпускают бета-версии, до тех пор, пока не будут удовлетворены качеством программного обеспечения.

Подготовьте свою схему и сообщите об этом своим клиентам. Обычно первая буква является номером главной версии для основных изменений, затем для улучшений, а затем для создания и исправлений.

0

Не будет ли это таким же, как создание 32-битной версии 64-битной библиотеки? 32bit зависит от 32-битных libs, в то время как 64 зависит от 64-битных библиотек.

Следуйте правила вы могли бы использовать что-то вроде этого

0

«Конечно, так как это является одним из основных и назад несовместимых переделок,»

Я помню время, когда клиенты имели право принести какие-либо из их поставщики программного обеспечения, близкие к банкротству, если у этого поставщика программного обеспечения было бы безупречно отказаться от обратной совместимости, отказавшись потратить деньги, пока не будет восстановлена ​​обратная совместимость.

Поставщики программного обеспечения всегда уступают.

Сегодня кажется, что они могут делать все, что захотят, и каждый клиент будет просто безмозглым следовать за ними, немного как люди самого низкого класса с «1984».

Но, возможно, я слишком пессимистичен.

EDIT

Кто-то указал на случай, когда есть только один клиент, MySelf. В этом случае я не ожидал, что возникнет необходимость в «управлении версиями». Такого клиента интересует только одна вещь: программное обеспечение работает, и его интересует ровно одна единственная версия: тот, который предположительно соответствует его последним спецификациям.

+0

вы знаете, есть случаи, когда у вас есть только один клиент. –

+1

В ответ на ваши изменения. На самом деле, нет. Мне нужно управлять версиями того, что я использую, потому что, если, скажем, три года, мне нужно снова перекомпоновку, я должен знать, какую версию программного обеспечения я использовал для создания этого результата. –

Смежные вопросы