Контроль версий и контроль версий?
Какое правильное имя для системы, которая хранит версии исходного кода, такие как SVN или TFS?
Я всегда называл это контролем исходного кода, но такие места, как Википедия, называют это контролем версий?
Чтобы сделать такие более сложные сайты, как этот, есть тег для обоих?
12 ответов
Revision Control - более общий термин, используемый для инструментов контроля версий, но также и для других инструментов (Word, OpenOffice, ...). Это ссылается на версию.
Source Control предлагает контроль версий с ветвлением и объединением, которые не всегда доступны во всех инструментах редакций (Word не является Source Control, но предлагает функции контроля версий)
Контроль версий является более общим термином, чем контроль версий, в том смысле, что он управляет версией чего-либо (источников или двоичных файлов или любых видов документов)
Примечание. SCM означает "управление исходным кодом", а также "управление программным кодом", чтобы отразить ту же идею (не только "источники" управляются).
Плюс SCM вводит понятие зависимостей между группами файлов.
И это также может включать в себя понятие жизненного цикла изменений (начать изменение, закрыть изменение,...), что приводит к системе запроса на изменение.
Есть три синонима, описывающие почти одно и то же:
- Ревизионный контроль. Имеет дело с ревизиями (обзоры документов / артефактов и последующие версии документа / артефактов) или номерами (как абстракция концепции ревизий).
- Исходный контроль. Работает с текстовыми (исходными) файлами, а не с двоичными. Это различие играет большую роль, поскольку намного проще выполнять сравнение и получать разницу между текстовыми файлами. Существует целый ряд основных инструментов, связанных с контролем версий:
diff
,diff3
,patch
и т. д. Этот набор инструментов можно расширить, чтобы сформировать решение для контроля версий. Примером такого решения является RCS. - Управление исходным кодом. Имеет дело с более сложными операциями над исходным кодом: хранение его в
repository
с возможностью создания отдельногоbranches
, Также предполагается, что ветви могут бытьmerged
, Другая часть управления исходным кодомtagging
, Одна проблема с управлением исходным кодом состоит в том, что оно имеет аббревиатуру SCM. Эта аббревиатура используется для описания более широкого набора действий - Управление конфигурацией программного обеспечения. Существует много путаницы, потому что управление исходным кодом является подмножеством управления конфигурацией программного обеспечения, которое также занимается такими операциями, как управление сборкой, управление развертыванием, непрерывная интеграция, управление зависимостями, управление выпусками и т. Д. - Контроль версий. Он используется в качестве замены для такого термина, как управление исходным кодом, чтобы избежать двусмысленности. Он включает в себя как концепции контроля версий, так и контроля версий, что позволяет описывать практически одну и ту же концепцию. В настоящее время оба термина контроля версий и контроля версий заменены на контроль версий как более подходящий с учетом широкого спектра инструментов (CVS, SVN, Git, Mercurial, ClearCase, Perforce, VSS и т. Д.), Которые решают обе задачи контроля версий и контроль источника одновременно.
Картина, чтобы проиллюстрировать более четко различие между всеми этими понятиями:
Мне нравится думать об этом так:
Контроль версий - это то, что они делают.
Для этого я использую Source Control .
:-)
- Система контроля версий (VCS) является наиболее часто используемым термином
- Управление исходным кодом (SCM) используется в git, но это своего рода изобретение и его можно спутать с управлением конфигурацией программного обеспечения, которое уже используется в индустрии программного обеспечения, и это не то же самое.
Используемая терминология не очень точна. Есть статья, описывающая пять соответствующих измерений. Инструменты управления данными для разработки программного обеспечения обычно не поддерживают одновременно более трех из них. Если вы хотите поддержать все пять, вы должны описать процесс разработки:
- Версия (семантика: модификация)
- Представление (семантика: эквивалентность, деривация)
- Иерархия (семантика: состоит из)
- Статус (семантика: утверждение, доступность)
- Вариант (семантика: варианты продукта)
Peter van den Hamer и Kees Lepoeter (1996) Управление данными проектирования: пять измерений платформ САПР, управление конфигурацией и управление данными о продуктах, Материалы IEEE, вып. 84, № 1, январь 1996 г.
Некоторые системы (например, SVN) имеют термин revision, который обозначает число, связанное с определенным набором версий всех файлов в хранилище. В таких системах ревизия (ревизия SVN) по существу означает версию (исходную версию). В противном случае контроль версий и контроль версий являются одними и теми же терминами.
Там нет "правильного" имени, четыре общих имени:
- Система контроля версий
- Ревизионная система контроля
- Система контроля источника
- Система управления исходным кодом
Другое имя: контроль версий
Основываясь на тегах, используемых на этом сайте, "контроль версий" является наиболее популярным (что вполне нормально, поскольку этот сайт посвящен программированию):
- контроль источника (633 метки)
- контроль версий (587)
- ревизионное управление (31)
MIL-STD 973 Описывает управление конфигурацией.
Управление конфигурацией программного обеспечения выполняется точно так же.
Смотрите CMMI для хорошего объяснения SCM/CM.
Системы, о которых вы говорите, являются системами контроля версий. Они версии вещей.
Старая SCCS была системой контроля исходного кода.
Системы контроля исходного кода поддерживают историю изменений.
Скажем, вы изменили файл из ревизии
1, 1, 1,2, 1,3.
В версии 1.3 мы выпускаем "Удивительное издание" нашего продукта.
1.3 - это ревизия Awesome Edition - это версия.
В таких системах, как CVS, изменения происходят как изменения нумерации, а теги обозначают версии. Нумерация версий репозитория SVN вводит в заблуждение государственных заказчиков, которые ожидают поведения MIL-STD.
Самое замечательное в стандартах в управлении изменениями заключается в том, что есть из чего выбирать.
Итак, что именно вы сейчас ищете?
Я не думаю, что есть один правильный термин. Оба термина, а также некоторые другие, уже упомянутые в других ответах, используются в основном для одного и того же.
Люди, с которыми вы разговариваете, будут связывать его с немного другим значением, даже если используют для него одно и то же слово - и они могут означать действительно одно и то же, даже когда используют другое слово.
С другой стороны, словарь, используемый вокруг этих вещей, также может быть разным (или привязанным к разным значениям) в кругах вокруг различных программных реализаций этой концепции.
При написании этого, мне приходит в голову, что это очень естественный феномен - в других областях у вас также есть несколько слов, обозначающих в основном одно и то же значение, - хотя некоторые утверждают, что на самом деле есть небольшие различия, другие говорят, что эти различия не действительно существуют или не стоит думать. И никогда не гарантируется, что когда два человека используют одно и то же слово, они действительно имеют в виду одно и то же.
Если исторический приоритет важен, то термин должен быть "Контроль исходного кода" - см. http://en.wikipedia.org/wiki/Source_Code_Control_System
Я добавил комментарий, но я думаю, что он также может претендовать на ответ. У меня немного другое мнение, чем у других уже высказанных комментариев.
В общем случае SCM (управление конфигурацией программного обеспечения) или (управление исходным кодом - производный термин) легко понять, так как он используется в качестве общего термина, который включает в себя как контроль версий, так и другие методы, такие как базовое управление. Смотрите http://en.wikipedia.org/wiki/Software_configuration_management. В целом современные инструменты SCM, которые варьируются от CVS до Git, включают в себя оба эти метода и многие другие полезные функции, такие как: управление разрешениями, управление правами, аудит безопасности, позволяют настраивать поток SCM (ClearCase), интегрировать с системой сборки и отслеживать проблемы. программное обеспечение и т. д. Я думаю, что список открыт, потому что все, что связано с изменениями программного обеспечения и управления может войти сюда.
Таким образом, основная путаница заключается в понимании различий между Revision Control, Version Control и, возможно, Source Control. Прежде всего, все термины, которые включают в себя "исходный код", являются производными терминами. Я имею в виду, что некоторые люди обеспокоены всеми этими общими терминами (управление конфигурацией - что это?) И настаивают на том, что они работают с исходным кодом, в частности, и они не не заботиться о других случаях использования; что справедливо.
Что касается контроля версий по сравнению с контролем версий, я думаю, что правильный термин (в контексте таких инструментов, как SVN, Git) - это контроль версий. На мой взгляд, с термином Revision Control основной упор делается на управление изменением (помимо управления версиями) (не только) файлов исходного кода, в то время как с контролем версий упор делается на управление только версиями файлов.
Теоретически, кто-то может написать программный продукт, который позволяет отслеживать и управлять двоичными файлами без поддержки двоичных различий и слияния, и называть эту систему контроля версий. Однако в случае таких инструментов, как SVN, Git, они дополнительно позволяют управлять изменениями в файлах: изменение, слияние и, в случае Git, известный перебазирование.
Итак, в заключение, Revision Control включает в себя контроль версий и больше подходит для таких инструментов именования, как CVS, SVN, Git; в то время как Контроль источника является производным термином, и его следует избегать, если вы хотите назвать конкретный аспект SCM.
SCM > Revision Control > Version Control