Номер версии как часть имени файла

15

Я вижу, что для некоторых программ номер версии включен как часть имени файла, а для других - нет. Я более привык к последнему типу и думаю, что он более популярен, но иногда я вижу первый тип в библиотеках javascript. Например, имя файла jQuery похоже на jquery-2.1.0.jsвместо jquery.js. Всякий раз, когда я обновляю эти типы файлов, мне приходится искать места в других программах, которые загружают эти файлы, и изменять имя файла, к которому они относятся, и вручную удалять более старую версию этих библиотек. Это неудобно для меня, поэтому я предпочитаю переименовывать файл, чтобы исключить номер версии, и оставить имя файла без ссылки на номер версии.

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

  • Каковы плюсы и минусы для включения номеров версий в имя файла?
  • Существует ли фактический консенсус относительно того, какие области программного обеспечения или языков используют номер версии в имени файла, а какие области / языки - нет? Если да, есть ли для этого обоснование?
Савва
источник
3
самое большое преимущество в том, что вы можете гарантировать, что критические изменения не произойдут до того, как вы будете к ним готовы
трещотка урод
@ratchetfreak Вы не обновляетесь, когда вы не готовы. Вы?
Sawa
2
@sawa Предположим, что jQuery.com/jquery.js - это URL последней версии, и это то, на что ссылается ваш код. Что произойдет, если jQuery опубликует радикальное обновление? Конечно, вы бы ссылались на свою собственную локальную копию, но я думаю, что это означает то, что означает уродец
11684
@ 11684 Понятно.
Sawa
1
Я хотел бы отметить, что в примере с jquery версии, размещенные на CDN в Google и cdnjs.com, помещают версию в дерево каталогов, а не в имя файла. (У CDN jquery от jquery.com и Microsoft есть версия в имени файла.)
Брайан С

Ответы:

24
  1. Имеет смысл указать нужную вам версию. Поведение, на которое вы можете положиться, могло измениться, поэтому новее не всегда лучше. Сначала проверьте, работает ли у вас новая версия библиотеки. Затем обновите явно.

  2. В случае веб-ресурсов наличие версии должно быть частью имени файла важно в контексте кэширования . Для таких статических ресурсов, как jquery.jsвы, вам понадобится очень долгое время кеширования, прежде чем он будет восстановлен. Однако во время обновления вы хотите, чтобы ваш код немедленно использовал новую версию , а не заставлял клиентов переключаться на новую версию в течение следующего дня или около того. Как foo-1.2.3.jsи другой ресурс foo-1.2.4.js, никакие кэши не будут мешать.

Амон
источник
1
+1, хотя я думаю, что этот ответ немного односторонний. Действительно, существуют ситуации, когда «без номера версии» может быть лучшим выбором. Смотрите мой ответ ниже.
Док Браун
3

(За исключением ситуации с веб-кэшированием, упомянутой @amon): я предполагаю, что вы делаете локальную копию сторонней библиотеки для использования вашей программой, в противном случае необходимость в номере версии была бы очевидна. Сценарий использования такой сторонней библиотеки в разрабатываемой вами системе программного обеспечения может быть одним из следующих:

  • все части вашей программы, использующие библиотеку, должны всегда использовать одну и ту же версию библиотеки (в идеале «самую новую»), и вы будете время от времени обновлять библиотеку. Тогда сохранение номера версии как части имени файла может быть очень утомительным, и я бы порекомендовал убрать номер из вашей локальной копии файла, если это возможно. Обратите внимание, что это хорошая идея, только если вы уверены, что сторонний поставщик сохраняет библиотеку в большей степени обратно совместимой с более ранними версиями.

  • вы ожидаете, что некоторые части вашей программы будут нуждаться в версии A, а другие - в версии B. Тогда вам, очевидно, понадобится номер версии для сторонней библиотеки lib. Обратите внимание, что эта ситуация также может возникать, когда вы не можете легко протестировать все свои части программного обеспечения, используя lib сразу после введения новой версии.

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

Док Браун
источник
Да. Вы правы. Я упоминал первый из ваших двух случаев.
Sawa
1
@sawa: обратите внимание, что ваш пример был jquery, для которого справедлив аргумент веб-кэширования amon. Причиной моего ответа было объяснение различных ситуаций, когда «номер версии» не может быть лучшим выбором.
Док Браун,